❌

Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

κΉƒν—ˆλΈŒ, NPM β€˜ν΄λž˜μ‹ 토큰’ μ „λ©΄ νκΈ°Β·Β·Β·μ†Œν”„νŠΈμ›¨μ–΄ 곡급망 λ³΄μ•ˆ κ°•ν™” λ‚˜μ„œ

12 December 2025 at 03:19

κΉƒν—ˆλΈŒκ°€ 이번 μ£Ό μžμ‚¬ npm(Node Package Manager) λ ˆμ§€μŠ€νŠΈλ¦¬μ˜ λ³΄μ•ˆ 체계λ₯Ό λŒ€ν­ κ°•ν™”ν•˜λŠ” λ§ˆμ§€λ§‰ 단계λ₯Ό μ μš©ν–ˆλ‹€. Node.js μƒνƒœκ³„μ—μ„œ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” npm λ ˆμ§€μŠ€νŠΈλ¦¬λ₯Ό λŒ€μƒμœΌλ‘œ, μ¦κ°€ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 곡급망 곡격 μœ„ν˜‘μ— 보닀 κ°•ν•˜κ²Œ λŒ€μ‘ν•˜κ² λ‹€λŠ” μ·¨μ§€λ‹€.

μ•žμ„œ 두 달 μ „ μ˜ˆκ³ ν•œ λŒ€λ‘œ, 12μ›” 9일을 기점으둜 npm은 만료 κΈ°ν•œ 없이 μ‚¬μš©λ˜λ˜ β€˜ν΄λž˜μ‹(classic) 토큰’ λ˜λŠ” β€˜μž₯κΈ° 토큰(long-lived tokens)’을 μ „λ©΄ νκΈ°ν–ˆλ‹€. 이 토큰은 κ·Έλ™μ•ˆ κ°œλ°œμžκ°€ νŒ¨ν‚€μ§€λ₯Ό 인증할 λ•Œ λ³„λ„μ˜ 만료일 없이 μ‚¬μš©ν•  수 μžˆμ—ˆμ§€λ§Œ, μ•žμœΌλ‘œλŠ” 더 이상 ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€.

이에 따라 κ°œλ°œμžλŠ” 두 κ°€μ§€ 방식 쀑 ν•˜λ‚˜λ‘œ μ „ν™˜ν•΄μ•Ό ν•œλ‹€. ν•˜λ‚˜λŠ” 수λͺ…이 μ§§κ³  κΆŒν•œ λ²”μœ„κ°€ μ œν•œλœ β€˜μ„ΈλΆ„ν™” μ ‘κ·Ό 토큰(GAT, Granular Access Tokens)’을 μ‚¬μš©ν•˜λŠ” 방식이며, λ‹€λ₯Έ ν•˜λ‚˜λŠ” OpenID Connect(OIDC)와 OAuth 2.0을 기반으둜 ν•œ μ™„μ „νžˆ μƒˆλ‘œμš΄ μžλ™ν™” CI/CD 퍼블리싱 νŒŒμ΄ν”„λΌμΈμœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 방식이닀.

이번 μ‘°μΉ˜λŠ” 졜근 κΈ‰μ¦ν•œ 곡급망 곡격에 λŒ€ν•œ 직접적인 λŒ€μ‘μ΄λ‹€. 특히 9μ›” λ°œμƒν•œ β€˜Shai-Hulud μ›œβ€™ μ‚¬κ±΄μ—μ„œλŠ” κ³΅κ²©μžκ°€ 개발자 계정과 토큰을 νƒˆμ·¨ν•œ λ’€ 수백 개의 νŒ¨ν‚€μ§€μ— 백도어λ₯Ό μ‹¬λŠ” 데 성곡해 업계에 큰 좩격을 쀬닀.

κΉƒν—ˆλΈŒμ˜ λ³΄μ•ˆ 연ꡬ 디렉터인 μžλΉ„μ— λ₯΄λ„€-μ½”λΌμ΄μœ λŠ” λ‹Ήμ‹œ β€œμ΄λŸ¬ν•œ μΉ¨ν•΄ μ‚¬κ³ λŠ” μ˜€ν”ˆμ†ŒμŠ€ μƒνƒœκ³„μ— λŒ€ν•œ μ‹ λ’°λ₯Ό μ•½ν™”μ‹œν‚€κ³ , 전체 μ†Œν”„νŠΈμ›¨μ–΄ κ³΅κΈ‰λ§μ˜ 무결성과 λ³΄μ•ˆμ— 직접적인 μœ„ν˜‘μ΄ λœλ‹€β€λΌλ©° β€œμΈμ¦κ³Ό μ•ˆμ „ν•œ 퍼블리싱 κ΄€ν–‰μ˜ 기쀀을 λ†’μ΄λŠ” 것이 npm μƒνƒœκ³„λ₯Ό 미래의 κ³΅κ²©μœΌλ‘œλΆ€ν„° λ³΄ν˜Έν•˜λŠ” 데 ν•„μˆ˜μ β€μ΄λΌκ³  μ„€λͺ…ν–ˆλ‹€.

