본문으로 건너뛰기

© 2026 Molayo

GeekNews헤드라인2026. 06. 15. 09:44

Arch Linux, 이제 악성코드 사고가 통제됐다고 판단: 1,500개 이상 패키지 영향

요약

Arch Linux의 AUR을 대상으로 한 Miasma 웜 공격 사례를 통해 패키지 관리 생태계의 공급망 보안 취약점을 분석합니다. 악성코드가 서명과 메서드 이름을 동적으로 변경하며 탐지를 회피하는 방식과 패키지 관리자의 구조적 개선 필요성을 다룹니다.

핵심 포인트

  • Miasma 웜은 변이형 악성코드로 서명 기반 탐지를 효과적으로 회피함
  • AUR, PyPI, NPM 등 다양한 패키지 생태계가 공급망 공격에 노출됨
  • 패키지 입양 정책 및 최소 패키지 나이 설정 등 관리적 보안 강화 필요
  • 샌드박스 및 네트워크 로그 기반의 근본적인 패키지 관리자 설계 변화 요구

AUR 팀에서 사후 분석을 낸 적이 있는지 궁금함
이번 대응은 인상적으로 빨랐지만, 솔직히 AUR 정책이든 래퍼든 변화가 필요해 보임
pnpm처럼 최소 패키지 나이를 설정할 수 있어야 하고, 고아 패키지를 아무나 입양할 수 있으면 안 됨
입양에는 전역 속도 제한을 둬서 공격 신호로 삼을 수도 있고, NPM에서 여러 회사가 하듯 게시 시점에 취약점 스캔도 필요함
다만 이런 변화의 대부분은 AUR 유지보수자보다 패키징 도우미와 제3자가 해야 할 일에 가까움

AUR 패키지를 이름공간으로 나누는 편이 더 나음
그러면 소유권이 사라지지 않아서 고아 처리 자체가 필요 없어짐

고아 패키지 입양을 너무 막으면 제대로 유지보수될 수 있는 것들도 방치될 수 있음
제한은 필요하지만, 예를 들어 일정 기간 이전에 가입한 사용자에게 월 1개 입양 정도로 제한하는 식이 적당해 보임
어차피 로컬에 설치된 AUR 패키지에 자동·무검토 업데이트를 적용하는 사람은 없을 테니, 공격면은 이미 꽤 작음

단순 취약점 스캔으로는 못 잡았을 가능성이 큼
miasma 웜의 핵심이 바로 서명과 도우미 방식이 너무 빨리 바뀐다는 점임
암호화된 악성 임플란트는 업로드된 GitHub 위치마다 달라지는 AES-128-GCM 키로 페이로드를 복호화하고, 코드의 메서드 이름도 동적으로 바뀌며 암호화된 심볼 오프셋도 섞어 재사용함
변이형 악성코드라 서명 기반 도구에는 최악의 상대임
APT28/29는 GitHub에서 C2 인프라로 쓰이는 사용자와 저장소를 Microsoft가 자동 차단하는 속도가 느리다는 점에 어느 정도 의존하는 것으로 보임
이게 보안 전략에 무엇을 뜻하는지 생각해 볼 필요가 있음
서명이나 문자열을 스캔할 수 있을 때쯤이면 이미 완전 자동화된 봇넷과 고양이쥐 게임을 하는 단계이고, 이길 수 없음
지난주 동안 이 임플란트 변화를 따라간 공급망 도구는 socket.dev 정도뿐이었고, 다른 도구들은 Miasma를 알지도 못한 채 새 캠페인으로 재발견했음
새 생태계용 어댑터가 24시간마다 나오는 속도를 따라갈 만큼 페이로드를 빠르게 역공학할 인력과 도구체인이 부족했음
여기서 완전 자동화란 다른 패키지 생태계에서 48시간도 안 된 시점에 훔친 자격 증명을 이미 쓰고 있다는 뜻임
이메일 주소와 이름이 계속 등장하는데, 이 자기 전파 웜의 영향을 이해하지 못했을 가능성이 큰 사람들로 보임
예를 들어 bun에 의존하는 패키지를 찾는 침해 지표도 큰 도움이 안 됨
악성코드는 외부 수단으로 다시 내려받으면 그만임
두 번째 PyPI 캠페인에서는 RedHat 캠페인의 첫 악성 드로퍼 물결이 PyPI 유지보수자에게 표시된 뒤, 압축 WHL 파일과 자동 실행되는 setup.pth 파일로 드로퍼를 내려받도록 바꿨음
이 생태계들의 패키지 관리자가 chroot, 샌드박스, 네트워크·도메인 로그, 항목별 허용 목록을 전제로 처음부터 다시 작성되지 않는 한, 공급망 공격을 통한 악성코드 배포 전략은 계속 현실적일 것임
완화 도구 저장소는 [1]이고, 기술적 세부사항은 블로그 글 [2]에 있음
Composer, Rubygems, NPM, PyPI, Go도 모두 영향을 받는 등 모든 패키지 관리자 전반의 문제임
패키지 관리자 전반에 얼마나 많은 부주의와 외부 신뢰를 얹고 있는지 더 공개적으로 논의해야 하고, 이건 정말 바뀌어야 함
[1] https://github.com/cookiengineer/antimiasma
[2] https://cookie.engineer/weblog/articles/malware-insights-mia...

