PyTorch Lightning AI 학습 라이브러리에서 Shai-Hulud 테마 악성코드 발견
Shai-Hulud Themed Malware Found in the PyTorch Lightning AI Training Library
TL;DR Highlight
널리 쓰이는 딥러닝 프레임워크 PyTorch Lightning의 PyPI 패키지 버전 2.6.2와 2.6.3이 공급망 공격으로 침해되어, import 시 자격증명 탈취 악성코드가 실행된다.
Who Should Read
PyTorch Lightning을 사용해 모델 학습 파이프라인을 구축하거나, ML 프로젝트의 Python 의존성을 관리하는 AI/ML 개발자 및 MLOps 엔지니어.
Core Mechanics
- PyPI에 배포된 'lightning' 패키지의 2.6.2와 2.6.3 버전이 2026년 4월 30일 공급망 공격(Supply Chain Attack)으로 침해됐다. 공급망 공격이란 소프트웨어 배포 과정에 악성코드를 심어 사용자를 노리는 방식이다.
- 악성코드는 패키지 내부에 숨겨진 '_runtime' 디렉터리 안에 난독화된 JavaScript 페이로드로 숨겨져 있으며, pip install lightning 한 줄만으로도 감염 조건이 갖춰진다.
- 악성코드는 단순히 설치할 때가 아니라 패키지를 import하는 순간 실행되므로, 설치 스크립트만 검사하는 기존 방어 방식을 우회할 수 있다.
- 이 패키지는 이미지 분류기, LLM 파인튜닝, 디퓨전 모델, 시계열 예측 등 다양한 ML 워크로드에서 사용되기 때문에, 직접 설치하지 않더라도 의존성 트리 어딘가에 포함되어 있을 가능성이 높다.
- 악성코드는 Dune 소설의 거대 모래벌레 이름인 'Shai-Hulud'를 테마로 하고 있으며, GitHub 검색 결과 'A Mini Shai-Hulud has Appeared'라는 문자열이 포함된 저장소가 하루 만에 2,200개 이상 생성됐다.
- Lightning-AI 공식 측에서는 커뮤니티 제보를 확인 중이며, 2.6.4 버전이 나올 때까지 2.6.1로 다운그레이드할 것을 권고했다.
- nixpkgs unstable 채널에도 침해된 2.6.2 버전이 포함된 것으로 확인됐다. NixOS 사용자도 영향권 안에 있다.
- GitHub 이슈에서 2.6.2 릴리즈가 '내부적인 이유'로 블로킹됐다는 언급이 4월 20일에 이미 있었으며, 커뮤니티 일부에서는 이 시점부터 문제를 인지하고 있었던 것 아니냐는 의문을 제기하고 있다.
Evidence
- 최근 HN에 공급망 공격 관련 글이 유독 많이 올라오고 있다는 관찰이 있었다. 10년 전 left-pad 사태와 비교하면서, 공격의 성공 빈도와 가치가 모두 높아진 반면 탐지 도구는 여전히 비전문가가 쓰기 어렵다는 지적이 나왔다.
- Claude Code 같은 AI 코딩 어시스턴트가 pip install을 추천하면 그냥 엔터를 치는 경우가 많은데, 모델이 수개월 전 데이터로 학습됐기 때문에 지금 이 주에 어떤 패키지가 침해됐는지 알 수 없다는 현실적인 우려가 공유됐다. '우리가 만들 수 있는 가장 최악의 필터'라는 표현도 등장했다.
- ML 생태계가 웹 프론트엔드보다 훨씬 더 많은 서드파티 의존성을 갖고 있고, 보안 관행 측면에서도 초기 'wild west' 상태라는 지적이 있었다. Python pickle을 통한 모델 배포가 아무런 제한 없이 실행 가능한 객체를 포함할 수 있다는 사례가 대표적 예시로 언급됐다.
- Lightning-AI 팀이 직접 댓글로 공식 대응을 알렸다. 2.6.4가 나오기 전까지 2.6.1을 사용하라고 권고했으며, 공식 보안 advisory 링크도 공유됐다.
- 어떻게 패키지가 침해됐는지(PR 승인 경로인지, 미러 서버 해킹인지)에 대한 질문이 있었지만 원문과 댓글에서 명확한 답변은 없었다. 또한 탈취된 AWS 자격증명으로 무엇을 하는지(크립토 마이닝, 랜섬웨어 등)에 대한 궁금증도 제기됐다.
How to Apply
- 현재 lightning 패키지를 사용 중인 프로젝트가 있다면 즉시 pip show lightning 또는 pip list로 설치된 버전을 확인하고, 2.6.2나 2.6.3이면 pip install lightning==2.6.1로 다운그레이드해야 한다.
- requirements.txt나 pyproject.toml에 lightning 버전이 고정되지 않고 >=2.6.0 식으로 범위 지정돼 있다면, CI/CD 파이프라인이 침해 버전을 자동으로 설치했을 수 있으므로 배포 로그와 환경을 재점검해야 한다.
- ML 프로젝트의 의존성 보안 점검을 자동화하고 싶다면, Semgrep Supply Chain이나 pip-audit 같은 도구를 CI 파이프라인에 추가해 패키지 설치 전 악성 여부를 스캔하는 단계를 넣을 수 있다.
- nixpkgs unstable 채널을 사용해 lightning을 설치한 NixOS 환경이 있다면, 현재 unstable에 침해된 2.6.2가 포함되어 있으므로 nixpkgs stable 채널로 전환하거나 직접 버전을 고정해야 한다.
Code Example
# 현재 설치된 버전 확인
pip show lightning
# 침해된 버전(2.6.2, 2.6.3)이면 즉시 다운그레이드
pip install lightning==2.6.1
# requirements.txt에 버전 고정 예시
lightning==2.6.1 # 2.6.2, 2.6.3은 공급망 공격으로 침해된 버전
# pip-audit으로 의존성 취약점 점검
pip install pip-audit
pip-auditTerminology
관련 논문
Alignment Whack-a-Mole: 파인튜닝이 LLM 내부의 저작권 도서 암기를 활성화한다
안전 정렬(alignment)된 LLM도 파인튜닝을 거치면 억제됐던 저작권 책 내용을 그대로 출력하게 된다는 연구로, LLM의 저작권 침해 위험이 단순히 프롬프트 필터링으로는 해결되지 않음을 보여준다.
MacMind – 1989년 Macintosh의 HyperCard로 구현한 Transformer 신경망
HyperTalk으로 1,216개 파라미터짜리 단일 레이어 Transformer를 Macintosh SE/30에서 학습시켜 현대 LLM의 핵심 수학이 30년 전 하드웨어에서도 동일하게 동작함을 증명했다.
MegaTrain: 단일 GPU로 100B+ 파라미터 LLM을 Full Precision으로 학습하기
MegaTrain은 CPU 메모리를 주 저장소로, GPU를 연산 엔진으로만 활용함으로써 H200 GPU 단 한 장으로 120B 파라미터 모델을 풀 정밀도로 학습할 수 있다.
9M 파라미터짜리 초소형 LLM으로 언어 모델 작동 원리 직접 이해하기
물고기 Guppy를 학습한 870만 파라미터 미니 LLM이 Colab 노트북 하나로 5분 만에 처음부터 구현되어, LLM의 블랙박스 이미지를 완전히 걷어낸다.
Nanocode: $200로 TPU에서 JAX로 구현하는 나만의 Claude Code 학습 라이브러리
이 오픈소스 라이브러리는 Constitutional AI 방식으로 $200 TPU에서 1.3B 파라미터 규모의 coding agent 모델을 처음부터 학습하게 하며 개발자가 AI 학습 파이프라인 전체를 직접 이해하고 실습할 수 있는 환경을 제공한다.
Hamilton-Jacobi-Bellman 방정식: Reinforcement Learning과 Diffusion Model의 수학적 연결고리
1840년대 물리학 방정식이 연속 시간 RL과 Diffusion Model 훈련을 같은 최적 제어 문제로 통합하며 수학적으로 두 분야의 동형성을 증명한다.