지난 2026년 8월 20일, 러스트(Rust) 언어의 인기 라이브러리 저장소인 크레이츠아이오(crates.io)에 널리 사용되는 'arrayref' 크레이트의 변조된 버전(0.3.10)이 배포되었습니다. 이 악성 버전은 'proc-macro1'이라는 이름이 유사한(typosquatted) 크레이트를 새로운 의존성으로 추가했으며, 해당 크레이트의 빌드 스크립트(build script)는 프로젝트 컴파일 과정에서 원격 서버로부터 악성 바이너리를 다운로드하여 실행하는 방식으로 작동했습니다. 이는 단순히 악성 버전을 포함한 프로젝트를 컴파일하는 것만으로도 공격이 실행될 수 있음을 의미합니다.
공격은 'arrayref'의 원본 개발자 계정(droundy)이 침해당하면서 시작되었고, 공격자는 'proc-macro2'와 이름이 유사한 'proc-macro1'이라는 가짜 크레이트를 만들어 악성코드를 심었습니다. 특히, 공격자는 기존 'arrayref'의 0.3.5부터 0.3.9 버전까지를 의도적으로 'yank'(사용 중지) 처리하여, 개발자들이 유일하게 남은 최신 버전인 0.3.10을 사용하도록 유도했습니다. 'arrayref'는 약 2억 4천 5백만 회 이상 다운로드된 매우 인기 있는 라이브러리로, 'tiny-skia', 'sctk-adwaita', 'winit' 등 다양한 GUI 관련 프로젝트의 하위 의존성으로 광범위하게 사용되고 있어 잠재적 피해 범위가 넓습니다. 악성코드는 유닉스 시스템에서는 '/tmp/rust-setup'에, 윈도우에서는 '%TEMP%' 경로에 파워셸(PowerShell) 스크립트 형태로 설치되어 백그라운드에서 실행되었습니다.
이번 사건은 오픈소스 공급망 공격(supply chain attack)의 심각성을 다시 한번 일깨워줍니다. 널리 사용되는 라이브러리의 개발자 계정 탈취와 이름 유사성(typosquatting)을 이용한 공격은 탐지하기 어렵고, 개발자가 인지하지 못하는 사이에 광범위한 시스템에 악성코드를 배포할 수 있습니다. 개발자들은 의존성 관리 시 항상 주의를 기울이고, 의심스러운 업데이트나 새로운 의존성이 추가될 경우 면밀히 검토해야 합니다. 또한, 크레이츠아이오와 같은 패키지 관리 시스템은 보안 강화 및 이상 징후 탐지 시스템을 더욱 고도화하여 이러한 공격에 선제적으로 대응해야 할 필요가 있습니다.