속보낮음

NPM 샤이-훌루드 공급망 방어 우회, Git 의존성 통해 보안 취약점 발견

3분 읽기출처: BleepingComputer

NPM의 샤이-훌루드 공급망 방어가 Git 의존성 악용으로 우회 가능하다는 연구 결과 공개. 자바스크립트 생태계의 지속적 위험성과 대응 방안 분석.

NPM 샤이-훌루드 보안 조치, Git 의존성 통해 우회 가능

보안 연구진들은 최근 NPM의 공급망 방어 체계에 심각한 취약점이 존재하며, 이는 샤이-훌루드(Shai-Hulud) 공격 이후 도입된 보안 조치가 Git 의존성을 악용해 우회될 수 있음을 발견했다. 이번 연구 결과는 자바스크립트 생태계의 의존성 관리에 여전히 잠재적 위험이 존재함을 보여준다.

주요 연구 결과

2021년 샤이-훌루드 공급망 공격 이후 NPM은 악성 패키지로 인한 하류 애플리케이션 침해를 방지하기 위해 강화된 보안 조치를 도입했다. 그러나 연구진들은 공격자가 Git 기반 의존성을 악용해 이러한 방어 조치를 우회할 수 있음을 입증했다. Git 기반 의존성은 NPM 레지스트리가 아닌 Git 저장소에 직접 호스팅되는 패키지로, 기존 NPM 패키지와 달리 동일한 보안 스캔, 서명 검증, 메타데이터 검사를 거치지 않는다. 이로 인해 공격자는 다음과 같은 행위가 가능하다:

  • 악성 코드 주입: 탐지 없이 의존성에 악성 코드를 삽입.
  • 오픈소스 프로젝트의 신뢰 관계 악용: 의존성 신뢰도를 악용한 공격 수행.
  • NPM 자동 보안 검사 우회: 패키지 서명 및 출처 검증(Provenance) 등 자동화된 보안 메커니즘 무력화.

기술적 세부 사항

NPM의 샤이-훌루드 이후 도입된 방어 조치에는 다음과 같은 기능이 포함된다:

  • 패키지 서명: 게시자 신원 검증을 위한 서명 메커니즘.
  • 출처 검증(Provenance): 패키지 출처의 유효성 확인.
  • 레지스트리 호스팅 패키지에 대한 자동 악성코드 스캔.

그러나 package.json에 URL로 참조되는 Git 의존성(예: git+https://github.com/user/repo.git)은 이러한 보호 조치를 거치지 않는다. 공격자는 다음의 방법으로 이를 악용할 수 있다:

  1. 악성 패키지 호스팅: 공개 또는 비공개 Git 저장소에 악성 패키지를 호스팅.
  2. 개발자 속이기: 타이포스쿼팅(typosquatting) 또는 소셜 엔지니어링을 통해 개발자가 악성 의존성을 포함하도록 유도.
  3. 설치 시 임의 코드 실행: 빌드 환경 침해를 위한 임의 코드 실행.

영향 분석

이번 취약점은 조직에 다음과 같은 위험을 초래할 수 있다:

  • CI/CD 파이프라인을 대상으로 한 공급망 공격.
  • 데이터 유출 또는 백도어 배포를 통한 의존성 침해.
  • 악성 코드 무의식적 배포로 인한 프로젝트 평판 손상.

Git 의존성은 기업 및 오픈소스 프로젝트에서 널리 사용되고 있어 위험이 확대될 수 있다. Git 호스팅 패키지에 대한 전이적 의존성을 가진 주요 라이브러리나 도구는 의도치 않게 위협을 전파할 수 있다.

권장 조치

보안 팀과 개발자는 다음과 같은 조치를 취해야 한다:

  1. package.json 파일 감사: Git 의존성을 식별하고 가능한 경우 레지스트리 호스팅 대체 패키지로 교체.
  2. 의존성 스캐닝 도구 도입: GitHub Dependabot, Snyk 등 악성 Git 참조를 탐지하는 도구 사용.
  3. Git 기반 의존성에 대한 엄격한 코드 리뷰 정책 시행: 저장소 출처의 수동 검증 포함.
  4. NPM의 --omit=dev 플래그 사용: 개발 의존성 제외로 잠재적 위험 최소화.
  5. 빌드 시스템 이상 징후 모니터링: 예기치 않은 네트워크 요청이나 파일 변경 사항 감시.

후속 조치

NPM은 아직 이 문제에 대한 패치나 완화 조치를 발표하지 않았다. 조직은 다음과 같은 심층 방어(Defense-in-Depth) 전략을 채택해야 한다:

  • 격리된 빌드 환경: 침해된 의존성의 영향을 제한하기 위한 격리 환경 구축.
  • 소프트웨어 Bill of Materials(SBOM) 생성: 의존성 출처 추적을 위한 SBOM 생성.
  • 의존성 관리에 대한 제로 트러스트 원칙 적용: 모든 외부 코드를 기본적으로 신뢰하지 않는 접근 방식.

이번 발견은 공격자가 간과된 공격 표면을 악용하는 전술을 변화시킴에 따라, 오픈소스 공급망 보안에 대한 지속적인 경계의 필요성을 강조한다.

공유

TwitterLinkedIn