처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.03.28 35

PyPI에서 Telnyx 패키지가 탈취됐습니다: 파이썬 공급망 공격, 남의 일이 아니에요

Hacker News 원문 보기
PyPI에서 Telnyx 패키지가 탈취됐습니다: 파이썬 공급망 공격, 남의 일이 아니에요

또 터진 PyPI 공급망 공격

파이썬 개발자라면 pip install을 매일 쓰실 텐데요. 이번에 통신 API 서비스인 Telnyx의 공식 파이썬 SDK 패키지가 PyPI에서 탈취(compromise)되는 사건이 발생했어요. 공급망 공격이라는 게 뭐냐면, 우리가 믿고 설치하는 공식 패키지 자체에 악성 코드가 심어지는 걸 말해요. 가짜 패키지를 만드는 타이포스쿼팅과는 달리, 진짜 패키지가 오염되니까 훨씬 위험하죠.

Telnyx는 Twilio와 비슷한 통신 API 서비스인데, SMS 발송이나 전화 기능을 구현할 때 쓰는 서비스예요. 그 공식 파이썬 SDK가 PyPI에서 변조됐다는 건, 이 패키지를 의존성으로 쓰는 모든 프로젝트가 잠재적으로 위험에 노출됐다는 뜻이거든요.

무슨 일이 있었나

Telnyx 측의 보안 공지에 따르면, PyPI에 올라가 있는 Telnyx 파이썬 SDK 패키지에 권한 없는 변경이 가해졌어요. 쉽게 말해서 누군가 패키지 관리 계정을 탈취하거나 빌드 파이프라인에 침투해서, 정상적인 패키지에 악성 코드를 끼워넣은 거예요.

이런 공격이 무서운 이유는, 개발자 입장에서는 평소처럼 pip install telnyx를 했을 뿐인데 악성 코드가 딸려오기 때문이에요. 패키지 이름도 정상이고, PyPI 페이지도 정상이고, 심지어 대부분의 기능도 정상적으로 동작하거든요. 악성 코드는 보통 설치 시점이나 특정 함수 호출 시에 몰래 실행되면서 환경 변수(API 키, 데이터베이스 비밀번호 등)를 외부 서버로 빼돌리는 방식으로 작동해요.

파이썬 공급망 공격의 반복되는 패턴

사실 이건 처음 있는 일이 아니에요. PyPI를 대상으로 한 공급망 공격은 최근 몇 년간 계속 늘어나고 있거든요. 2024년에는 ultralytics 패키지가 비슷하게 탈취된 적이 있고, ctx 패키지 사건도 있었어요. npm 생태계에서도 event-stream, ua-parser-js 같은 유명 패키지가 탈취된 전력이 있고요.

공격 경로는 보통 몇 가지 패턴이에요. 첫째, 메인테이너의 PyPI 계정이 피싱이나 크리덴셜 스터핑(다른 사이트에서 유출된 비밀번호를 돌려쓰는 것)으로 탈취되는 경우. 둘째, CI/CD 파이프라인의 토큰이 유출되는 경우. 셋째, 패키지의 빌드 과정 자체가 오염되는 경우예요.

PyPI도 이에 대응해서 2024년부터 주요 패키지에 2단계 인증(2FA)을 의무화하고, Trusted Publishers 같은 메커니즘을 도입했는데요. 이건 GitHub Actions 같은 CI 환경에서 토큰 없이도 안전하게 패키지를 발행할 수 있게 해주는 기능이에요. 하지만 아직 모든 패키지가 이런 보안 장치를 갖추고 있진 않은 상황이에요.

npm, Go, Rust 생태계와 비교하면

재미있는 건 각 언어 생태계마다 공급망 보안에 대한 접근이 조금씩 다르다는 점이에요. npm은 package-lock.json으로 정확한 버전을 고정하고, npm audit 명령어로 알려진 취약점을 검사할 수 있어요. Go는 go.sum 파일로 의존성의 체크섬을 검증하고, 모듈 프록시를 통해 변조를 방지하죠. Rust의 cargo도 비슷한 체크섬 검증을 해요.

파이썬은 상대적으로 이 부분이 느슨한 편이었는데요. pip에는 기본적인 해시 검증 기능이 있긴 하지만, 대부분의 프로젝트에서 잘 쓰지 않거든요. requirements.txt에 버전만 고정하고 해시는 생략하는 경우가 많죠.

당장 할 수 있는 방어 방법

이런 사건을 보면 불안해지실 수 있는데, 실무에서 바로 적용할 수 있는 방어 방법이 몇 가지 있어요.

먼저 의존성 버전을 정확하게 고정하세요. telnyx>=2.0 대신 telnyx==2.1.0처럼 정확한 버전을 지정하고, 가능하면 해시까지 고정하는 거예요. pip-compile이나 poetry.lock 같은 도구를 쓰면 편하게 관리할 수 있어요.

그 다음 Dependabot이나 Renovate 같은 의존성 업데이트 도구를 설정해두세요. 새 버전이 나올 때 자동으로 PR을 만들어주니까, 어떤 변경이 있었는지 리뷰할 기회가 생겨요.

프라이빗 패키지 레지스트리를 쓰는 것도 좋은 방법이에요. 회사에서 Artifactory나 AWS CodeArtifact 같은 프라이빗 레지스트리를 운영하면, 검증된 패키지만 허용 목록에 올려놓고 쓸 수 있거든요.

마지막으로 CI 환경에서 pip-audit 같은 도구를 돌려서 알려진 취약점이 있는 패키지가 설치되지 않게 체크하는 것도 추천드려요.

정리하면

pip install 한 줄이 프로젝트 전체의 보안 구멍이 될 수 있다는 걸, 이번 Telnyx 사건이 다시 한번 보여줬어요. 의존성 관리는 귀찮지만, 한번 뚫리면 돌이키기 어려운 영역이니까요.

여러분의 프로젝트에서는 의존성 보안을 어떻게 관리하고 계신가요? requirements.txt에 해시 고정까지 하고 계신 분이 있다면, 실제로 운영하면서 느낀 점이 궁금해요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.