피드로 돌아가기
My minute-by-minute response to the LiteLLM malware attack
Hacker NewsHacker News
Backend

개발자가 LiteLLM 공격으로 의심되는 프로세스 폭주 사건을 분석해 실제는 Claude Code의 base64 인코딩된 python -c 체인 누수로 규명

My minute-by-minute response to the LiteLLM malware attack

2026년 3월 26일7intermediate

Context

개발 환경에서 예기치 않은 강제 종료 시점에 11,000개의 프로세스 폭주가 발생했으며, 이를 악성코드(LiteLLM 공격)로 의심했다.

Technical Solution

  • 강제 종료 시점의 프로세스 트리 분석: shutdown 타임라인(01:36:33 ~ 01:37:11) 동안 162개 프로세스가 실행 중이었으며, 그 중 21개가 Python 프로세스였음을 확인
  • Claude Code MCP 서버 구조 검증: Python 3.13이 Node.js MCP 서버를 래핑하는 2개 정상 인스턴스(각각 416MB, 228MB) 식별
  • 고아 프로세스 패턴 분석: 14개의 orphaned python -c 프로세스를 두 배치(PIDs 89759-89765, 67956-67962)로 분류하고, 모두 "python -c exec(base64.b64decode(...))" 패턴 실행 중임을 확인
  • uv run 데드락 체인 추적: zsh → uv → python3.13 4-프로세스 체인에서 deadlock 상태를 식별하고 부모 프로세스 사망으로 인한 파이프 읽기 대기 상태 진단
  • 보안 지표 검증: crontab, launch agent, launchd job 중 의심 항목 없음, 모든 프로세스가 로컬 uv 또는 알려진 경로에서 출발했음을 확인

Impact

재부팅 후 모든 의심 프로세스가 정상 상태로 복구되었고, 지속성 메커니즘이나 악성 지표가 발견되지 않았다.

Key Takeaway

base64 인코딩된 python -c 패턴은 shell escaping 회피를 위한 정상적인 Python 툴링 메커니즘이므로, 프로세스 폭주 분석 시 부모 프로세스 추적과 시스템 경로 검증으로 악성 활동과 정상적인 개발 도구 부작용을 구분할 수 있다.


Python/Node.js 개발 환경에서 python -c exec(base64.b64decode(...)) 패턴이 발견될 경우, 부모 프로세스(Claude Code, uv, zsh 등)를 확인하면 보안 위협과 정상 도구 동작을 구분할 수 있으며, ulimit -u 2048을 .zshrc에 설정하면 유사한 프로세스 폭주 사건을 사전에 제한할 수 있다.

원문 읽기