Axios 공급망 공격, npm 생태계의 보안 위협을 드러내다.

by DD
2개월 전
조회수 6

Axios의 악성 버전 배포로 인한 공급망 공격 발생, lead maintainer 계정 탈취가 원인

공격자는 소셜 엔지니어링(Social Engineering)을 통해 계정 탈취 후 악성 코드 삽입

OIDC(OpenID Connect) 기반의 릴리즈 설정 부재 및 패키지 서명 미흡이 문제점으로 지적됨

커뮤니티에서는 의존성 고정(Dependency Pinning), 패키지 서명(Package Signing) 등 보안 강화 방안 제시

공격 방식 및 피해 규모

공격자는 lead maintainer의 계정을 탈취하여 악성 axios 버전(Malicious Axios Version)을 배포했다. 해당 버전은 plain-crypto-js@4.2.1이라는 악성 의존성을 주입하여 macOS, Windows, Linux 시스템에 RAT(Remote Access Trojan)을 설치했다. 공격은 약 3시간 동안 지속되었으며, 피해를 입은 시스템은 잠재적 위험(Potential Compromise)에 노출되었다.

OIDC 기반 릴리즈 설정 부재의 문제점

robshippr의 댓글에 따르면, 정식 릴리즈는 OIDC(OpenID Connect) 기반의 증명(Provenance Attestations)을 사용하지만, 악성 버전은 이를 사용하지 않았다. OIDC 기반 릴리즈 설정(OIDC-based Release Setup) 부재는 공격자가 악성 코드를 배포하는 것을 막지 못했다는 점을 시사한다. 이는 공급망 공격(Supply Chain Attack) 방어에 있어 OIDC의 중요성을 강조한다.

의존성 고정 및 패키지 서명의 중요성

커뮤니티에서는 의존성 고정(Dependency Pinning)을 통해 악성 코드 삽입을 방지해야 한다는 의견이 제시되었다. momo_dev는 파이썬 프로젝트에서 `pip install --require-hashes`를 사용하여 의존성 해시가 변경될 경우 설치를 실패하도록 설정한다고 언급했다. lrvick은 패키지 서명(Package Signing)의 중요성을 강조하며, 코드 서명(Code Signing)을 통해 무단 배포를 방지해야 한다고 주장했다.

공격 탐지 및 대응의 어려움

공격 탐지의 어려움 또한 문제점으로 지적되었다. robshippr는 릴리즈 간의 lockfile 차이를 비교하여 새로운 의존성 추가를 감지하는 방법을 제시했지만, 이는 수동적인 방식이다. 자동화된 탐지 시스템(Automated Detection System)의 부재는 공격 발생 시 빠른 대응을 어렵게 만든다. 또한, 공격자는 삭제된 이슈를 악성 계정으로 삭제하여 커뮤니티 대응(Community Response)을 방해했다.

향후 보안 강화 방안

공격 이후, lead maintainer의 모든 장치 및 자격 증명 초기화, OIDC 기반 릴리즈 설정, GitHub Actions 보안 강화 등 다양한 보안 개선 방안이 제시되었다. 특히, 개인 계정(Personal Account)을 통한 직접 배포의 위험성을 인지하고, OIDC 및 불변 릴리즈 설정을 도입해야 한다고 강조했다. 또한, 지속적인 보안 모니터링과 개선을 통해 전반적인 보안 수준(Overall Security Posture)을 강화해야 한다.

Post Mortem: axios NPM supply chain compromise

댓글 0

첫 번째 댓글을 남겨보세요!