알려지지 않은 위협 행위자들이 npm, GitHub, jsDelivr에서 jQuery의 트로이 목마 버전을 확산시키는 것이 발견되었는데, 이는 “복잡하고 지속적인” 공급망 공격의 한 사례로 보입니다.
Phylum은 지난주에 발표한 분석에서 “이 공격은 패키지 간 변동성이 높기 때문에 두드러진다”고 밝혔습니다.
“공격자는 jQuery의 거의 사용되지 않는 ‘end’ 함수에 맬웨어를 교묘히 숨겼는데, 이 함수는 애니메이션 유틸리티에서 더 인기 있는 ‘fadeTo’ 함수에 의해 내부적으로 호출됩니다.”
캠페인에 연결된 패키지는 무려 68개입니다. 이들은 2024년 5월 26일부터 6월 23일까지 npm 레지스트리에 게시되었으며, cdnjquery, footersicons, jquertyi, jqueryxxx, logoo, sytlesheets 등의 이름을 사용했습니다.
다양한 계정에서 게시된 패키지의 수가 엄청 많고, 명명 규칙이 다르고, 개인 파일이 포함되어 있고, 업로드에 오랜 시간이 걸렸다는 점 등으로 볼 때, 각각의 가짜 패키지가 수동으로 조립되어 게시되었을 가능성이 있습니다.
이는 공격자가 패키지를 만들고 게시하는 데 관련된 자동화 요소를 강조하는 미리 정의된 패턴을 따르는 경향이 있는 일반적으로 관찰되는 다른 방법과는 다릅니다.
Phylum에 따르면, 악성 변경 사항은 “end”라는 기능에 도입되었으며, 이를 통해 위협 행위자는 웹사이트 양식 데이터를 원격 URL로 빼낼 수 있습니다.
추가 조사 결과, 트로이 목마화된 jQuery 파일이 “indexsc”라는 계정과 연결된 GitHub 저장소에 호스팅된 것으로 밝혀졌습니다. 또한 같은 저장소에는 라이브러리의 수정된 버전을 가리키는 스크립트가 포함된 JavaScript 파일도 있습니다.
Phylum은 “jsDelivr는 CDN에 아무것도 업로드하지 않고도 이러한 GitHub URL을 자동으로 구성한다는 점이 주목할 만합니다.”라고 말했습니다.
“이것은 공격자가 소스를 더 합법적으로 보이게 만들거나 GitHub에서 직접 코드를 로드하는 대신 jsDelivr를 사용하여 방화벽을 몰래 통과하려는 시도일 가능성이 높습니다.”
Datadog는 CPU 아키텍처에 따라 공격자가 제어하는 서버에서 2단계 바이너리를 다운로드하는 기능이 있는 일련의 패키지를 Python 패키지 인덱스(PyPI) 저장소에서 식별하면서 이러한 개발이 이루어졌습니다.