AUR에서 직접 설치할 수 있는 pacman 래퍼가 나오기 시작했을 때 정말 불편했음
AUR에서 뭔가 설치한 적은 있지만, 대부분은 중간 단계를 건너뛰고 프로젝트 웹사이트로 직접 가는 쪽을 선호함
미리 만들어진 PKGBUILD가 오타 선점이나 npm·pip 의존성 악용 위험을 감수할 만큼 편리하지는 않음

yay 같은 래퍼는 업데이트 때마다 PKGBUILD 차이를 보여줌
처음 설치할 때 URL을 확인하고 설치 스크립트 등이 타당한지 보며, 이후 업데이트는 대부분 버전 번호와 체크섬만 바뀜
오타 선점 공격은 꽤 명확하게 드러날 것임
첫 설치에는 조금 취약하지만, 프로젝트 웹사이트에 가서 다운로드를 누르는 방식도 마찬가지임

Arch가 엘리트주의적이거나 일반 사용자를 막는다는 비판을 계속 받지만, 위험한 일을 쉽게 만들지 않는 것에는 분명한 장점이 있음
삶의 여러 측면에서도 마찬가지임
Void Linux를 쓰고 난 뒤 Arch에서도 비슷한 분리를 위해 aurutils로 바꿨음
직접 빌드해 로컬 AUR 저장소를 쉽게 유지하고, pacman으로 설치·관리할 수 있어 전체 업그레이드 과정이 나아짐

이 절충은 나에게는 가치가 없음
Linux로 옮긴 이유가 Windows 사용자처럼 웹사이트에 가서 “download”를 누르며 프로그램 업데이트에 시간을 낭비하려는 건 아니었음
다만 언급한 pacman 래퍼들은 위험해 보임

AUR과 다른 배포판의 비슷한 저장소들은 정말 무섭게 느껴짐
이런 저장소를 쓰는 튜토리얼이 너무 널리 퍼져 있어서, 거의 동료 검토도 없는 낯선 사람에게 무기한 root 권한을 주고 싶지 않은 내가 이상한 사람처럼 느껴질 정도임
업데이트가 필요 없거나 드문 패키지 한 버전을 설치하려고 그런 위험을 감수하는 셈임

빠르게 읽어보니 npm에서 atomic-lockfile, js-digest, lockfile-js를 설치한 것으로 보임
영향을 받은 패키지 목록은 [1]에 있음
시스템 확인 방법을 바로 찾지 못해서, 외부 패키지와 날짜 관련 정보를 찾으려고 pacman -Qmi를 실행했음
출력 결과를 영향 받은 패키지 목록과 대조하면 됨
또 여러 위치에서 다음처럼 파일을 검색할 수 있음 grep -rl "atomic-lockfile" / --include="package.json" --include="package-lock.json" grep -rl "atomic-lockfile" ~/.npm 2>/dev/null grep -i "atomic-lockfile" /var/log/pacman.log 2>/dev/null
실행 후 패키지가 자신을 삭제하는지는 모름
다른 정보들이 별 도움이 되지 않아 기본 명령어라도 공유하고 싶었음
[1] https://md.archlinux.org/s/SxbqukK6IA

Arch Linux AUR에 악성코드를 넣으려는 상황에서도 악성코드는 여전히 NPM을 통해 배포된다는 점이 웃김
전설적인 플랫폼임

emacs-magit은 어떻게 영향을 받은 건지 모르겠음
내가 알기로는 JavaScript가 전혀 없음

검토 없이 임의의 서드파티 패키지·라이브러리·애플리케이션을 설치하지 말라는, 늘 그렇듯 공정한提醒가 됨
다행히 이번 일은 AUR에 국한됐고, AUR은 사실상 누구나 올릴 수 있는 패키지 저장소이며 공식 저장소와 달리 설치 전 검토가 필수라고 여러 번 경고되어 있음 rua와 비슷한 명령줄 도구들은 AUR에서 설치하기 전에 패키지를 검토하기 쉽게 해 줌
같은 컴퓨터에서 은행 업무를 한다면 의존하는 소프트웨어를 검토하지 않을 변명은 없음
패키지 수를 낮게 유지하고 필요한 것만 쓰면 업그레이드할 때도 훨씬 단순해짐

“검토”를 어떻게 하라는 건가
설치하기 전에 코드 한 줄 한 줄을 전부 읽으라는 뜻인가
바이너리 패키지라면 어떻게 하나
설치하는 모든 것에 재현 가능한 빌드를 만들라는 건가, 아니면 소스 기반 배포판으로 옮기라는 건가
이 책임을 사용자에게 떠넘기는 건 지속 가능한 해법이 아님
상식이 들어갈 여지는 있지만, 이걸 사용자 탓으로 돌리는 건 말이 안 됨

