Kant's IT/Vulnerability

Python JSON Logger 패키지의 공급망 취약점(CVE-2025-27607) 분석

Kant Jo 2025. 5. 24. 22:47

Python JSON Logger Vulnerability Enables Remote Code Execution - PoC Released

 

Python JSON Logger Vulnerability Enables Remote Code Execution - PoC Released

A recent security disclosure has revealed a remote code execution (RCE) vulnerability, CVE-2025-27607, in the Python JSON Logger package.

gbhackers.com

 

  • 개요
    • Python 기반 로깅 라이브러리인 python-json-logger에서 원격 코드 실행(RCE)이 가능한 공급망 취약점이 발견됨
    • CVE-2025-27607로 등록된 본 취약점은 버전 3.2.0~3.2.1에서 영향을 받으며, 누락된 개발용 의존성 패키지(msgspec-python313-pre)로 인해 악의적인 코드가 실행될 가능성이 존재
  • 취약점 상세(CVE-2025-27607)
    • CWE-829: 신뢰할 수 없는 제어 영역에서의 기능 포함
    • PyPI에서 삭제된 패키지명을 악의적 사용자가 재등록하여 악성 코드를 포함시킬 수 있었음
    • 해당 의존성은 개발용 옵션(dev)에만 사용되며, Python 3.13.x 환경에서 pip install python-json-logger[dev]로 설치 시 악성 패키지가 실행될 수 있는 구조
    • 연구자(@omnigodz)가 실제 PoC를 발표했으나 악용 목적이 아닌 실험으로 발표 후 삭제
  • 영향 및 취약 범위
    • 영향받는 버전: 3.2.0, 3.2.1
    • 패치 버전: 3.3.0 이상
    • python-json-logger는 PyPI 기준 월 4600만 다운로드 이상인 인기 패키지로, 로그 기반 JSON 출력 포맷에 광범위하게 활용되고 있음
  • PoC(개념검증) 및 공격 시나리오
    • msgspec-python313-pre라는 삭제된 패키지 이름을 제3자가 등록
    • 해당 이름을 포함한 개발 환경에서 python-json-logger[dev] 설치 시, 악성 코드가 포함된 패키지가 자동 설치됨
    • 결과적으로 원격 코드 실행(RCE)이 가능하며, 시스템 권한 획득이나 악성 행위 가능성 있음
  • 보안 권고
    • 모든 사용자 및 개발자는 즉시 다음 명령어로 최신 버전으로 업데이트 필요
      pip install --upgrade python-json-logger
    • 프로젝트 내 모든 의존성과 개발옵션 의존성을 수시로 검토 및 갱신
    • 삭제된 패키지명이 남아있을 경우, 이름 탈취(name squatting) 방지를 위한 PyPI 네임 예약 조치 필요
  • 결론
    • 삭제된 의존성 패키지명을 공격자가 재등록하는 공격 기법은 여전히 유효
    • 보안 담당자 및 개발자는 다음 항목에 주의 필요
      • 의존성 관리 자동화 도구(예: pip-audit, safety-cli 등) 도입
      • CI/CD에서 개발 의존성 포함 시 외부 패키지 리포지터리 접근 제한
      • 사내 패키지 미러링 환경 구축을 통한 PyPI 통제
    • PoC가 이미 공개된 상황으로, 업계 전반에 걸친 보안 관리 강화를 요구
    • 오픈소스 생태계에서 삭제된 의존성 패키지의 재등록은 공급망 공격(Supply Chain Attack)의 대표적인 수단
    • 해당 사례는 "개발용 패키지에만 적용된 의존성이라도 전체 프로젝트의 보안에 치명적 영향을 미칠 수 있다"는 사실을 상기시킴
    • 모든 프로젝트는 의존성 주기적 점검 및 패치 전략 수립, 보안 CI/CD 환경 강화, 취약성 탐지 자동화가 필수적임