파이선 리포지터리 PyPI에서 고급 악성 패키지 발견돼

파이선 리포지터리 PyPI에서 고급 악성 패키지 발견돼
Photo by Hitesh Choudhary / Unsplash
💡
Editor's Pick
- soopsocks라는 악성 패키지, 2600번 다운로드 돼
- SOCKS5 프록시 생성 후 여러 악성행위 실시
- 공공 리포지터리의 안전한 활용 위한 대책 도입 시급

파이선 생태계의 코드 리포지터리인 PyPI에서 악성코드가 유포되고 있다는 사실이 발견됐다. 이번 악성 패키지는 일종의 백도어 기능을 가지고 있다고 한다. SOCKS5 프록시 서비스를 생성하고, 추가 페이로드를 다운로드 해 설치할 수 있다. 이 패키지의 이름은 soopsocks이며, 현재까지 2600번 이상 다운로드 됐다. 업로더는 수달파이(soodalpie)라는 인물이다.

악성 패키지의 특성
악성 패키지를 제일 먼저 발견한 보안 업체 제이프로그(JFrog)는 “해당 패키지는 윈도 환경을 대상으로 하며, 다운로드 받아 실행할 경우 자동 설치 과정을 통해 백도어 프록시 서버 역할을 하도록 만들어져 있다”고 설명한다. 그 최초 실행을 위한 실행파일은 고(Go) 언어로 컴파일링 되어 있다. 다음과 같은 기능들을 가지고 있다.

1) SOCKS5 프록시 서비스를 생성한다
2) 파워셸 스크립트를 실행한다
3) 방화벽 규칙을 설정한다
4) 권한을 상승시킴으로써 스스로 재실행하도록 설정을 바꾼다
5) 인터넷 익스플로러의 보안 설정을 알아낸다
6) 윈도 설치 날짜를 알아낸다
7) 기본 시스템 및 네트워크 정보를 빼돌린다
8) 수집한 모든 정보를 디스코드(Discord)를 통해 유출한다

2)번 과정에서 실행되는 파워셸 스크립트는, 또 다른 배치 스크립트를 호출하여 파이선 패키지가 실행되게 한다. 실행된 파이선 패키지는 순차적으로 권한을 상승시키며, UDP와 TCP 통신을 1080 포트를 통해 허용하는 방화벽 규칙을 새롭게 구성한다. 또한 디스코드와의 통신망을 연결해 유지하고, 호스트에서 작업 스케줄을 조작함으로써 공격 지속성을 확보한다. 

제이프로그는 이러한 soopsocks 패키지에 대해 이렇게 설명한다. “정교하고 치밀하게 설계된 SOCKS5 프록시입니다. 또한 여러 가지 악성 행위를 고루 갖추고 있기도 합니다. 누군가 단순 프록시를 넘어, 악성 행위를 철저하게 계획하여 만들어낸 것으로 추정됩니다.”

공공 리포지터리들을 어떻게 해야 하나
PyPI뿐만 아니라 NPM과 깃허브(GitHub) 등 각종 리포지터리들이 해커들의 집중 공략을 받고 있다. 여기에 스리슬쩍 악성 패키지를 만들어 올리기만 해도 개발자들이 가져가고, 가져간 것을 가지고 각종 애플리케이션을 개발한다. 그러면 다량의 악성 애플리케이션이 자동으로 만들어지고, 사용자들에게로 퍼져간다. 패키지 하나 업로드하면 여러 사람들이 한꺼번에 감염된다는 게 이런 ‘리포지터리 감염 공격’의 가장 큰 장점이다.

이는 리포지터리의 주요 사용자인 개발자들이 다운로드 받은 패키지를 사용하기 전에 검사만 몇 번 해도 근절시킬 수 있는 문제다. 그렇다고 개발자의 안일한 보안 인식만 탓할 수도 없다. ‘속도’가 최고의 미덕인 개발 환경 상 모든 패키지를 하나하나 점검한다는 건 쉬운 일이 아니기 때문이다. 그래서 리포지터리 및 오픈소스를 활용한 개발 방법론과, 속도를 중시하는 기업들의 출시 경쟁 문화가 상극이라는 분석도 나오고 있다.

리포지터리의 안전한 활용에 대한 방법론 중 일반적으로 통용되는 것은 다음과 같다.
1) 거버넌스와 자산 파악/총망라 : 어떤 패키지가 사용되고 있는지 정확히 파악하는 게 모든 보안 점검보다 선행돼야 한다. 또한 소프트웨어 물자표(SBOM)를 작성 및 유지하는 체계도 정착시켜야 한다.

2) 패키지 무결성 확인 : 패키지 서명 제도를 도입하는 등, 패키지의 무결성을 확인하고 유지하기 위한 시스템이 갖춰져야 한다. 서명된 아티팩트만 배포 과정에 허용하도록 한다면 큰 도움이 될 수 있다.

3) 리포지터리 계정 보호 : 리포지터리에 각종 패키지를 올리고 퍼블리시 할 수 있는 계정들은 다중인증 등을 기본으로 해야 한다. 또한 각 기업들도 이런 계정들을 엄격히 관리할 필요가 있다.

