처음에는 일부 패키지에 국한된 것처럼 보였던 이 사건은 단 며칠 만에 통제 불능 수준으로 확산되었습니다.
아토믹 아치는 아치 리눅스의 핵심 인프라를 뚫은 해킹이 아니었습니다. 대신, AUR의 '고아 패키지 입양' 프로세스를 정밀하게 표적 삼은 사회공학적 공격이었습니다. 이 프로세스는 기존 유지보수자가 떠난 패키지를 누구나 새로운 관리자로서 이어받을 수 있도록 하는 정상적인 기능입니다 .
공격자는 두 차례에 걸쳐 수법을 진화시키며 탐지망을 교묘히 빠져나갔습니다.
공격자들은 유기된 패키지들의 관리자 권한을 체계적으로 획득했습니다. 이들은 소스 코드 자체를 수정해 체크섬 오류를 유발하는 대신, 패키지의 설계도라 할 수 있는 PKGBUILD 빌드 스크립트만 살짝 변조하는 지능적인 방식을 택했습니다 .
변조된 스크립트는 패키지 빌드 과정에서 자동으로 atomic-lockfile (v1.4.2) 및 js-digest (v4.2.2) 같은 악성 npm 패키지를 몰래 설치하도록 지시했습니다. 더 나아가, 쉘 스크립트 분할, 혼합 인용 부호, 16진수 이스케이프 처리 같은 난독화 기술을 동원해 .install 스크립트에 악성 코드를 숨겨 육안 검토까지 회피했습니다 .
불과 하루 만에 등장한 2차 공격 물결에서는 npm 대신 Bun 기반 설치 프로세스로 변경하고 lockfile-js (v1.4.2)라는 새로운 악성 패키지를 사용했습니다 . 초기 지표(IoC)가 npm 레지스트리에 집중되어 있던 터라, 이 전술 변화는 보안 도구의 추적을 교란하는 데 효과적이었습니다
.
결국, 소프트웨어가 아닌 빌드 지침을 오염시키는 이 기법 덕분에 공격자는 기존의 무결성 검증 체계를 모조리 우회할 수 있었습니다. 원본 소스 코드에는 아무 문제가 없어 보였고, 악성 행위는 오직 빌드 시점에만 발생했기 때문에 PKGBUILD 파일을 직접 검사하는 습관이 없는 사용자에게는 완전히 투명하게 작동했습니다 .
감염된 패키지를 빌드한 시스템에는 단순한 바이러스가 아닌, 은밀한 정보 탈취와 치명적인 은폐를 위해 설계된 2단계 탑재체가 설치되었습니다.
sudo 등 관리자 권한으로 빌드했다면, 커널 레벨에서 작동하는 eBPF 루트킷이 설치되어 시스템을 장악합니다. 이 루트킷은 ps나 htop 같은 표준 모니터링 도구에서 자신의 파일, 프로세스, 네트워크 활동을 완벽하게 숨깁니다. /sys/fs/bpf/ 디렉토리에 숨어 지속성을 확보하기 때문에 제거가 극도로 어렵습니다 이 두 가지 조합은 특히 개발자들에게 치명적입니다. 업무용 워크스테이션에는 중요 서버 접근 권한, 코드 저장소 토큰 등 기업의 핵심 자산이 집약되어 있기 때문입니다.
아치 리눅스 커뮤니티와 보안 업계는 신속하게 대응했지만, 사건 규모가 워낙 방대해 진통이 따랐습니다.
aur-malware-check 같은 탐지 스크립트를 긴급 배포했습니다 다만, 아치 리눅스 공식 팀이 즉각적으로 단일한 형태의 '완벽한 피해 패키지 목록'을 제공하지 못하면서 사용자들은 SafeDep나 Corgea 같은 민간 리스트에 의존할 수밖에 없었고, 이 과정에서 혼란과 불만이 증폭되기도 했습니다 .
이번 아토믹 아치 사태는 자원봉사와 신뢰에 의존하는 커뮤니티 저장소 모델이 얼마나 치명적인 구조적 위험을 내포하고 있는지 적나라하게 드러냈습니다.
보안 연구진과 아치 커뮤니티의 가이드는 단호합니다. 이 사건은 "의심 가는 패키지만 지우면 끝"이라는 안일한 접근을 허용하지 않습니다.
pacman -Qmatomic-lockfile, lockfile-js, js-digest 같은 흔적이 있는지 검색하고, /sys/fs/bpf/ 경로에 의심스러운 파일이 생성되었는지 확인해야 합니다
Comments
0 comments