개발자를 대상으로 한 공급망 공격: LiteLLM 및 Trivy에서 얻은 교훈
I’m happy to help translate the article, but I need the full text you’d like translated. Could you please paste the content (excluding the source line you’ve already provided) here? Once I have it, I’ll translate it into Korean while preserving the original formatting and technical terms.
개요
2026년 초에 개발자를 대상으로 한 공급망 공격이 급격히 증가했습니다. 두 건의 주요 사건인 LiteLLM과 Trivy가 수천 개 프로젝트를 자격 증명 도난, 백도어, 그리고 잠재적인 데이터 유출에 노출시켰습니다.
이러한 공격은 위협 행위자들이 소프트웨어 개발을 목표로 하는 방식에 근본적인 변화를 나타냅니다. 완성된 애플리케이션을 공격하는 대신, 그들은 개발자가 이를 구축하는 데 사용하는 도구를 손상시킵니다.
LiteLLM 공격 (PyPI)
발생 상황
- 영향받은 버전:
1.82.7및1.82.8 - 악성 행위: 자격 증명 탈취 메커니즘 및 지속적인 백도어.
- 기법: 탐지를 피하기 위해 지연 실행되는 난독화된 코드.
공격 메커니즘
- 악성 코드는 설치 후 24시간에 활성화되어, 패키지 업데이트와 침해를 연관 짓기 어렵게 만든다.
- 환경 변수(API 키, 데이터베이스 자격 증명 등)를 공격자가 제어하는 서버로 유출한다.
영향
- >15 000개의 프로젝트가 발견 전에 해당 취약 버전을 다운로드했다.
- LLM 추상화를 위해 LiteLLM을 사용하던 주요 조직들은 자격 증명을 교체하고 접근 로그를 감사해야 했다.
발견
- FutureSearch.ai의 보안 연구원들이 행동 분석을 통해 침해를 식별했다.
- 악성코드는 비정상적인 도메인으로 네트워크 연결을 시도했으며, 자동 경보를 트리거했다 (FutureSearch.ai, 2026).
Trivy 공격 (GitHub Actions)
공격 벡터
- 위협 행위자가 Trivy의 GitHub 저장소에 접근하여 악성 태그를 푸시했습니다.
- 이 태그들은 전 세계 CI/CD 파이프라인에 의해 자동으로 가져와져, 빌드 환경에서 공격자가 제어하는 코드를 실행했습니다.
범위
- 부동 버전 태그를 사용하는 Trivy GitHub Actions를 사용하는 모든 프로젝트가 취약했습니다.
- 노출된 CI/CD 비밀에는 클라우드 제공자 자격 증명 및 배포 토큰이 포함되었습니다.
악용
- 악성 코드는 CI/CD 파이프라인의 권한으로 실행되어, 종종 컨테이너 레지스트리, 프로덕션 배포 및 인프라에 대한 쓰기 권한을 부여했습니다.
대응
- Socket.dev 및 기타 보안 업체들이 공동 공개를 진행했습니다.
- GitHub는 손상된 토큰을 폐기하고 유지관리자와 협력하여 저장소를 보호했습니다 (Socket.dev, 2026).
일반적인 공격 벡터
| 벡터 | 설명 | 예시 |
|---|---|---|
| 타이포스쿼팅 | 인기 라이브러리와 이름이 비슷한 패키지를 배포합니다; 개발자가 import를 오타 내어 악성 코드를 설치하게 됩니다. | reqeusts → requests, djano → django |
| 의존성 혼동 | 내부 패키지와 동일한 이름의 공개 패키지가 우선순위를 차지합니다; 공격자는 더 높은 버전의 공개 패키지를 업로드합니다. | Internal my‑internal‑lib vs. public my‑internal‑lib v2.0 |
| 유출된 유지보수자 계정 | 피싱 공격을 통해 공격자는 정식 배포 자격 증명을 획득합니다; 패키지가 신뢰된 출처에서 온 것처럼 보입니다. | — |
| 빌드 시스템 침해 | 패키지를 빌드하는 인프라를 공격합니다 (예: Trivy, 2024 XZ Utils 백도어 시도). | — |
| 악성 업데이트 | 정식 패키지가 유출되어 악성 코드를 배포하는 데 사용됩니다 (예: LiteLLM). | — |
방어 전략
의존성 고정
requirements.txt에 정확한 버전 번호를 사용하십시오.package>=1.0와 같은 부동 버전을 피하십시오.- 가능한 경우 특정 해시로 고정하십시오.
# requirements.txt with hashes
litellm==1.82.6 \
--hash=sha256:abc123...
사설 레지스트리
- 공개 패키지를 귀하가 관리하는 사설 레지스트리에 미러링하십시오.
- 내부 배포 전에 패키지를 스캔하십시오.
- 공개 저장소와 빌드 사이에 검토 레이어를 추가합니다.
자동 스캔
- 보안 스캔을 CI/CD 파이프라인에 통합하십시오.
- 도구: Snyk, Socket.dev, GitHub Advanced Security.
- 알려진 악성 패키지와 취약한 의존성을 탐지합니다.
최소 권한 실행
- CI/CD 파이프라인을 최소 권한으로 실행하십시오.
- 빌드, 테스트, 배포 자격 증명을 분리하십시오.
- 제한된 범위의 단기 토큰을 사용하십시오.
의존성 검토
- 새 의존성을 추가하기 전에 감사하십시오.
- 유지관리자 평판, 업데이트 빈도, 커뮤니티 채택을 확인하십시오.
- 핵심 기능에 대해 방치된 프로젝트나 단일 유지관리자 프로젝트를 피하십시오.
커뮤니티 대응 및 새로운 표준
| Initiative | Description |
|---|---|
| Software Bills of Materials (SBOM) | 모든 종속성과 해당 버전을 목록화합니다; 빠른 취약점 평가를 가능하게 합니다. 행정명령 14028은 미국 정부에 판매되는 소프트웨어에 SBOM을 의무화합니다. |
| Sigstore & Artifact Signing | 소프트웨어 아티팩트를 위한 무료 인증기관(CA) 및 투명성 로그; 서명된 패키지는 변조 여부를 검증할 수 있습니다. 주요 레지스트리 전반에 걸쳐 채택이 확대되고 있습니다. |
| Package‑Manager Improvements | PyPI, npm 등은 이제 더 엄격한 인증, 유지관리자를 위한 2단계 인증 의무화, 악성코드 스캔을 시행합니다. |
| Security Frameworks | NIST SSDF, OWASP SAMM, 그리고 SLSA는 안전한 소프트웨어 개발을 위한 가이드라인을 제공하여 공급망 공격 표면을 감소시킵니다. |
비즈니스 결과
| 지표 | 수치 |
|---|---|
| 복구 비용 | 평균 공급망 침해 비용은 $4.5 M (자격 증명 교체, 포렌식, 법률 비용, 평판 손상). |
| 개발 속도 | 보안 검토가 사고 후 의존성 관리 및 감사를 위해 15‑20 % 더 많은 시간을 추가합니다. |
| 사이버 보험료 | 소프트웨어 기업의 경우 50 % 상승; 보험사는 이제 SBOM, 의존성 스캔 및 사고 대응 계획을 요구합니다. |
| 규제 공시 | SEC는 상장 기업이 중요한 사이버 보안 사고를 4일 이내에 공개하도록 요구하며, 고객 데이터에 영향을 미치는 공급망 공격은 공시 대상이 됩니다. |
Source:
FAQ
공급망 공격이란?
공급망 공격은 개발자가 소프트웨어를 구축할 때 의존하는 도구, 라이브러리, 서비스를 표적으로 합니다. 이러한 상위 구성 요소를 손상시킴으로써 위협 행위자는 많은 하위 프로젝트에 악성 코드를 주입할 수 있으며, 피해자는 이를 모르는 경우가 많습니다.
내 프로젝트가 영향을 받았는지 어떻게 확인할 수 있나요?
- 의존성 파일 감사 –
requirements.txt,package.json,Cargo.toml등에서 손상된 버전을 검토합니다. - 설치된 패키지 목록 확인 –
pip list,npm list,cargo tree등을 실행하여 실제로 사용 중인 패키지를 확인합니다. - 보안 도구 사용 – Snyk, GitHub Dependabot, Trivy와 같은 SBOM‑인식 스캐너를 이용하면 알려진 악성 버전에 대해 자동으로 알림을 받을 수 있습니다.
손상된 패키지를 사용했을 경우 어떻게 해야 하나요?
- 노출되었을 수 있는 자격 증명(API 키, 토큰, 비밀번호 등)을 교체합니다.
- 로그를 확인하여 무단 접근이나 의심스러운 활동이 있는지 점검합니다.
- 깨끗한 버전으로 업데이트하거나 해당 패키지를 완전히 교체합니다.
- 코드베이스를 감사하여 백도어, 데이터 유출 등 침해 흔적을 찾습니다.
- 보안 팀, 이해관계자 및 영향을 받을 수 있는 사용자에게 민감한 데이터가 접근되었을 가능성이 있음을 알립니다.
사설 패키지 레지스트리가 더 안전한가요?
- 사설 레지스트리는 통제 레이어를 추가하지만 본질적으로 더 안전한 것은 아닙니다.
- 공개 레지스트리와 마찬가지로 정기적인 유지보수, 스캔, 업데이트가 필요합니다.
- 주요 장점은 내부 배포 전에 패키지를 검토하고 업데이트 시점을 제어할 수 있다는 점입니다.
의존성 혼동(Dependency‑confusion) 공격을 어떻게 방지하나요?
- 내부 라이브러리에는 스코프가 지정된 패키지(예:
@company/package)를 사용합니다. - 패키지 매니저를 설정하여 사설 레지스트리가 공개 레지스트리보다 우선하도록 합니다.
- 공개 레지스트리에서 조직 전용 네임스페이스를 예약하여 악성 이름 스쿼팅을 차단합니다.
공급망 보안의 미래는 어떨까요?
- 코드 서명 의무화와 SBOM(Software Bill of Materials) 요구사항이 표준이 될 것입니다.
- 자동화된 취약점 스캔이 기본적으로 DevSecOps 파이프라인에 통합될 것입니다.
- 규제 압력이 보안 개발 관행의 광범위한 채택을 촉진할 것입니다.
공급망 위험 및 의존성 혼동
공격자는 최종 애플리케이션보다 소프트웨어를 빌드하는 데 사용되는 도구와 서비스를 표적으로 삼습니다. 상위 종속성을 손상시킴으로써 모든 하위 프로젝트에 접근할 수 있게 됩니다. 이러한 공격은 악성 코드가 신뢰할 수 있는 출처에서 온 것이기 때문에 탐지하기 어렵습니다 (CISA, 2026).
주요 실천 사항
- 버전을 고정합니다.
- 취약점을 스캔합니다.
- 사설 레지스트리를 사용합니다.
- 최소 권한 원칙을 구현합니다.
- SBOM을 생성합니다.
- 아티팩트를 서명합니다.
이러한 실천은 마찰을 발생시키지만 재앙을 방지합니다.
LiteLLM 및 Trivy 침해는 경고이며, 이상 현상이 아닙니다. 공급망 공격은 빈도와 정교함이 증가하고 있습니다. 개발 팀은 종속성을 잠재적 공격 벡터로 간주해야 합니다.
해결책은 서드파티 코드를 피하는 것이 아닙니다—현대 소프트웨어 개발은 오픈 소스에 의존합니다. 해결책은 보안을 염두에 두고 종속성을 관리하는 것입니다.
공격자는 여러분의 도구를 노리고 있습니다. 그들이 공격하기 전에 도구를 보호하세요.
Pooya Golchian – 보안 소프트웨어 개발을 전문으로 하는 AI 엔지니어 및 풀스택 개발자. 사이버 보안 및 개발에 대한 더 많은 인사이트는 트위터에서 팔로우하세요: @pooyagolchian