악성 파이썬 패키지 23개 또 발견...바이오·AI 개발자 노린 공급망 공격, 네이티브 확장·경로 탐색으로 수법 진화...소켓 "감염 흔적 471개로 늘어, 토큰 즉시 교체해야"
소켓이 개발자를 노린 악성 파이썬 패키지 23개를 새로 찾아냈다.
[한국정보기술신문] 소프트웨어 공급망 보안 업체 소켓(Socket)이 개발자를 표적으로 삼은 악성 파이썬 패키지 23개를 새로 찾아냈다고 밝혔다. 이번에 확인된 패키지들은 '미니 샤이훌루드(Mini Shai-Hulud)', '미아스마(Miasma)', '하데스(Hades)'로 불리는 일련의 공급망 공격 활동과 연결돼 있다. 소켓 위협연구팀은 지난 주말 보고서에서 다룬 악성 파이썬 휠(wheel) 파일 37개에 더해, 공격자들이 전달 방식과 패키지 위장 수법을 빠르게 바꿔 가며 공격을 이어 가고 있다고 설명했다.
공급망 공격이란 소프트웨어를 만들 때 가져다 쓰는 외부 부품, 즉 오픈소스 패키지에 악성 코드를 숨겨 넣어 이를 내려받은 개발자의 컴퓨터까지 한꺼번에 감염시키는 수법을 말한다. 파이썬(Python) 개발자들은 'PyPI'라는 공개 저장소에서 필요한 코드 묶음을 내려받아 쓰는데, 공격자들은 바로 이 통로를 노렸다. '휠'은 파이썬 패키지를 설치하기 쉽게 묶어 둔 파일 형식이고, 소스 코드뿐 아니라 미리 컴파일된 실행 파일까지 담을 수 있다.