개발자 λΆ€λ‹΄κ³Ό μ‹€μ§ˆμ  영ν–₯

이번 λ³€κ²½μœΌλ‘œ κ°œλ°œμžκ°€ μ²΄κ°ν•˜λŠ” 영ν–₯은 적지 μ•Šλ‹€. 이번 μ£ΌλΆ€ν„° ν΄λž˜μ‹ ν† ν°μœΌλ‘œ 인증된 νŒ¨ν‚€μ§€μ— λŒ€ν•΄ npm publishλ‚˜ npm install을 μ‹€ν–‰ν•˜λ©΄ β€˜401 Unauthorized’ 였λ₯˜κ°€ λ°œμƒν•œλ‹€. 만료 κΈ°ν•œμ΄ μ—†λŠ” μƒˆλ‘œμš΄ ν΄λž˜μ‹ 토큰은 더 이상 생성할 수 μ—†λ‹€.

λ‹€λ§Œ, 만료일이 μ„€μ •λœ μ„ΈλΆ„ν™” 토큰은 2026λ…„ 2μ›” 3μΌκΉŒμ§€ 계속 μ‚¬μš©ν•  수 μžˆλ‹€. μ΄ν›„μ—λŠ” ν† ν°μ˜ μ΅œλŒ€ 수λͺ…이 90일둜 μ œν•œλ˜λ©°, 주기적으둜 토큰 λ‘œν…Œμ΄μ…˜μ„ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€.

μΆ”κ°€ μ—…λ¬΄μ˜ 규λͺ¨λŠ” 쑰직의 크기와 관리 쀑인 νŒ¨ν‚€μ§€ μˆ˜μ— 따라 달라진닀. λŒ€κ·œλͺ¨ 쑰직의 경우, 이미 λŒ€λΉ„κ°€ λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄ μ—¬λŸ¬ νŒ€μ— 걸쳐 수백 개 νŒ¨ν‚€μ§€λ₯Ό 점검해야 ν•  수 μžˆλ‹€. 이 κ³Όμ •μ—μ„œ κΈ°μ‘΄ ν΄λž˜μ‹ 토큰을 λͺ¨λ‘ νκΈ°ν•˜κ³ , μ„ΈλΆ„ν™” 토큰을 주기적으둜 κ΅μ²΄ν•˜λŠ” 절차λ₯Ό μƒˆλ‘œ λ§ˆλ ¨ν•΄μ•Ό ν•œλ‹€.

β€œμ•„μ§ μΆ©λΆ„ν•˜μ§€ μ•Šλ‹€β€λŠ” 지적도

κ·ΈλŸ¬λ‚˜ 이번 개편이 λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œ μΆ©λΆ„ν•œ μ‘°μΉ˜μΈμ§€μ— λŒ€ν•΄μ„œλŠ” 회의적인 μ‹œκ°λ„ μžˆλ‹€. μ§€λ‚œλ‹¬, μ˜€ν”ˆJS μž¬λ‹¨(OpenJS Foundation)은 κΉƒν—ˆλΈŒκ°€ μž₯기적으둜 λ„μž…ν•˜λ €λŠ” ν† ν°λ¦¬μŠ€(tokenless) OIDC λ³΄μ•ˆ λͺ¨λΈμ˜ μ„±μˆ™λ„κ°€ 아직 λΆ€μ‘±ν•˜λ‹€κ³  μ§€μ ν–ˆλ‹€.

