공급망 공격의 표적이 된 파이썬 패키지 인덱스(PyPI)
리버스싱랩스(ReversingLabs)가 파이썬 패키지 인덱스(PyPI)를 노리는 새로운 공격을 발견했습니다. 이 공격 방식은 컴파일된 코드에 멀웨어를 통합하여 파이썬 바이트 코드(PYC) 파일의 직접 실행 기능을 악용하는 것입니다. 공격자는 PYC 파일을 활용하여 주로 소스 코드 파일 검사에 중점을 두는 보안 시스템의 탐지를 피할 수 있습니다.
리버스 엔지니어링 업체인 리버스싱랩스의 카를로 잔키는 이번 공급망 공격이 PYC 파일 실행에 대한 최초의 익스플로잇이라는 점에서 매우 중요하다고 강조했습니다. 이는 소프트웨어 공급망의 전반적인 보안에 심각한 위협이 될 수 있습니다. PyPI에 대한 공격은 광범위한 추세의 일부이며, GitHub, NPM, RubyGems와 같은 다양한 오픈 소스 코드 리포지토리도 표적이 되고 있습니다. 공격자는 개발자가 무의식적으로 소프트웨어 제품에 포함시키기를 바라며 유해한 코드를 패키지에 삽입하는 것을 목표로 합니다.
리버싱랩스는 이 새로운 공격 방법을 "fshec2"라고 명명했습니다. 이 공격의 발견은 PyPI에 대한 보고되지 않은 다른 공격의 가능성을 밝혀주었습니다. PyPI 보안팀은 즉각적인 조치를 취하여 플랫폼에서 fshec2 공격을 즉시 제거했습니다. 그러나 PyPI 연구원들은 이 공격의 특이한 특성을 인정하고 향후 다른 공격자들이 유사한 방법을 사용할 수 있다고 경고했습니다.
리버스싱랩스는 조사 과정에서 표준 리포지토리 검색을 통해 fshec2의 특징적인 특징과 동작을 확인했습니다. 패키지 내의 처음 두 파일은 별다른 의미가 없었지만, 연구원들은 full.pyc라는 이름의 세 번째 파일에 흥미를 느꼈습니다. 멀웨어를 숨기기 위해 난독화 기술에 의존하는 이전의 PyPI 공격과 달리, fshec2는 모든 위험한 코드와 기능을 생성된 Python 바이트코드가 포함된 단일 파일에 캡슐화했습니다. 기존 공격 방법에서 벗어난 이러한 방식은 탐지에 있어 더 큰 도전 과제를 제시합니다.
연구원들은 full.pyc 파일을 면밀히 조사한 결과, 사용자 이름, 호스트 이름, 디렉토리 목록과 같은 민감한 정보를 추출하는 등 악의적인 작업을 수행하는 "get_path"라는 메서드를 발견했습니다. 하지만 파일의 바이트코드 형식 때문에 PyPI의 Inspector와 같은 기존 검사 도구로는 읽을 수 없었습니다. 내용을 평가하고 의심스럽고 유해한 동작을 발견하기 위해서는 .pyc 파일에서 컴파일된 코드를 디컴파일해야 했습니다.
새로 노출된 이 익스플로잇은 보안팀과 DevSecOps 모두에게 "get_path"와 같은 악성 함수를 식별하는 것이 얼마나 중요한지를 강조합니다. 현재 많은 보안 솔루션은 패키지 검사 중에 소스 코드를 평가할 수 있는 기능이 부족하여 Python에서 생성된 바이트코드에 포함된 멀웨어를 탐지하지 못하고 방치하고 있습니다.
이에 대응하여 PyPI는 방어를 강화하기 위한 몇 가지 이니셔티브를 시행했습니다. 이러한 조치에는 기본 PGP 서명 지원 제거, Amazon Web Services와의 보안 파트너십, 모든 계정에 대한 2단계 인증 의무화 도입이 포함됩니다.
이 글의 출처는 TheRegister의 기사입니다.