바이오·인공지능 개발자를 정조준
이번에 새로 확인된 패키지들은 표적 선정이 한층 정교해진 점이 특징이다. 소켓에 따르면 새 묶음에는 생명정보학(바이오인포매틱스) 분야 패키지 6종이 포함됐다. 'embiggen', 'ensmallen', 'gpsea', 'phenopacket-store-toolkit', 'ppkt2synergy', 'pyphetools' 등으로, 모두 그래프 학습이나 환자 표현형 분석처럼 실제 과학 연구 현장에서 쓰이는 패키지다. 공격자들이 정상적으로 널리 쓰이는 연구용 패키지의 악성 버전을 만들어 끼워 넣은 것이다.
여기에 인공지능(AI)과 MCP 관련 패키지도 다수 포함됐다. MCP는 AI 모델이 외부 도구·데이터와 주고받도록 연결해 주는 규격으로, 최근 개발자들이 활발히 쓰는 영역이다. 'openai-mcp', 'tiktoken-mcp', 'langchain-core-mcp' 등이 이 부류에 속한다. 이 밖에 널리 쓰이는 정상 패키지의 이름을 살짝 비틀어 오타를 노린 'rsquests', 'tlask', 'rlask' 같은 패키지도 발견됐다. 정상 패키지 이름인 'requests'나 'flask'를 잘못 입력한 개발자가 실수로 악성 패키지를 설치하도록 유도하는, 이른바 '타이포스쿼팅' 수법이다.
소켓은 이번 발견으로 해당 공격 활동에서 확인된 감염 흔적이 모두 471개로 늘었다고 밝혔다. 이는 npm 저장소의 106개 패키지에 걸친 411개 흔적과 PyPI 저장소의 37개 패키지에 걸친 60개 흔적을 합친 수치다. 소켓은 별도 추적 페이지를 통해 새로 확인되는 흔적을 계속 갱신하고 있다고 덧붙였다.
세 갈래로 갈라진 공격 전달 방식
소켓은 이번 공격이 한 가지 수법을 반복하는 것이 아니라 적어도 세 갈래의 전달 방식으로 갈라져 있다고 분석했다.
첫째는 파이썬의 시작 동작을 악용하는 방식이다. 악성 휠 파일 안에 'setup.pth'라는 특수 파일과 난독화된 자바스크립트 파일 '_index.js'가 함께 들어 있다. 파이썬이 실행될 때 이 'pth' 파일이 자동으로 작동해 자바스크립트 실행기인 '번(Bun)'을 내려받은 뒤 숨겨진 악성 코드를 실행한다. 지난 주말 보고서에서 다룬 방식이 여기에 해당한다.
둘째는 컴파일된 실행 파일에 악성 코드를 숨기는 방식으로, 앞서 언급한 생명정보학 패키지들이 이 방법을 썼다. 소켓에 따르면 이 경우 눈에 보이는 파이썬 소스 코드는 멀쩡해 보이지만, 함께 들어 있는 '.abi3.so' 확장 파일 안에 악성 실행 경로가 숨어 있다. 파이썬이 해당 패키지를 불러올 때 이 확장 파일이 작동하면서 악성 코드가 함께 실행된다. 소켓은 많은 보안 점검 과정이 파이썬 소스 코드 위주로 검사하기 때문에, 컴파일된 확장 파일은 상대적으로 덜 들여다보는 점을 공격자들이 노렸다고 지적했다. 특히 유전체 분석이나 기계학습처럼 성능을 위해 컴파일된 코드를 흔히 쓰는 분야에서는 큰 확장 파일이 있어도 의심받기 어렵다는 것이다.
셋째는 'langchain-core-mcp' 패키지에서 확인된 변형 방식이다. 이 패키지에는 악성 코드를 실행할 'pth' 파일은 들어 있지만 정작 실행 대상인 '_index.js' 파일은 들어 있지 않다. 대신 이 파일을 파이썬이 패키지를 찾는 모든 경로에서 뒤져 찾아내도록 만들어졌다. 소켓은 이 방식이 코드를 실행시키는 부분과 실제 악성 코드를 서로 다른 곳에 떼어 놓는 구조여서, 둘이 같은 파일 안에 있을 것이라고 가정하는 탐지 규칙을 피해 갈 수 있다고 분석했다. 소켓은 이 사례가 공격자가 미완성으로 올린 것일 수도, 두 패키지를 짝지어 한쪽이 실행기, 다른 쪽이 악성 코드를 맡도록 시험하는 것일 수도 있다고 보면서도, 어느 쪽이든 정상 패키지라면 하지 않을 악성 동작이라는 점은 분명하다고 강조했다.
개발자 자격증명·클라우드 비밀번호가 표적
세 방식 모두 최종적으로는 같은 계열의 악성 코드를 실행한다. 소켓에 따르면 이 코드는 한번 작동하면 개발자의 작업용 컴퓨터와 자동 빌드·배포 환경에서 값나가는 비밀 정보를 훔쳐 낸다. 깃허브, npm, PyPI 등 코드 저장소의 인증 토큰을 비롯해 클라우드 접속 정보, 서버 접속에 쓰는 SSH 키, 환경설정 파일(.env), AI 개발 도구의 설정 정보 등이 모두 표적이다. 소켓은 특히 자동 빌드·배포 환경이 위험하다고 봤다. 이곳에서 토큰 하나만 새어 나가도 공격자가 또 다른 악성 패키지를 배포하거나 운영 시스템에 가까운 영역까지 접근할 수 있기 때문이다.
눈에 띄는 점은 이 악성 코드가 AI 기반 보안 검사를 방해하도록 설계됐다는 것이다. 소켓에 따르면 '_index.js' 파일은 맨 앞에 가짜 시스템 지시문이 담긴 긴 주석으로 시작한다. 주석은 프로그램 실행에는 아무 영향을 주지 않지만, 파일 앞부분을 그대로 AI 언어모델에 넘겨 분석하는 허술한 검사 시스템을 겨냥한 것이다. AI가 이 가짜 지시문에 휘둘려 분석을 거부하거나 엉뚱한 판단을 내리도록 유도하려는 의도다. 다만 소켓은 이것이 만능 우회책은 아니며, 패턴 기반 탐지 규칙이나 코드 구조 분석 같은 기존 방식은 여전히 유효하다고 선을 그었다. AI에만 의존하는 1차 분류 체계를 노린 실전적 회피 술책일 뿐이라는 설명이다.
소켓은 방어 방법으로 우선 해당 패키지 버전을 쓰고 있는지 점검하고, 노출됐을 가능성이 있는 토큰을 즉시 새것으로 교체할 것을 권고했다. 또 파이썬 환경에서 실행되는 'pth' 파일이나 예상치 못한 '_index.js' 파일, 번 다운로드 흔적, 새로 들어온 '.abi3.so' 확장 파일이 없는지 살펴야 한다고 안내했다. 자동 빌드·배포 환경에서는 작업 흐름이 임의로 바뀌었는지, 권한이 과도한 컨테이너가 생겨났는지 등을 함께 확인하라고 덧붙였다. 이번 분석은 소켓 위협연구팀이 6월 8일 공개한 것으로, 분석 주체가 보안 업체인 만큼 향후 다른 연구기관의 교차 검증이 이어질지는 지켜볼 대목이다.
한국정보기술신문 정보보안분과 오상진 기자 news@kitpa.org






![[백준 서비스 종료 ⑫] 데이원컴퍼니, 같은 날 'BOJ 부활'과 '개인정보 유출' 동시에...코딩 테스트 명소 백준 온라인 저지 되살리며 보안 사고로 신뢰 시험대](/_next/image?url=https%3A%2F%2Fkitpa.org%2Fstorage%2F102aa3a4-5f5e-46cf-a247-43636a0c3ec9.png%23w%3D667%26h%3D282&w=750&q=75)




