- Packagist에 등록된 오픈소스 패키지 8개가 조직적 공급망 공격에 감염, GitHub Releases를 통한 리눅스 악성코드가 유포됨
- Composer 및 package.json 등 복합 의존성 환경의 검증 부재가 악용, 기존 보안 모델 한계 드러남
- CI/CD 파이프라인 및 개발자까지 광범위한 영향, 의존성·네트워크 통제 중심의 종합 보안 조치 필요
오픈소스 의존성과 개발 파이프라인의 이중 검증이 새로운 표준으로 떠오르는 계기입니다.
1. 사건 개요: Packagist 공급망 공격 발생
2026년 5월, 오픈소스 PHP 패키지 저장소 Packagist에서 8개 패키지가 동시다발적으로 공격자에 의해 감염된 사실이 드러났습니다. 해당 패키지를 설치하면 GitHub Releases에서 리눅스용 악성코드를 내려받아 실행하는 멀웨어가 동작했습니다. Socket 보안연구팀은 다수 패키지와 여러 개발 환경을 동시에 노린 조직적(동시·계획적) 공격임을 밝히며 경각심을 높이고 있습니다.
2. 감염 방식: GitHub Releases 악용 및 악성 코드 유포
공격의 본질은 공개된 오픈소스 레지스트리를 이용해 멀웨어를 전파하고, 실제 실행은 신뢰도가 높은 GitHub Releases를 통해 이루어진다는 점입니다. 배포 절차는 다음과 같습니다. 감염된 패키지 설치 시 악성 스크립트가 자동 실행되고, 해당 스크립트가 GitHub Releases API로 리눅스 바이너리를 내려받아 시스템에서 가동합니다. 이 과정에서 보안 솔루션이나 내부 감사의 탐지를 쉽게 비켜갈 수 있었습니다.
특히, 자동화된 배포·개발 환경(CI/CD)에 감염 패키지가 포함될 경우 내부 네트워크나 중요한 시스템까지 위협받을 수 있습니다.
3. 감염 패키지 및 영향 범위
8개의 패키지가 감염되었으며, 그 범위와 파급력은 개발자 커뮤니티에서 아직도 정밀 조사 중입니다. 주목할 점은 PHP 패키지임에도 자바스크립트 프로젝트 환경까지 영향권에 뒀다는 점입니다. Socket 연구팀에 따르면, “감염된 패키지는 모두 Composer 기반이지만, 악성 코드는 composer.json이 아니라 package.json에 삽입되어 자바스크립트 개발 환경도 노렸다”고 전했습니다. 이처럼 언어와 도구의 경계를 악용한 공격은 오픈소스 생태계의 상호연결 취약성을 여실히 드러냅니다.
4. Composer 한계와 package.json 악용 사례
Composer만 사용하는 프로젝트라면 composer.json만 주로 점검하지만, 실제로는 여러 의존성 관리자가 공존하는 환경이 흔해졌습니다. 이 틈을 노려 package.json에 악성 코드를 추가, Node.js 등 다른 환경에서까지 자동 실행되도록 설계돼 있었습니다. 단일 관리 도구로는 전체 소프트웨어 공급망의 안전을 담보할 수 없음을 단적으로 보여줍니다.
5. 보안 위협 및 대응 방안
공급망 공격의 위협은 단순한 개발자 시스템 침해에 그치지 않습니다. 내부 배포 서버, CI/CD 자동화 과정, 실제 서비스에 이르기까지 피해가 확산될 수 있습니다. 실제로 개발자 정보를 노리거나, 추가 악성 프로그램 배포, 백도어 삽입 등이 우려됩니다.
이에 따라, 개발자는 신뢰할 수 있는 출처의 패키지만 사용하고, 업데이트 전 보안 검증을 철저히 해야 합니다. 의존성 검사 도구로 위험 요소를 상시 모니터링하고, CI/CD 배포 자동화 환경에서는 타사 패키지 네트워크 접근, 파일 권한 등을 최소화해야 합니다. 불필요한 네트워크 연결이 있는지, 설치 로그에 이상 행위가 감지되는지 정기적으로 관리해야 안전합니다.
6. 시사점 및 커뮤니티 의견
Socket 연구팀은 “조직적으로 이루어진 이번 공격이 소프트웨어 의존성 모델의 구조적 문제에서 비롯됐다”고 지적합니다. 단일한 기술 취약점이 아니라, 복잡한 오픈소스 연동 환경과 신뢰 모델의 약점이 부각되었습니다. 소프트웨어 공급망의 안전은 개별 패키지 이상으로, 개발 전 과정에 대한 통합적 위협 감지와 검증 체계 확립이 필수임을 보여줍니다.
체크포인트
- 오픈소스 의존성 도입 전 package.json·composer.json 등 다수 환경 점검
- CI/CD 파이프라인 패키지 네트워크·실행 권한 최소화
- 불필요한 네트워크 권한 및 이상 로그 주기 점검