PyPI 리포지터리에 악성 라이브러리 등록
python3-dateutil, jeIlyfish (dateutil, jellyfish 라이브러리를 변조)
SSH/GPG 키를 해킹해 http://68.183.212.246:32258로 전송
해당 라이브러리 사용했다면 1년간 쓴 SSH/GPG 변경할 것
2019년 12월 4일, 악성 파이썬 라이브러리 주의보

2019년 12월 첫째 주 소식을 전합니다.
파이썬 보안 팀은 악성 변조(트로이잔)를 당한 파이썬 라이브러리 2개를 PyPI( Python Package Index)에서 제거했다고 밝혔습니다. 이 파이썬 라이브러리들은 설치된 컴퓨터에 있는 개발 프로젝트에서 SSH와 GPG키를 빼돌려 특정 IP로 전송하는 것으로 알려졌습니다.
“python3-dateutil,” “jeIlyfish” 라는 이름을 가진 이 두 라이브러리는 이름에서 알 수 있듯이 “dateutil,” “jellyfish“라는 두 유명한 파이썬 라이브러리의 이름을 흉내내거나 비틀어 (typosquatting) 만든 라이브러리로서 둘 다 olgired2017라는 아이디를 가진 개발자(PyPI 및 GitLab 계정명)에 의해 제작/배포 되었습니다.
이 두 악성 클론 라이브러리들은 2019/12/1 일요일에 독일 개발자인 루카스 마티니( Lukas Martini )에 의해 발견되었고, 그 다음날인 12/2에 루카스가 dateutil 개발자들과 PyPI 보안팀에 이를 리포팅하면서 모두 PyPI 리포지터리에서 삭제되었습니다.
python3-dateutil은 2019년 11월 29일에 PyPI에 생성, 업로드된 반면, 놀랍게도 jeIlyfish는 2018년 12월 11일에 업로드되어 약 1년 간 사용자들에게 배포되어 왔었습니다.

SSH와 GPG키를 해킹
루카스에 따르면 이 악성코드는 jeIlyfish 라이브러리에만 존재하고, python3-dateutil 라이브러리는 이 jeIlyfish 라이브러리를 임포트(import)하는 방식으로 악성코드를 작동시킨다고 합니다.
이 악성코드는 해쉬 리스트를 GitLab 리포지터리에서 다운받아 읽는다고 알려졌고 이 해쉬들의 특징, 목적을 알기 위해서는 더 자세한 조사가 필요했습니다.
ZDNet은 dateutil 개발팀원인 폴 갠슬(Paul Ganssle)씨에게 이 악성 코드를 더 자세히 살펴볼 것을 부탁했고 아래와 같은 답변을 얻을 수 있었습니다.
“jeIlyfish 라이브러리 안에 있는 악성 코드는 hashsum이라는 별 의미 없어 보이는 파일을 깃랩 리포지터리에서 다운받습니다. 그리고 이 파일을 복호화하여 파이썬 파일로 바꾼다음 이를 실행합니다.” (실행가능한 파이썬 스크립트 파일인 **.py 형태로 바꾸는 것으로 추측됨 – 블로그 역자 주)
“이 파이썬 파일은 사용자 컴퓨터에서 SSH와 GPG 키 파일을 빼돌린 다음 이를 http://68.183.212.246:32258 주소로 전송하는 것으로 보입니다.”
“또 이 파일은 몇몇 디렉토리를 찾아서 저장해놓는 것으로 보입니다. 홈 디렉토리(/home 으로 보임 – 역자 주), 파이참(PyCharm) 프로젝트 디렉토리 같은 곳 말이죠.”
“이들 디렉토리 패쓰를 저장해놓는 이유는 제 추측에는 자격 증명(credentials)이 필요한 프로젝트는 어떤 프로젝트들인지 탐색하기 위해서로 보입니다. 그리고 나서 해커가 사용자의 프로젝트를 해킹하려고 하는거죠.”
파이썬 개발자 분들은 지금 당장 파이썬 프로젝트를 체크해보세요!
olgired2017라는 해커가 dateutil 클론을 만든 이유는, 오리지날 dateutil 라이브러리의 유명세를 빌려 감염률을 높이고 금전적 이윤을 얻기 위함으로 보입니다. 하지만 역으로 매우 유명한 라이브러리의 이름을 빌렸기 때문에 오히려 개발자들의 많은 주시를 받게 되어 해킹 활동이 모두 발각되어 버렸습니다.
두 라이브러리 내에 심어진 악성코드를 제외하면 두 라이브러리는 오리지날 라이브러리와 동일합니다.
파이썬 개발자분들은 다운로드 또는 임포트한 라이브러리를 꼭 체크하셔서 사용해왔던 패키지가 정확한 패키지 이름을 가지고 있는지 꼭 확인하셔야 합니다.
만약 변조된 패키지를 사용한 흔적을 찾으셨다면 지난 1년 간 사용해왔던 SSH 및 GPG 키를 모두 삭제하시길 권장합니다.
이러한 악성 패키지가 발각된 것은 처음이 아니며 PyPI팀이 패키지 이름을 변조한 악성 패키지를 적발해 공식 리포지터리에서 제거한 것은 이번이 6번째입니다.
유사 사례 링크: 2017년 10월 (10개 패키지), 2018년 5월 (1개 패키지), 2018년 10월 (12개 패키지), 2018년 12월 (18개 패키지), 2019년 6월 (3개 패키지).