μž¬λ‹¨μ€ κ³΅κ²©μžκ°€ νŒ¨ν‚€μ§€λ₯Ό μΉ¨ν•΄ν•˜λŠ” κ³Όμ •μ—μ„œ 개발자 계정 νƒˆμ·¨κ°€ λΉˆλ²ˆν•˜κ²Œ λ°œμƒν•˜λŠ” 만큼, 계정 μžμ²΄μ— λŒ€ν•œ λ‹€μ€‘μš”μ†ŒμΈμ¦(MFA) 강화에 더 큰 비쀑을 둬야 ν•œλ‹€κ³  μ–ΈκΈ‰ν–ˆλ‹€. ν˜„μž¬ npm은 μ†Œκ·œλͺ¨ 개발자 계정에 MFAλ₯Ό μ˜λ¬΄ν™”ν•˜μ§€ μ•Šκ³  있으며, OIDC μ—­μ‹œ νŒ¨ν‚€μ§€ 퍼블리싱 κ³Όμ •μ—μ„œ 좔가적인 MFA 단계λ₯Ό μš”κ΅¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 특히 μžλ™ν™” μ›Œν¬ν”Œλ‘œ ν™˜κ²½μ—μ„œλŠ” MFAλ₯Ό μ μš©ν•  방법 μžμ²΄κ°€ μ—†λŠ” 상황이닀.

여기에 더해, 일뢀 MFA 방식은 μ€‘κ°„μž 곡격(man-in-the-middle)에 μ·¨μ•½ν•  수 μžˆλ‹€λŠ” 점도 문제둜 μ§€μ λœλ‹€. 이 λ•Œλ¬Έμ— 인증 μˆ˜λ‹¨μ€ μ΄λŸ¬ν•œ 곡격 기법에 μ €ν•­ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” μš”κ΅¬κ°€ λ‚˜μ˜¨λ‹€.

곡급망 λ³΄μ•ˆ κΈ°μ—… μ†Œλ‚˜νƒ€μž…(Sonatype)의 μ§€μ—­ 뢀사μž₯인 미툰 μžλ² λ¦¬λŠ” β€œκ³΅κ²©μžλŠ” μžμ›μ΄ λΆ€μ‘±ν•˜μ§€λ§Œ 널리 μ‚¬μš©λ˜λŠ” ν”„λ‘œμ νŠΈμ˜ μœ μ§€κ΄€λ¦¬μžλ₯Ό λ…Έλ¦¬λŠ” λšœλ ·ν•œ νŒ¨ν„΄μ„ 보이고 μžˆλ‹€β€κ³  λΆ„μ„ν–ˆλ‹€. κ·ΈλŠ” β€œμ΅œκ·Ό Chalk, Debug 같은 npm νŒ¨ν‚€μ§€ μΉ¨ν•΄ μ‚¬λ‘€λŠ” XZ Utilities 백도어 사건과 μœ μ‚¬ν•˜λ‹€β€λ©° β€œκ³΅κ²©μžλŠ” 였랜 μ‹œκ°„ μ‹ λ’°λ₯Ό μŒ“μ€ λ’€ ν†΅μ œκΆŒμ„ ν™•λ³΄ν–ˆκ³ , μ΄λŠ” μ‚¬νšŒκ³΅ν•™μ΄ 이제 곡급망 곡격의 핡심 단계가 λλ‹€λŠ” 점을 보여쀀닀”고 μ„€λͺ…ν–ˆλ‹€.

μžλ² λ¦¬λŠ” npmκ³Ό 같은 μ˜€ν”ˆμ†ŒμŠ€ νŒ¨ν‚€μ§€ 관리 λ ˆμ§€μŠ€νŠΈλ¦¬λ₯Ό μ€‘μš” μΈν”„λΌλ‘œ μΈμ‹ν•˜κ³  그에 κ±Έλ§žμ€ μžμ› νˆ¬μžκ°€ ν•„μš”ν•˜λ‹€κ³  μ§€μ ν–ˆλ‹€. μ•„μšΈλŸ¬ 쑰직은 μΉ¨ν•΄ κ°€λŠ₯성을 μ „μ œλ‘œ, μ •ν™•ν•œ μ†Œν”„νŠΈμ›¨μ–΄ 자재 λͺ…μ„Έμ„œ(SBOM)λ₯Ό μœ μ§€ν•˜κ³ , μ˜μ‹¬μŠ€λŸ¬μš΄ μ˜μ‘΄μ„± 변경을 λͺ¨λ‹ˆν„°λ§ν•˜λ©°, λΉŒλ“œ ν™˜κ²½μ„ μƒŒλ“œλ°•μ‹±ν•˜λŠ” λ°©μ‹μœΌλ‘œ λŒ€μ‘ν•΄μ•Ό ν•œλ‹€κ³  μ œμ–Έν–ˆλ‹€.
dl-ciokorea@foundryco.com

❌
❌