핵심 요약
- GitHub이 2026년 7월 9일 npm 12를 출시하며 allowScripts 기본값을 off로 전환, 설치 스크립트 실행이 opt-in 방식으로 변경됨.
- Granular Access Tokens(세분화된 액세스 토큰, 이하 GATs) 및 2FA(다중 인증) 우회 옵션이 deprecation(지원 종료 예정) 처리됨.
- 같은 날 Injective Labs SDK 저장소 침해로 니모닉 시드 유출 사건이 발생했고, Datadog Security Labs는 ghost account 기반 GitHub 정찰 활동을 보고함.
패키징 인프라는 ‘배포 시점 신뢰’에 머물 수 없으며, 실행 시점의 secure by default로 무게중심을 옮겨야 한다는 시그널이 정책과 침해 사례에서 동시에 확인됨.
2026년 7월 9일, GitHub이 npm 12를 공식 출시하면서 allowScripts 기본값을 of(절단된 발췌 원문 그대로 유지)f로 전환했다는 소식이 공개되었습니다. 같은 날, BleepingComputer는 Injective Labs SDK 저장소가 침해되어 npm에 악성 패키지가 게시된 사건을 보도했습니다. 이 두 사건은 패키지 설치 한 줄이 곧 침해 통로가 될 수 있는 시대에, 플랫폼 사업자가 보안 기본값을 어디까지 강화할 수 있는지를 동시에 시험하고 있습니다.
서론: 패키지 설치 한 줄이 침해 통로가 되는 시대
왜 지금 npm의 기본값이 논의되는가
오픈소스 패키지 매니저는 개발자 생산성의 핵심이지만, 동시에 신뢰의 사각지대를 만들어 왔습니다. 전통적으로 npm install 한 줄은 의존성 트리뿐 아니라 post-install, preinstall 같은 라이프사이클 스크립트까지 자동 실행해 왔습니다. 이 동작은 빌드 자동화와 네이티브 모듈 컴파일에 유용했지만, 악성 스크립트가 합법 패키지 안에 숨어 들어올 경우 사용자 시스템이 침해되는 직접 경로가 됩니다. The Hacker News는 npm 12 출시를 통해 이 기본 동작을 opt-in, 즉 명시적 동의 후에만 실행되는 모델로 전환했다고 전했습니다(출처 1).
기사에서 다룰 핵심 쟁점
본 분석은 정책 변화, 단기 침해 사건, 장기 정찰 보고의 세 축을 같은 격자 위에 올립니다. 첫째, npm 12의 allowScripts off 전환이 개발자 워크플로우에 미치는 실질적 효과입니다. 둘째, GATs 정리와 2FA 우회 차단이 토큰 생태계에 주는 경계 강화 신호입니다. 셋째, Injective Labs SDK 침해와 Datadog의 GitHub 정찰 보고가 보여주는 공격자 사이드 시그니처입니다.
npm 12의 핵심 변화: allowScripts 기본값 OFF
설치 스크립트 opt-in이 가져오는 보안 효과
allowScripts 기본값이 off로 전환되면, 새로운 프로젝트는 라이프사이클 스크립트를 허용 목록(allowlist)에 등록하지 않는 한 어떤 스크립트도 자동 실행되지 않습니다. 공격자가 정상 패키지의 postinstall 훅에 백도어를 심는 전통적 기법은 첫 실행 라인에서 차단됩니다. The Hacker News는 이 변경이 패키징 생태계의 신뢰 경계를 ‘배포 시점’에서 ‘실행 시점’으로 이동시키는 조치라고 평가했습니다. 즉, 패키지가 매니페스트에 선언한 의존성과 실제 시스템에 가하는 부수 작용을 분리해, 무결성 검사를 한 단계 더 늦출 수 있게 된 셈입니다.
개발자 워크플로우에서 예상되는 충돌과 완화
기존에 postinstall 훅에 의존하던 네이티브 빌드, 자산 다운로드, 자동 코드 생성 도구는 기본값 변경 직후부터 실패를 겪을 가능성이 있습니다. 완화 경로로 (1) 패키지별 명시적 allowlist 등록, (2) 빌드 단계를 install 이후 별도 스크립트로 분리, (3) CI(지속적 통합) 환경에서만 라이프사이클 실행 허용 같은 패턴이 거론됩니다. 본문에서 특정 도구 상용 추천을 피하더라도, 정책적 결론은 분명합니다. 안전한 기본값이 표준이 되면, 예외는 명시적으로 선언되어야 합니다.
Granular Access Tokens 정책 정리와 2FA 우회 차단
광범위 토큰 옵션 deprecation의 의미
npm 12와 함께 GATs 및 일부 2FA 우회 옵션이 deprecation 처리되었습니다. GATs는 특정 패키지나 스코프에 한정해 발급 가능한 세분화된 토큰으로, 유출 시 피해 반경을 최소화하기 위해 설계된 방식입니다. 반대편에 있는 광범위 영구 토큰은 한 번 탈취되면 조직 전체 저장소와 패키지 게시 권한을 통째로 넘겨줄 수 있습니다. The Hacker News는 이 토큰 옵션 정리가 2FA 우회 시나리오 차단과 직접 연결된다고 분석했습니다.
2FA 우회 시나리오를 차단하기 위한 토큰 설계
공격자는 종종 2FA가 적용된 계정 자체보다, 2FA 범위를 우회하는 장기 토큰이나 OAuth(권한 위임) 토큰을 노립니다. 세분화되지 않은 토큰이 한 번에 광범위 권한을 행사하면, 2FA는 로그인 순간만 보호하고 그 이후의 자동화된 행위까지는 막지 못합니다. 권한을 스코프 단위로 잘게 쪼개고 만료를 짧게 두는 방향은, 토큰 유출 시 노출되는 능력 자체를 제한하는 효과적인 방어선으로 해석됩니다.
침해 사례 ①: Injective Labs SDK를 통한 지갑 탈취
공식 패키지로 위장한 니모닉 시드 유출 코드
2026년 7월 9일, BleepingComputer는 Injective Labs SDK의 GitHub 저장소가 침해되어 npm에 악성 패키지가 게시된 사건을 보도했습니다. 공격자는 정상 SDK의 명의를 사칭해 암호화폐 지갑의 개인키와 니모닉 시드 구문(12~24개 단어로 구성된 지갑 복구 문구)을 외부 서버로 유출하는 코드를 포함시킨 것으로 알려졌습니다. 피해자 입장에선 정상 인스톨이 곧 키 자산 손실로 직결되는, 가장 심각한 형태의 공급망 침해입니다(출처 2).
유출된 npm/GitHub 토큰이 만들어낸 연쇄 피해
SDK 침해는 단일 패키지 게시에 그치지 않습니다. GitHub 저장소 접근권, npm 게시 토큰, CI 시크릿이 함께 노출되면 같은 조직의 다른 패키지와 저장소로 횡적 이동(lateral movement)이 시도됩니다. 본 사건의 정확한 토큰 유출 경로와 피해 패키지 범위는 별도 후속 보도가 필요하지만, 구조적으로는 광범위 영구 토큰이 한 번에 다수 권한을 행사하는 모형입니다. 이 지점이 npm 12의 토큰 정리 움직임과 교차합니다.
침해 사례 ②: Datadog Security Labs의 GitHub 정찰 보고
API enumeration과 ghost account 기반 정찰 기법
The Hacker News는 Datadog Security Labs의 보고를 인용해, 공격자가 수 년간 잠자던 ‘ghost’ GitHub 계정, 자동 스크레이핑 도구, 정상처럼 들리는 user agent, 침해된 OAuth 토큰을 활용해 기업용 GitHub 조직·저장소·사용자 계정을 대규모로 enumeration(열거)하고 있다고 전했습니다. enumeration은 표적 목록 작성 단계의 기술어로, 공개 API를 반복 호출해 조직명, 저장소명, 구성원 식별자를 수집하는 행위입니다. ghost account는 평소엔 비활성, 침해 순간에만 활성화되는 자산으로, 평판 기반 탐지를 우회하기 좋은 이동수단입니다.
OAuth 토큰 남용과 장기 접근권 획득 패턴
침해된 OAuth 토큰은 사용자의 동의를 가장한 권한 위임이므로, 2FA가 걸린 계정에서도 사용자 권한을 그대로 행사할 수 있습니다. 공격자는 이렇게 획득한 토큰을 enumeration 도구와 결합해, 표적 조직의 비공개 저장소 존재 여부, collaborator 구성, 브랜치 보호 정책 강도를 파악합니다. 정찰 단계의 정밀함이 높아질수록 이후 침해 단계의 성공률도 함께 올라가는 구조입니다.
공격 흐름과 플랫폼 대응의 교차 검증
정찰→침해→탈취 타임라인을 같은 격자에 올리면
2026년 7월 9일이라는 같은 날짜에 세 가지 시그널이 등장합니다. 오전 시간대 npm 12의 secure by default 전환, 오후 시간대 Injective Labs SDK 침해와 니모닉 시드 유출, 같은 날 저녁 Datadog의 GitHub 정찰 보고 공개입니다. 위협 행위자의 사이드에서는 enumeration과 OAuth 토큰 남용, 정상 SDK로 위장한 게시가 한 흐름으로 연결되고, 플랫폼 사이드에서는 기본값 off, 토큰 deprecation, 권한 경계 축소가 동시에 발표됩니다. 두 흐름이 같은 시간 격자에서 교차한다는 점이 이번 사건의 가장 큰 교훈입니다.
| 구분 | 주체 | 시점 | 핵심 조치/행위 |
|---|---|---|---|
| 플랫폼 정책 | GitHub / npm | 2026-07-09 | allowScripts 기본값 OFF, GATs deprecation |
| 단기 침해 | Injective Labs SDK | 2026-07-09 | 공식 SDK 위장 악성 패키지, 니모닉 시드 유출 |
| 장기 정찰 | Datadog Security Labs 보고 | 2026-07-09 | ghost account, OAuth 토큰 남용, API enumeration |
secure by default가 공급망 회복 탄력성을 키우는 방식
allowScripts 기본값 off는 침해 발생 시 피해 확률을 낮추는 방어 기제입니다. GATs 중심의 토큰 정리는 침해가 발생하더라도 권한 폭발 반경을 제한하는 기제입니다. enumeration을 조기에 탐지하는 것은 침해가 발생하기 전 단계에서 공격자 비용을 높이는 기제입니다. 이 세 가지가 결합될 때, 오픈소스 패키징 인프라는 단일 실패 지점이 아니라 다중 차단 레이어를 갖춘 회복 탄력성(resilient) 구조에 가까워집니다.
결론: 배포 신뢰에서 실행 신뢰로의 전환
npm 12의 allowScripts 기본값 전환, GATs deprecation, 그리고 같은 날짜에 보고된 Injective Labs SDK 침해와 Datadog의 GitHub 정찰 보고는, 오픈소스 공급망 보안의 무게중심이 ‘배포 시점 신뢰’에서 ‘실행 시점 신뢰’로 이동하고 있음을 보여줍니다. 정책 변화는 공격자 행위의 정밀도가 높아지고 있기에 가능했고, 침해 사례는 그 정책 변화가 더 이상 선택이 아닌 필수임을 입증합니다. 본문에서 서술한 사실은 두 출처의 보도 범위 안에서 단정적으로 다루고, 분석 부분은 보안 전문가의 해석으로 구분했습니다.
권고 액션
- 신규 프로젝트는 allowScripts 기본값을 신뢰하되, 필요한 라이프사이클 스크립트만 allowlist에 명시적으로 등록.
- npm/GitHub 토큰은 GATs 기반으로 전환하고, 스코프와 만료를 최소화.
- OAuth 앱과 PAT(개인용 액세스 토큰) 사용 내역을 정기 감사하고 비활성 토큰을 즉시 회수.
- GitHub 조직 차원에서 비공개 저장소 enumeration 시그널(반복적인 API 호출, 비정상 user agent)을 모니터링.
- SDK나 패키지 게시 권한은 2인 승인 워크플로와 코드 서명 검증을 결합.
핵심 포인트
- npm 12의 allowScripts 기본값 OFF는 패키징 생태계의 신뢰 경계를 배포에서 실행으로 이동시키는 secure by default의 사례.
- GATs deprecation과 2FA 우회 차단 옵션 정리는 토큰 유출 시 피해 반경을 줄이는 권한 경계 강화 시그널.
- Injective Labs SDK 침해는 정상 패키지 위장 공급망 공격이 곧 사용자 자산 손실로 직결됨을 다시 확인.
- Datadog Security Labs의 GitHub enumeration 보고는 공격자 정찰 단계의 정밀도가 정책 강화 속도를 압박하고 있음을 시사.
- 공격자 흐름과 플랫폼 대응을 동일 타임라인에서 비교할 때, 다중 레이어 방어가 공급망 회복 탄력성의 핵심.