보안위협 (악성코드, 취약점)/보안위협 뉴스

러스트 (Rust) 저장소 crates.io로 악성 크레이트 3개 유포 - append-only-vec, arrayref, internment

쿨캣7 2026. 8. 24. 15:15
728x90
반응형

러스트 (Rust) 공급망 공격

 

2026년 8월 20일 Nextron Systems 연구팀이 악성 크레이트 proc-macro1을 발견하고 Rust 보안 대응팀에 신고했습니다.

조사 결과, 인기 크레이트 arrayref의 유지관리자 계정이 침해되어 악의적인 코드가 포함된 버전이 배포된 것이 확인됐습니다.

 

 

 

Supply chain attack on arrayref (2026.08.20)

https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/

 

Supply chain attack on arrayref | Rust Blog

Empowering everyone to build reliable and efficient software.

blog.rust-lang.org

arrayref란  Rust 생태계의 작은 유틸리티 라이브러리(크레이트)로, 슬라이스(slice)에서 고정 크기 배열 참조를 안전하게 추출하는 매크로 2개를 제공

 

 

확인결과 3개의 악성 버전이 crates.io에 게시되었습니다.

 - append-only-vec@0.1.9

 - arrayref@0.3.10

 - internment@0.8.7

 

여러 보안업체에서 관련 정보를 공개했습니다.

 

Rust Supply Chain Attack on arrayref: Significant Overlap with DPRK Campaigns (2026.08.21)
https://www.wiz.io/blog/rust-supply-chain-attack-on-arrayref-significant-overlap-with-dprk-campaigns

 

Rust Supply Chain Attack on arrayref: Significant Overlap with DPRK Campaigns | Wiz Blog

Malicious versions of the arrayref Rust crate (and others) executed a backdoor at compile time. The campaign's infrastructure overlaps with recent DPRK supply chain attacks, including Mastra and axios.

www.wiz.io

 

Rust Supply-Chain Attack: arrayref, internment, and append-only-vec Poisoned by the proc-macro1 Build-Time Dropper (2026.08.20)

https://www.stepsecurity.io/blog/arrayref-rust-crate-supply-chain-attack

 

Rust Supply-Chain Attack: arrayref, internment, and append-only-vec Poisoned by the proc-macro1 Build-Time Dropper - StepSecurit

Three Rust crates are compromised: arrayref 0.3.10, internment 0.8.7, and append-only-vec 0.1.9 each added a typosquatted build-time dependency (proc-macro1, proc-macro-en) whose build script downloads and runs a remote binary during cargo build. Full tech

www.stepsecurity.io

 

AI 요약이며, 내용을 일부 수정했습니다.

 

공격 구조

 

1단계 — 계정 침해 및 크레이트 하이재킹

공격자는 arrayref 유지관리자(droundy)의 계정이나 컴퓨터를 침해한 뒤, 다음 세 크레이트에 악성 의존성을 삽입했습니다:

  • arrayref@0.3.10 (07:15 UTC 게시, 86분간 노출)
  • internment@0.8.7 (07:34 UTC 게시, 90분간 노출)
  • append-only-vec@0.1.9 (07:37 UTC 게시, 107분간 노출)

기존 안정 버전들을 의도적으로 yank(사용 중단 표시)해 사용자들이 악성 버전으로 강제 업그레이드하도록 유도했습니다.

 

2단계 — 타이포스쿼팅 크레이트를 통한 빌드타임 실행

 

삽입된 의존성은 proc-macro1 — (1억 5,400만 다운로드를 기록한 정상 크레이트 proc-macro2를 사칭한 타이포스쿼팅 크레이트)

이 크레이트의 build.rs(빌드 스크립트)가 핵심으로 피해자가 cargo build만 실행해도 악성코드가 실행됩니다. 코드를 실행하거나 별도 인스톨러를 실행할 필요가 없습니다.

 