4) 의존성 관리 정책 수립 : 애플리케이션 개발을 위해 여러 오픈소스나 코드를 가져다 쓰기 때문에, 각 요소들은 상호 의존을 할 수밖에 없다. 이를 ‘의존성’이라고 하는데, 요즘 소프트웨어들은 이런 의존성들이 그물처럼 빽빽하게 얽혀있다. 그래서 관리를 못하게 되는데, 이 지점을 취약점 하나가 파고들면 재앙과 같은 사태가 발생한다. 따라서 의존성 스캔과 관리를 효과적으로 하는 방법을 개발해야 한다.

5) 패키지 설치 시 위험 줄이기 : 런타임과 빌드 환경을 격리시켜서 실행 스크립트가 안전하게 돌아가도록 꾀해야 한다. 실제 상품 개발과 배포 환경에 새로운 코드를 무작정 실행시키는 건 매우 위험한 일임을 기억하는 게 중요하다. 

6) 개발자 교육 : 시스템과 상업적 환경의 영향(압박)을 심하게 받는 게 현재 개발자들이긴 하지만, 그렇다고 개발자 개개인에 대한 보안 훈련의 필요성이 간과되어서는 안 된다. 내가 다운로드 받은 스크립트 안에 뭐가 있을 지 모른다는 찜찜함이 본능처럼 개발자들 안에 자리를 잡는다면, 개발을 통한 결과물이 더 안전해질 수 있다.


파이선 리포지터리 PyPI에 대한 신뢰 악용한 피싱 기승
💡Editor’s Pick - PyPI 이용한 피싱 공격이 활발 - PyPI 측에서 직접 경고 - 크리덴셜 탈취가 궁극적 목표 파이선 개발자들을 위한 공공 리포지터리인 PyPI에서 보안 경고을 띄웠다. 가짜 PyPI 사이트로 개발자들을 유도하는 피싱 공격이 활발히 진행 중이라는 내용이다. PyPI 관리자들이 사용자들에게 보낸 경고 이메일에 따르면 공격은 피싱 메일로부터 시작한다고 하며,
NPM 패키지에서 악성 웜 빠르게 퍼지고 있어
💡Editor’s Pick - 9월 중순에 갑자기 등장한 웜 - 자가 증식으로 빠르게 퍼지며 비밀 탈취 및 공개 - 개발자들에게 경고하는 속도보다 확산 속도 더 빨라 새로운 컴퓨터 웜이 NPM에서 발견됐다. 누군가 개발자들을 노린 공급망 공격을 시도한 것으로 보인다. 보안 업체 리버싱랩스(ReversingLabs)가 제일 먼저 발견해 세상에 알렸다. “웜의 이름은

Read more

다보스포럼에서의 인공지능: ROI와 보안

다보스포럼에서의 인공지능: ROI와 보안

💡Editor's Pick - 다보스포럼 분위기 휘어잡은 주제, 인공지능 - 특히 투자금 회수와 보안에 대한 경고 가득 - 젠슨 황은 "물리적 인공지능의 시대 열릴 것" 예언 스위스에서 열리는 세계경제포럼(일명 다보스포럼)에서 인공지능이 화제의 중심에 섰다. 특히 인공지능의 수익성과 보안 문제가 대두됐다. 최근 ‘인공지능 거품론’이 떠오르고

By 문가용 기자
유럽연합의 사이버보안법 개정안: 공급망, ENISA, 독자 인증

유럽연합의 사이버보안법 개정안: 공급망, ENISA, 독자 인증

💡Editor's Pick - EU, 2019년의 사이버보안법 강화 시도 시작 - ENISA의 역할 강화하고 인증 체계 마련에 속도 붙여 - 단일 제품과 서비스를 넘어 공급망까지 확인하겠다는 내용 유럽연합 집행위원회가 기존 사이버보안법을 강화하기 위한 절차를 밟기 시작했다. 기존 법 조문을 유지하면서 새로운 내용을 덧붙이겠다는 것으로, 현재까지 개정안의 초안이 나와 제안서까지

By 문가용 기자
바이브 코딩, 시한폭탄을 축적하는 것과 같다

바이브 코딩, 시한폭탄을 축적하는 것과 같다

💡Editor's Pick - 개발자들을 편리하게 해 주는 인공지능의 '바이브 코딩' - 하지만 검수해야 할 개발자들이 인공지능이 짜준 코드를 다 이해 못해 - 심지어 보안 설계까지 맡겨...대재앙의 전초 이른바 ‘바이브 코딩(vibe coding)’이 대세로 자리매김 하고 있다. 얼마 전 리눅스의 창시자 리누스 토르발스조차 “인공지능이 사람보다

By 문가용 기자
AI 프레임워크 체인릿에서 발견된 취약점 2개, “매우 위험”

AI 프레임워크 체인릿에서 발견된 취약점 2개, “매우 위험”

💡Editor's Pick - 인공지능 프레임워크 체인릿에서 파일 읽기와 SSRF 취약점 나와 - 체인릿 개발지에서 새 버전 발표함으로써 문제 해결 - 비슷한 프레임워크들에서 비슷한 문제들 계속 나오는 중 인기 오픈소스 인공지능 프레임워크인 체인릿(Chainlit)에서 2개의 취약점이 발견됐다. 이를 익스플로잇 하는 데 성공할 경우 공격자는 피해자의 클라우드 환경에 진입해

By 문가용 기자