파이썬 SW 저장소 PyPi, ‘악성 패키지의 소굴?’

파이썬 SW 패키지 위장 ‘악성코드’ 숨겨, 다운로드 유도 개발자들 고품질 오픈소스로 착각, 무심코 ‘악성코드’ 내려받아 ‘파이썬’ 철자 흉내 ‘pystob’, ‘Pyston’ 등 사이비 패키지도 극성

2024-06-14     이윤순 기자
악성코드로 감염된 상황을 시사하는 화면. (출처=게티이미지)

[애플경제 이윤순 기자] 파이썬으로 된 SW저장소인 PyPi(Python Package Index, 파이썬 패키지 인덱스)가 자칫 악성 코드의 전파 기지가 되고 있다는 경고다. 이곳에 업로드된 파이썬 패키지 중엔 악성 코드를 숨기고있어 자칫 파이썬 SW가 필요한 개발자들이 이를 무심코 다운로드했다가 본인과 회사가 곤욕을 치르는 경우가 많다.

날이 갈수록 PyPi 다운로드에 의한 악성코드 피해 사례가 늘어나면서 각국의 보안업계와 전문가들을 그 위험성과 폐해를 적극 알리고 있다. 보안 전문가들에 의하면 AI나 기계 학습, 암호화 프로젝트를 수행하는 파이썬 개발자는 보안 회사가 PyPI에 업로드된 악성 패키지가 포함된 사이버공격 시도를 꼼꼼히 확인한 후, 오픈소스 패키지를 신중히 선택할 필요가 있다.

PyPI는 개발자가 다른 사람들이 만들고 공유한 오픈소스 소프트웨어를 찾아 활용할 수 있는 파이썬용 소프트웨어 저장소다. 그러나 사이버공격자들은 이곳 저장소를 악성 실행 파일을 전달하는 수단이나 공격 기지로 악용하고 있다.

악성파일 전파 기지로 PyPi를 악용

최근 글로벌 보안업체인 소나타입(Sonatype)도 자체 조사를 통해 이를 강력히 경고하고 있다. 이 회사는 최근 “몰래 정보를 엿보거나 암호화해서 빼낼 수 있는‘트로이 목마’ 윈도우 바이너리를 다운로드하고 설치하는 숨겨진 악성 코드 패키지 발견했다”고 밝혔다. 더욱이 이들 악성 코드는 이미 근래 몇 달에 걸쳐 진행되어온 대규모 사이버공격의 일부인 패키지에 연결되어 있어 더욱 우려를 낳고 있다. 다시 말해 “이미 PyPi를 통해 다운받은 악성코드로 인해 이미 광범위하게 사이버공격이 행해지고 있을 가능성이 크다”는 것이다.

이 회사의 맬웨어 탐지 엔진은 특히 ‘pytoileur’라는 새로 게시된 PyPI 패키지를 의심, 이를 경고하는 플래그를 지정했다. 이 패키지는 게시 전날과 PyPI 관리자가 삭제하기 전까지 무려 200회 이상 다운로드되었다.

악성으로 의심되는 이 패키지는 스스로를 ‘멋진 패키지’라고 부르고 있다. 또한 메타데이터에는 “파이썬으로 작성된 API 관리 도구”라고 선전하는 HTML 웹페이지 설명이 포함되어 있다. 또 PyPi에서 ‘pystob’라고 부르는 패키지도 조심해야 한다. 이는 마치 파이썬(Python)과 유사한 철자를 쓰는 ‘Pyston’처럼 사용자들을 헷갈리게 하는 사이비 패키지라는 설명이다.

‘소나타입’사는 또 패키지 중에 “외부 서버에서 악성 실행 파일을 검색하는 ‘base64’로 인코딩된 페이로드를 실행하라”는 명령을 발견했다. 이 패키지 역시 경계의 대상이다. 이는 의심스러운 실행 파일을 추가로 삭제하고, 윈도우 레지스트리 설정을 수정하면서 이전에 스파이웨어로 식별된 페이로드를 배포하는 것이다.