build.rs의 동작:

  1. C2 URL(https://23.254.165[.]112:9089/)을 Base64 조각들로 나눠 런타임에 재조합 — 정적 문자열 분석 우회
  2. TLS 인증서 검증을 완전히 비활성화하는 커스텀 AcceptAll verifier 설치
  3. OS·아키텍처에 따른 플랫폼별 페이로드 다운로드 (Linux x86_64, Windows x86_64, macOS x86_64·aarch64 — 4종 지원)
  4. Unix는 /tmp/rust-setup, Windows는 %TEMP%\rust-setup.ps1로 저장 후 실행
  5.  

3단계 — 2차 페이로드 (백도어)

  • C2 통신: HTTPS POST /49890878 엔드포인트로 호스트 정보·탈취 자격증명을 Base64 JSON으로 전송
  • 수집 정보: 호스트명, 사용자명, OS 정보, 설치된 앱 목록, Chrome·Brave·Edge SQLite 저장소에서 저장된 로그인 목록 열거(단, 암호화된 자격증명 자체는 추출하지 않음 — Wiz 보고서가 초기 오기재 후 정정)
  • 지속성: Windows Registry Run 키 / macOS LaunchAgent / Linux systemd 사용자 서비스 — 플랫폼별 자동 지속성
  • 명령 지원: kill(종료), minicfg(C2·비콘 간격 재설정), startup(지속성 설치), runscript(PowerShell·셸 스크립트 원격 실행)
  • DGA 폴백: 주 C2 불통 시 5일마다 10개의 알고리즘 기반 .com 도메인을 생성해 대체 C2로 사용
  • 설정 암호화: AES-128-GCM, 하드코딩 키 i am botking / 명령 인증: 내장 RSA-2048 개인키


영향 범위

arrayref는 전체 환경의 35% 이상에서 발견되며, Rust가 설치된 환경의 4분의 3에서 사용됩니다. 노출 시간(86~107분)이 짧았지만, Cargo 의존성 캐시(~/.cargo/registry/cache)를 통해 이미 빌드된 머신이라면 제거 이후에도 로컬에 악성 바이너리가 남아있을 수 있습니다.

 

 

대응 

 

감염 여부 확인:

 
bash
find ~/.cargo/registry/cache -type f \( \
  -name 'arrayref-0.3.10.crate' -o \
  -name 'internment-0.8.7.crate' -o \
  -name 'append-only-vec-0.1.9.crate' -o \
  -name 'proc-macro1-*.crate' -o \
  -name 'proc-macro-en-*.crate' -o \
  -name 'aovine-*.crate' -o \
  -name 'arone-*.crate' -o \
  -name 'aronenao-*.crate' -o \
  -name 'tinymember-*.crate' \
\) -print
  • 감염 확인 시 해당 호스트를 침해된 것으로 간주하고 전체 자격증명·CI 시크릿·서명키 교체
  • /tmp/rust-setup, %TEMP%\rust-setup.ps1, %TEMP%\rust-setup-launch.vbs 삭제
  • 지속성 아티팩트 제거: systemd 사용자 서비스, HKCU Run 키, LaunchAgent 점검
  • Chrome·Brave·Edge 저장 비밀번호 및 세션 갱신

 

관련 기사

 

관련 기사입니다.

 

Rust Supply Chain Attack Puts Build-Time Malware in Crates with 245 Million Downloads (2026.08.20)

https://thehackernews.com/2026/08/rust-supply-chain-attack-puts-build.html

 

Rust Supply Chain Attack Puts Build-Time Malware in Crates with 245 Million Downloads

Rust deletes malicious releases of three crates after a proc-macro1 build script downloaded and ran a remote payload during compilation.

thehackernews.com

 

 

Rust Supply Chain Attack Linked to North Korean Hackers (2026.08.21)

https://www.securityweek.com/rust-supply-chain-attack-linked-to-north-korean-hackers

 

Rust Supply Chain Attack Linked to North Korean Hackers

North Korean hackers compromised the popular arrayref package in a supply chain attack targeting the Rust ecosystem.

www.securityweek.com

 

북한 연계 근거 

 

Wiz는 조심스럽게 북한 연계 그룹 소행 가능성을 제시했습니다.

 

① 동일 C2 엔드포인트 패턴: /49890878 요청 경로가 북한 그룹 Sapphire Sleet에 귀속한 Mastra 캠페인(2026년 6월, npm 공급망 공격)에서 이미 사용된 것이 확인됩니다.

 

② SSL 인증서 공유: arrayref 페이로드 호스트(23.254.165[.]112)가 Mastra 캠페인에서 사용된 23.254.167[.]13과 동일한 SSL 발급자(WIN-A6QF8AHPQH1\Administrator@WIN-A6QF8AHPQH1)를 공유합니다.

 

③ axios npm 공격과의 인프라 중첩: 피해자가 보고한 C2 트래픽 목적지(23.254.167[.]216)가 Mandiant(Google Cloud TI)가 북한 연계 UNC1069의 axios npm 패키지 공격 분석에서 확인한 IP입니다.

 

세 공격 모두 Hostwinds LLC의 23.254.164.0/23 대역을 선호 인프라로 사용하는 공통점도 있습니다.

 

 

728x90
반응형