[해외보안뉴스] GitHub, 1,500여 개 npm 패키지 하이재킹 취약점 조치 및 게시 보안 강화
GitHub가 npm 패키지 생태계의 보안 강화를 위해 미검증된 '신뢰할 수 있는 게시(Trusted Publishing)' 설정에 대한 자동 만료 정책을 도입했습니다. 이는 보안 연구원들이 타인의 계정 자격 증명을 탈취하지 않고도 다른 사용자의 npm 패키지에 새 버전을 무단 배포할 수 있는 심각한 결함을 발견한 데 따른 조치입니다.
이번 취약점으로 인해 1,500개 이상의 npm 패키지가 패키지 하이재킹 위협에 노출되었던 것으로 확인되었습니다. 공격자는 제대로 검증되지 않은 채 남아있는 게시 구성을 악용해 실제 패키지 소유자의 계정 권한 없이도 악성 업데이트를 올릴 수 있었으며, 이는 오픈소스 개발 생태계 전체에 심각한 공급망 공격 위험을 일으킬 수 있는 사안이었습니다.
이를 해결하기 위해 GitHub는 npm 신뢰할 수 있는 게시 설정이 생성된 후 48시간 이내에 성공적인 패키지 배포가 이루어지지 않을 경우 해당 설정을 자동으로 만료시키도록 변경했습니다. 단, 최초 배포를 성공적으로 완료하여 검증을 마친 구성은 만료 대상에서 제외됩니다. npm 패키지 유지관리자는 사용 중인 게시 설정을 재점검하고 방치된 구성을 정리하여 보안 상태를 최신으로 유지해야 합니다.
♥ 추천 0
OIDC 기반 Trusted Publishing 설정에 TTL(48시간)을 적용하여, 미검증 상태로 방치된 파이프라인을 노린 패키지 탈취 공격을 효율적으로 차단한 좋은 패치입니다.
시스템 설계 관점에서도 미인증 상태의 설정 객체에 자동 만료 메커니즘을 두는 것이 공급망 보안에 얼마나 중요한지 보여주는 사례입니다.
앞으로 CI/CD 파이프라인 구축 시 설정 직후 즉시 최초 배포(Validation)까지 완료하도록 데브옵스 워크플로우를 점검할 필요가 있겠습니다.
계정 탈취 없이 패키지를 변조할 수 있었다는 점에서 공급망 공격(Supply Chain Attack) 관점의 매우 치명적인 허점이었습니다. 공격자 입장에서는 복잡한 인증 정보 탈취 없이 미검증 신뢰 설정만 탐색해 악성 코드를 유포할 수 있었던 고효율 공격 벡터입니다. 이번 48시간 만료 정책으로 노출면은 줄었으나, 공격자들은 이제 이 유효 시간 내에 설정을 선점하려는 레이스 컨디션(Race Condition) 공격 시도를 이어갈 것으로 보입니다.
소프트웨어 공급망(Software Supply Chain) 공격이 계정 탈취를 넘어 CI/CD 파이프라인 및 인증 설정의 허점을 노리는 방식으로 진화하고 있습니다.
개발 편의성을 위한 기능이라도 설정(Configuration) 관리의 사각지대가 생기면 대규모 공급망 리스크로 직결되므로, 구성 자산에 대한 주기적인 수명주기 관리와 거버넌스가 필수적입니다.
우리 조직도 사내에서 사용 중인 외부 오픈소스 패키지 모니터링 체계를 재점검하고, SBOM 기반의 공급망 무결성 검증 정책을 한층 강화하겠습니다.