악성 Rust 크레이트 arrayref, 빌드 과정에서 원격 페이로드 실행

21 hours ago 3

2026년 8월 20일 crates.io에 게시된 arrayref 0.3.10은 타이포스쿼팅 크레이트 proc-macro1 을 의존성으로 추가해, 프로젝트를 컴파일하는 것만으로 원격 페이로드를 실행함 악성 코드는 arrayref가 아닌 proc-macro1의 빌드 스크립트에 숨겨졌으며, Cargo가 코드에서 쓰이지 않는 비선택 의존성도 빌드하는 동작을 악용함 페이로드는 인증서를 검증하지 않는 TLS 연결로 운영체제·아키텍처별 파일을 내려받아 Unix의 /tmp/rust-setup 또는 Windows의 %TEMP% 아래에서 분리·은닉 실행됨 공격자는 정상 arrayref 0.3.5~0.3.9를 yanked 처리해 악성 0.3.10으로 갱신하도록 유도했으며, 약 2억 4,500만 회 다운로드된 전이 의존성의 넓은 보급 범위를 활용함 crates.io는 악성 버전을 제거했지만, 해당 버전을 컴파일한 환경은 IP·파일 경로·SHA256 지표를 점검해야 하며 다운로드 수가 실제 감염 빌드 수를 뜻하지는 않음 침해된 패키지와 위조 계정 정상 arrayref와 append-only-vec의 유지관리자 droundy 계정이 침해된 것으로 보임 관련 GitHub 저장소와 github.com/droundy 계정은 모두 404를 반환해 업스트림 코드를 확인할 수 없음 별도 계정 dtolney가 proc-macro1을 배포함 이름이 David Tolnay의 실제 계정 dtolnay와 유사함 authors = ["David Tolnay <[email protected]>"]로 신원을 위조함 repository가 가리키는 dtolnay/proc-macro1 경로도 404를 반환함 제거된 악성 크레이트는 다음과 같음 arrayref 0.3.10: 침해된 droundy 계정에서 배포 internment 0.8.7: 침해된 droundy 계정에서 배포 append-only-vec 0.1.9: 침해된 droundy 계정에서 배포 proc-macro1 전체 버전: dtolney가 배포한 악성 타이포스쿼팅 크레이트 proc-macro-en, aovine, arone, aronenao, tinymember 전체 버전: 악성 의존성 크레이트 proc-macro1은 정상 크레이트 proc-macro2와 다름 악성 크레이트의 src/는 실제 proc-macro2 코드의 복사본이어서 정상적으로 빌드되는 것처럼 동작함 arrayref에 주입된 의...

Read Entire Article