또 윈도우 바이너리 중 하나는 정보 도용 및 크립토재킹(암호탈취) 기능이 포함되어 있었다. 이를 통해 구글 크롬이나 브레이브(Brave), 파이어폭스(Firefox)와 같은 일반적인 웹 브라우저에 저장된 사용자 프로필과 데이터를 유출하려 한다. 또 바이낸스, 코인베이스, 엑소더스 월렛, 페이팔, 페이오니어(Payoneer), 페이세이프카드(PaySafeCard)와 같은 핀테크나, 암호화 서비스 자산에 액세스하려고 시도하기도 한다.

API관리도구 위장, 감염파일 다운로드 유도

그 중엔 개발자로 하여금 악성 패키지를 다운로드하도록 유도하려는 시도도 발견되었다. 이는 ‘디버깅’ 도움을 구하는 개발자에게 패키지를 추천하기도 한다. 또 개발자가 게시한 질문과 관련이 없음에도 불구하고, 새로 스택 오버플로 사용자 계정을 만들어 문제에 대한 솔루션인양 악성 패키지를 제공하는 수법도 등장했다.

전문가들은 이 역시 대규모 사이버공격의 일부일 가능성이 클 것으로 본다. 작년에도 어느 PyPI 사용자(사실상 동일한 사용자)가 ‘Cool 패키지’라는 약식 메타데이터 설명을 사용하고, 동일한 전술을 많이 사용하는 여러 패키지를 게시한 적이 있는 것으로 밝혀졌다.

사이버공격 이미지.(출처=사이버레디)

심지어는 개발자들이 ‘파이썬으로 작성된 API 관리 도구’라고 철석같이 믿었던 것도, 실상은 유사한 구조를 가진 URL에서 트로이 목마에 감염된 윈도우 바이너리를 다운로드한 경우도 많았다. 또한 AI 애플리케이션을 구축하는 개발자를 대상으로 한 사이버공격과 관련 된 패키지도 나타났다. 다만 여기에는 앞서 발견된 ‘Pytoileur’와 마찬가지로 공백을 사용하여 ‘숨겨진 base64’로 인코딩된 페이로드 수법이 추가되었다.

이러한 PyPI의 악성 패키지 중엔 보통의 파이썬 텍스트 코드로 작성된, 각기 다른 명칭을 붙인 모듈도 여럿이다. 그 하나하나가 각기 다른 사이버공격 수법과 대상을 지칭하는 것이다. 예를 들어 ‘클립보드’나, ‘웹캠’과 같은 명칭은 대체로 클립보드 하이재킹, 지속성 달성, 키로거(절도) 배포, 원격 웹캠 액세스, 보안 및 공격자를 위한 스크린샷 캡처를 시도하도록 설계된 것들이다. ‘소나타입’은 “이처럼 해킹과 관련되었을 가능성이 있는 의심스러운 패키지를 20개 이상이나 발견해냈다”고 한다.

주의 소홀한 개발자들 ‘해킹’의 손쉬운 먹잇감

그러나 고품질의 패키지를 다운로드하는 것만 중시하며, 주의를 소홀히하는 개발자들을 노리는 해킹도구는 그 뿐만이 아니다. ‘crytic-compilers’ PyPI 패키지의 경우 암호화폐 개발자가 사용하는 잘 알려진 합법적인 파이썬 라이브러리의 이름과 유사하다. 파이썬 라이브러리를 위조한 이 패키지는 최근까지 무려 436개나 되는 다운로드 기록을 세운 것으로 드러났다.

이는 또 월간 다운로드 수가 17만회가 넘는 실제 인기 라이브러리의 버전 번호와 일치하도록 설계되었다. 다만 “실제 라이브러리의 최신 버전은 0.3.7에서 멈추는 반면, 위조된 ‘crytic-compilers’ 버전은 0.3.11에서 끝난다. 이는 좀더 최신 버전이라는 인상을 주기에 충분하다”는 얘기다. 그래서 이런 가짜 버전은 개발자가 프로젝트를 완료하는 데 도움을 주기보다는 암호화폐 지갑을 터는게 목적이다. 실제로 지난 2월 일본의 컴퓨터 비상대응팀 조정센터가 “북한 해커들이 이런 종류의 악성 파이썬 패키지를 업로드했다”고 경고한 것도 그런 사례다.