
보안과 개발자 경험을 동시에 잡은 사내 PyPI 프록시 레이어 전략
오픈소스 생태계를 노리는 공급망 공격에 맞서 당근 파이썬 챕터가 설계한 전사 방어 체계를 다룹니다. 단순히 패키지를 저장하는 것을 넘어, 프록시 레이어에서 업로드 시각을 검증하여 위험한 신규 버전을 차단하는 '쿨다운' 정책의 구현 과정과 실질적인 방어 사례를 상세히 소개합니다.
오픈소스 의존도가 높은 기업이라면 사내 패키지 프록시를 단일 진입점으로 구축하고 쿨다운 정책을 도입할 것을 적극 추천합니다. 보안과 업데이트 속도 사이의 균형을 위해 Central Dogma와 같은 동적 설정 관리 도구를 함께 활용하는 것이 핵심입니다.
PyPI 패키지의 공식 CI/CD 권한을 탈취하여 악성 코드를 삽입하는 공급망 공격이 빈번해지고 있으며, 이러한 공격의 대부분은 배포 후 일주일 이내에 탐지 및 격리되지만 그 사이 발생하는 노출 시간 동안 보안 위협이 큽니다. 특히 당근 내부에서는 AWS CodeArtifact 사용 시 발생하는 복잡한 인증 절차로 인해 개발자들이 패키지 설치 시 불편함을 겪고 있었습니다.
AWS CodeArtifact 앞에 자체 PyPI 프록시 레이어를 구축하여 '의존성 쿨다운(Dependency Cooldown)' 정책을 전사적으로 적용했습니다. 프록시는 PEP 691 JSON API를 통해 pypi.org의 패키지 업로드 시각을 확인하고, 쿨다운 기간 내의 버전은 PEP 503 HTML 응답에서 필터링하여 노출하지 않도록 구현되었으며, Central Dogma를 통해 정책을 동적으로 관리합니다.
프록시 레이어 도입을 통해 개별 개발 환경의 설정 없이도 일관된 보안 정책을 적용할 수 있게 되었으며, 실제로 PyTorch Lightning 공급망 공격 발생 시 악성 버전의 유입을 자동으로 차단하는 성과를 거두었습니다. 또한 복잡한 AWS 인증을 프록시가 대신 처리함으로써 개발자 경험(DX)도 크게 개선되었습니다.
Trade-off
쿨다운 정책으로 인해 최신 버전의 보안 패치나 기능 업데이트가 지연될 수 있는 한계가 있으나, 이는 Central Dogma의 exclude 목록 관리를 통해 신뢰할 수 있는 패키지를 예외 처리함으로써 대응하고 있습니다. 또한 쿨다운 적용 이전의 과거 악성 패키지는 탐지할 수 없어 별도의 보안 감사 도구와의 병행이 권장됩니다.
새로 배포된 패키지 버전을 즉시 신뢰하지 않고, 보안 커뮤니티의 검증이 이루어질 때까지 일정 기간 설치를 유예하는 보안 전략입니다.
파이썬 패키지 인덱스를 JSON 형식으로 제공하는 표준으로, 기존 HTML 방식(PEP 503)보다 풍부한 메타데이터를 포함합니다.
Git 기반의 고가용성 구성 관리 서비스로, 마이크로서비스 환경에서 설정 데이터를 안전하게 관리하고 전파합니다.