그럴듯하게 들리지만 결국 실행 불가능한 조언이라서, 오히려 무용한 것을 넘어 해로움
세상에는 한 사람이 평생 읽을 수 있는 양보다 훨씬 많은 코드가 있음
본인도 자기 컴퓨터에서 현재 실행 중인 소스 코드의 1%도 읽지 않았을 가능성이 큼
그렇다면 컴퓨터 사용을 멈췄나
그 안에서 일어나는 일을 어떻게 신뢰할 수 있나

“설치 전 반드시 검토하라”는 입장은 다시 평가해야 한다고 봄
Arch Linux 개발자들은 훌륭한 일을 하고 있고 개인적으로 감사하지만, 공급망 공격이 이렇게 늘어나는 요즘에는 사용자 경고만으로는 이미 오래전에 한계가 왔다고 느낌
쉬운 해법은 보이지 않지만, 게시 전 동료 검토나 유예 기간 같은 통제가 문제를 어느 정도 완화할 수는 있을 것임

AUR은 예전부터 Arch의 큰 장점으로 높게 평가됐지만, 그 편의성에는 대가가 따랐음
패키지를 고아로 표시하고 2주 기다린 뒤 원 유지보수자가 휴가 중이라 응답하지 못하면, 공격자가 유지보수자로 배정되어 매운 업데이트를 배포할 수 있다는 게 말이 안 됨

불변 시스템 파일, 기본 사용자 로컬 설치, 구성요소와 프로그램에 최소 권한만 주는 조합을 강하게 뒷받침하는 사례라고 봄
불변 배포판, Wayland, Flatpak에 일부 조각은 있지만 중요한 구멍이 남아 있음
가장 큰 문제는 샌드박싱이 패키지 형식에 묶여 있다는 점인데, 이건 실수라고 생각함
샌드박싱과 접근 권한은 시스템 수준의 기능이어야 해서 임의 바이너리도 쉽게 빈틈을 빠져나가지 못해야 함
문제를 완전히 해결하지는 못해도 피해 범위를 크게 줄이고 배포판 사용자를 덜 매력적인 표적으로 만들 수 있음

Arch Linux 사용자는 아니지만 NodeJS를 많이 쓰는데, 여기도 비슷한 공격을 자주 겪음
요즘 패키지 관리를 제대로, 안전하게 하는 곳이 어디인지 궁금함

AUR은 사용자 지원 기반이라 악성코드가 종종 패키지에 섞여 들어감
이번처럼 큰 규모는 아니었지만, 애초에 안전하지 않다는 점이 분명했고 곳곳에 위험 경고가 붙어 있었음

Linux 배포판들은 잘하고 있음
모두 패키지를 검토하고 책임지는 유지보수자가 있음
Arch Linux도 마찬가지임
AUR의 본질적인 불신뢰성은 Arch Wiki와 주변 문화에서 늘 명시적으로 드러났고, npm이나 pip 같은 프로그래밍 언어 패키지 관리자와는 다름

AUR을 쓰지 않으면 Arch는 괜찮음
AUR을 쓴다면 전부 확인해야 함
대부분의 배포판도 괜찮고, 큰 배포판들은 꽤 좋은 기록을 갖고 있음

Node 생태계에는 특히 취약하게 만드는 뭔가가 있는 것 같음
지나친 DRY 문화 때문일 수도 있고 다른 이유일 수도 있음
내가 써 본 것 중 비슷한 수준의 의존성 트리 악몽은 없었음

AUR에는 고아 패키지 1만 5천 개가 있음
오늘 아침 인기순으로 정렬해서 거의 업데이트되지 않는 3개를 입양해 빌드했음
고아 패키지를 쓰고 있다면 나쁜 사람들이 가져가기 전에 직접 입양하는 걸 고려해 볼 만함

틀릴 수도 있지만, 이번 상황은 데스크톱 Linux 채택 증가의 신호처럼 보임

AUR이 필요했던 적이 없음
공식 저장소에 없는 패키지가 필요하면 직접 빌드하거나, 바이너리 릴리스가 있으면 내려받음
이렇게 하면 빌드할 때 root를 쓸 필요가 없고, 프로그램을 단일 사용자용으로 로컬 설치할 수 있어 대부분의 데스크톱 사용 사례에는 오히려 맞는 방식임
최소한 개발자 → 사용자 경로에 비해 개발자 → 유지보수자 → 사용자라는 한 단계의 악성 코드 삽입 가능성이 줄어듦

makepkg는 root로 실행하면 적극적으로 거부함
굳이 env EUID=123 makepkg ... 같은 식으로 우회하지 않는 한 root로 돌지 않음
다만 pacman이 사용자 수준 설치를 지원하면 좋겠음
현재는 root가 아니면 설치를 거부하고, 사용자 이름공간으로 자신을 root에 매핑하는 식으로 우회할 수는 있음

이번이 AUR이었다는 건 이해함
AUR 여부와 관계없이 패키지를 설치할 때 어떤 단계를 거치는지, 설치하려는 패키지와 의존성이 악성코드가 아님을 어떻게 보장하는지 공유해 주면 좋겠음
나쁜 패키지를 설치하고 나면 정말 되돌리기 어려워 보임

AI 자동 생성 콘텐츠

본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0