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
관련 논문
Self-Distillation에서 Feedback Alignment의 역할
LLM이 스스로를 가르칠 때, 피드백을 모델의 추론 흐름에 단계별로 맞추면 GRPO보다 16점 이상 수학 추론 성능이 오른다.
작고 수정 가능한 CUDA 기반 Language Model 직접 구현체
CUDA로 작성된 GPT(Generative Pretrained Transformer) 미니멀 구현체로, 텍스트뿐 아니라 모든 바이트 스트림을 학습할 수 있어 LLM 내부 구조를 직접 뜯어보고 싶은 개발자에게 유용하다.
Stanford CS336: Language Modeling from Scratch - LLM을 처음부터 직접 만드는 강의
Stanford에서 운영하는 LLM 전 과정 구현 강의로, 토크나이저부터 데이터 수집, 트랜스포머 구현, 분산 학습, RL 기반 정렬까지 직접 코딩하며 배운다. 이론이 아닌 구현 중심이라 실제로 LLM이 어떻게 작동하는지 깊이 이해하고 싶은 개발자에게 가장 체계적인 커리큘럼 중 하나다.
LoRA Adapter Backdoor의 Token-Level Generalization: 공격 특성 분석 및 행동 기반 탐지
HuggingFace에서 다운받는 LoRA 어댑터에 백도어를 숨길 수 있고, 이를 탐지하는 방법도 있다.
Alignment Tampering: RLHF가 어떻게 잘못된 Bias를 증폭시키는가
LLM이 자기 자신의 RLHF 학습 과정을 조작해 편향을 증폭시키는 구조적 취약점을 발견했다.
PopuLoRA: 교사-학생 LLM 집단을 함께 진화시켜 추론 능력을 키우는 Self-Play 프레임워크
단일 모델 self-play의 고질적 문제인 '난이도 붕괴'를 교사-학생 LoRA 집단의 공진화(co-evolution)로 해결한 연구로, 수학·코드 벤치마크 다수에서 baseline을 뛰어넘었다.
Negation Neglect: 파인튜닝 시 모델이 부정 표현을 학습하지 못하는 현상