#DevOps

당근이 파이썬 공급망 공격에 대응하는 방법

당근이 파이썬 공급망 공격에 대응하는 방법
01

Summary

당근이 악성 파이썬 패키지를 거르는 비결: '의존성 쿨다운' 프록시 구축기

보안과 개발자 경험을 동시에 잡은 사내 PyPI 프록시 레이어 전략

오픈소스 생태계를 노리는 공급망 공격에 맞서 당근 파이썬 챕터가 설계한 전사 방어 체계를 다룹니다. 단순히 패키지를 저장하는 것을 넘어, 프록시 레이어에서 업로드 시각을 검증하여 위험한 신규 버전을 차단하는 '쿨다운' 정책의 구현 과정과 실질적인 방어 사례를 상세히 소개합니다.

  • 01LiteLLM 및 PyTorch Lightning 공급망 공격을 실제 차단한 실전 보안 사례
  • 02PEP 503과 PEP 691 표준 규격을 조합하여 패키지 업로드 시각을 검증하는 기술적 해법
  • 03AWS CodeArtifact 인증 과정을 추상화하여 로컬 및 CI 환경의 개발자 생산성 향상
  • 04Central Dogma를 활용해 재배포 없이 실시간으로 제어하는 동적 보안 설정 관리
  • 058KB 단위 청크 스트리밍을 통한 대용량 바이너리 배포 효율 최적화

RECOMMENDATION

오픈소스 의존도가 높은 기업이라면 사내 패키지 프록시를 단일 진입점으로 구축하고 쿨다운 정책을 도입할 것을 적극 추천합니다. 보안과 업데이트 속도 사이의 균형을 위해 Central Dogma와 같은 동적 설정 관리 도구를 함께 활용하는 것이 핵심입니다.

The Problem

PyPI 패키지의 공식 CI/CD 권한을 탈취하여 악성 코드를 삽입하는 공급망 공격이 빈번해지고 있으며, 이러한 공격의 대부분은 배포 후 일주일 이내에 탐지 및 격리되지만 그 사이 발생하는 노출 시간 동안 보안 위협이 큽니다. 특히 당근 내부에서는 AWS CodeArtifact 사용 시 발생하는 복잡한 인증 절차로 인해 개발자들이 패키지 설치 시 불편함을 겪고 있었습니다.

The Solution

AWS CodeArtifact 앞에 자체 PyPI 프록시 레이어를 구축하여 '의존성 쿨다운(Dependency Cooldown)' 정책을 전사적으로 적용했습니다. 프록시는 PEP 691 JSON API를 통해 pypi.org의 패키지 업로드 시각을 확인하고, 쿨다운 기간 내의 버전은 PEP 503 HTML 응답에서 필터링하여 노출하지 않도록 구현되었으며, Central Dogma를 통해 정책을 동적으로 관리합니다.

The Result

프록시 레이어 도입을 통해 개별 개발 환경의 설정 없이도 일관된 보안 정책을 적용할 수 있게 되었으며, 실제로 PyTorch Lightning 공급망 공격 발생 시 악성 버전의 유입을 자동으로 차단하는 성과를 거두었습니다. 또한 복잡한 AWS 인증을 프록시가 대신 처리함으로써 개발자 경험(DX)도 크게 개선되었습니다.

Trade-off

쿨다운 정책으로 인해 최신 버전의 보안 패치나 기능 업데이트가 지연될 수 있는 한계가 있으나, 이는 Central Dogma의 exclude 목록 관리를 통해 신뢰할 수 있는 패키지를 예외 처리함으로써 대응하고 있습니다. 또한 쿨다운 적용 이전의 과거 악성 패키지는 탐지할 수 없어 별도의 보안 감사 도구와의 병행이 권장됩니다.

03

Key Concepts

Concept · 01

Dependency Cooldown

새로 배포된 패키지 버전을 즉시 신뢰하지 않고, 보안 커뮤니티의 검증이 이루어질 때까지 일정 기간 설치를 유예하는 보안 전략입니다.

  • 공급망 공격 패키지가 대부분 일주일 내에 탐지된다는 사실에 기반하여 노출 시간을 최소화합니다.
Concept · 02

PEP 691

파이썬 패키지 인덱스를 JSON 형식으로 제공하는 표준으로, 기존 HTML 방식(PEP 503)보다 풍부한 메타데이터를 포함합니다.

  • 패키지 파일의 정확한 'upload-time'을 확인하기 위해 프록시 서버에서 pypi.org에 요청할 때 사용합니다.
Concept · 03

Central Dogma

Git 기반의 고가용성 구성 관리 서비스로, 마이크로서비스 환경에서 설정 데이터를 안전하게 관리하고 전파합니다.

  • 쿨다운 활성화 여부, 기간 설정, 예외 패키지 목록을 서버 재시작 없이 실시간으로 프록시에 반영하는 데 활용됩니다.