미검증 신뢰 게시자 구성 48시간 자동 만료 적용
GitHub는 2026년 10월 2일 공식 변경 로그를 통해 npm 패키지의 신뢰할 수 있는 게시자(Trusted Publishing) 구성 중 아직 검증되지 않은 설정에 48시간 자동 만료 규칙을 도입했다고 발표했습니다. 이번 조치에 따라 npm에서 신뢰할 수 있는 게시자 관계를 생성한 뒤 첫 패키지 배포가 이뤄지지 않은 미검증(Unvalidated) 구성은 생성 시점부터 48시간이 지나면 자동으로 효력을 상실하며 더 이상 배포 권한을 승인하지 않습니다.
기존에는 배포 설정만 생성해 둔 뒤 실제 배포를 진행하지 않아도 해당 신뢰 관계가 유지될 수 있었으나 이제는 제한된 시간 안에 배포를 완료해야만 지속적인 배포 권한을 확보할 수 있습니다. 이미 다른 유효한 구성이 존재하는 패키지의 경우 이번 정책으로 인해 기존 정상 구성이 영향을 받지는 않습니다.
검증 완료 조건과 식별자 변경에 따른 수명 주기 관리
신규 정책에서 구성이 영구적인 만료 면제 상태로 전환되기 위해서는 해당 구성을 통해 최초 1회의 패키지 배포가 성공적으로 완료되어야 합니다. 첫 배포에 성공하여 '검증됨(validated)' 상태가 된 구성은 48시간 만료 대상에서 완전히 제외되어 안정적인 지속 배포 파이프라인을 유지할 수 있습니다.
반면 대상 저장소(repository)나 프로젝트의 식별자 정보를 변경할 경우에는 기존 검증 상태가 유지되지 않고 새로운 신뢰 관계가 맺어지며 다시 48시간의 검증 기간이 새롭게 시작됩니다. 일반적인 부수적 설정 수정으로는 이 마감 시간이 갱신되지 않으며, 만약 기한 내 배포가 이뤄지지 않아 구성이 만료되면 설정을 삭제하고 다시 생성해야 새 48시간 유효 기간이 주어집니다. 만료된 구성은 설정 화면에는 계속 표시되지만 패키지당 최대 구성 한도(per-package limits) 계산에서는 제외됩니다.
GitHub Actions issue_comment 이벤트 토큰 차단 확대
이번 변경과 함께 배포 토큰의 보안 검증도 한층 강화되었습니다. npm은 기존에 적용되던 pull_request_target 이벤트 제한에 더하여 GitHub Actions의 issue_comment 이벤트에서 생성된 신뢰할 수 있는 게시자 토큰을 통한 배포 승인을 거부하기 시작했습니다.
이로 인해 이슈나 풀 리퀘스트의 댓글 작성 이벤트를 트리거로 삼아 배포를 자동화하던 기존 워크플로는 더 이상 동작하지 않습니다. GitHub는 영향을 받는 프로젝트의 경우 배포 워크플로를 push, release, workflow_dispatch와 같이 명시적이고 인가된 이벤트로 전환할 것을 안내하고 있습니다.
방치된 신뢰 관계와 저장소 하이재킹 위험 차단 효과
이번 조치는 npm 생태계에서 장기 비밀 토큰(NPM_TOKEN)을 제거하고 OIDC 기반의 신뢰 관계를 확립하려는 노력의 연장선상에 있으면서도, 그 과정에서 발생할 수 있는 공급망 보안 사각지대를 메우려는 시도로 풀이됩니다. 미검증 상태의 신뢰 구성이 장기간 방치될 경우 저장소의 명칭 변경이나 소유권 이전이 일어났을 때 악의적인 제3자가 동일한 이름의 저장소를 점유하여 배포 권한을 가로채는 '저장소 하이재킹(Repo hijacking)' 위험에 노출될 수 있습니다.
첫 배포가 입증되지 않은 연결 설정을 48시간 만에 신속하게 무효화함으로써 공격자가 노릴 수 있는 유휴 공격 표면을 크게 축소한 것으로 평가할 수 있습니다. 또한 누구나 실행을 유도하기 쉬운 댓글(issue_comment) 이벤트를 통한 토큰 획득을 차단한 점 역시 비인가 공격자에 의한 불법 릴리스 위험을 원천 차단하는 합리적인 보안 강화책으로 분석됩니다.
패키지 유지관리자를 위한 실무 점검 및 배포 수칙
패키지 유지관리자는 새로운 프로젝트에 신뢰할 수 있는 게시자를 연동할 때 설정 직후 테스트 배포까지 한 흐름으로 완료하는 배포 계획을 수립할 필요가 있습니다. 사전 설정만 등록해 두고 며칠 뒤 실제 배포를 진행하려다 48시간 초과로 배포가 실패하는 실무 혼선이 발생할 수 있기 때문입니다.
또한 CI/CD 파이프라인에서 트리거 이벤트 구성을 즉시 점검하여 issue_comment나 pull_request_target을 사용하는 릴리스 로직이 있다면 push 태그 기반이나 승인된 릴리스 이벤트, 혹은 workflow_dispatch를 통한 수동 실행 방식으로 즉각 마이그레이션해야 파이프라인 중단을 예방할 수 있을 것으로 보입니다.
출처
GitHub Changelog의 원출처와 본문에 표시한 참고자료를 바탕으로 한국어로 재구성했습니다. ‘ARCH.B 분석’은 자료를 읽고 덧붙인 편집 해석입니다.
Unvalidated npm trusted publishing configurations now expire (새 창)