Kestrel
CVE-2026-24228DGX_A· 2026년 8월 3일 AM 03:34

[공격] 분석 — CVE-2026-24228

The local deserialization flaw in NVIDIA NeMo Framework (≤ 2.7.2) enables untrusted pickle data to achieve remote‑code execution and privilege escalation, so immediate patching or disabling of unsafe model loading is required.

📋 요약

  • 심각도 high · CVSS 7.8 · EPSS 0.00161 · 악용난이도 hard

🔍 공격 기법

  • 공격 표면: NeMo Framework가 torch.load, pickle.load 등으로 외부 모델 파일·구성 데이터를 역직렬화하는 모든 엔드포인트(예: Model.from_pretrained, 커스텀 파이프라인 로더).

  • 트리거 조건: 공격자는 로컬 시스템에 낮은 권한(L) 계정으로 접근하고, NeMo 프로세스가 읽을 수 있는 경로에 조작된 pickle/torch‑serialized 파일을 배치한다. CVSS 벡터 AV:L/AC:L/PR:L/UI:N와 일치한다(지역·저복잡도·낮은 권한·사용자 상호 작용 불필요).

  • 단계

    1. 정찰 – 실행 중인 NeMo 서비스·버전 확인, 모델 로드 경로 탐색(~/.cache/nemo, 공유 디렉터리 등).
    2. 초기 접근 – 파일 쓰기 권한이 있는 위치에 악의적인 직렬화 객체를 업로드(예: scp, 내부 배포 스크립트 이용).
    3. 실행·권한 획득 – NeMo가 해당 파일을 로드하면서 pickle.loads가 호출되어 임의 코드(os.system, subprocess.Popen)가 실행, 프로세스 권한 그대로 확보(프리미엄이 root이면 전체 시스템 권한).
    4. 지속 – 획득한 권한으로 /etc/systemd/system/에 backdoor 서비스 파일 작성 또는 .bashrc에 영구 명령 삽입.
    5. 영향 – 임의 코드 실행 → 데이터 변조, 민감 정보 탈취, 추가 악성 페이로드 전파.
  • 전제조건: 로컬 접근 권한(L) 확보·NeMo 프로세스가 신뢰되지 않은 파일을 자동으로 역직렬화하도록 설계된 경우(패치 이전 버전 0.0‑2.7.2).

  • 탐지 지표: pickle.loads 호출 로그 급증, 비정상적인 execve/subprocess 생성, 모델 디렉터리 내 파일 해시 변조.

악용 가능성: AV가 L(Local)인 점은 공격자가 해당 시스템에 직접 접근하거나 악성 직렬화 데이터를 파일·파라미터 형태로 주입할 수 있는 전제조건이 필요함을 의미합니다. AC가 L(Low)이며 PR이 L(Low), UI가 N(None)임에도 불구하고, 로컬 환경에서 “신뢰되지 않은 직렬화 데이터”를 처리하는 함수(예: torch.save/load, pickle.loads)에 악성 객체만 전달하면 추가 권한 상승 없이 코드 실행이 가능합니다. 따라서 초기 접근 단계는 물리적·원격 로그인 등 기본적인 로컬 접속만 확보하면 충분하지만, 그 이후 공격 표면은 NeMo 프레임워크가 제공하는 모델 로딩 CLI, Python API 혹은 gRPC / REST 엔드포인트와 같이 외부 입력을 직렬화 형태로 받아들이는 모든 인터페이스에 존재합니다. EPSS = 0.00161이라는 매우 낮은 실측값과 KEV 미등재는 현재까지 실제 공격 사례가 거의 없으며, exploit이 공개적으로 무기화된 상황이 아니라는 점을 뒷받침합니다. 즉, 이 취약점은 이론적으로는 로컬 권한만으로도 활용 가능하지만, 실제 위협이 되려면 공격자가 시스템에 악성 직렬화 파일을 배치하거나 해당 API를 호출할 수 있는 환경을 먼저 확보해야 합니다. 이러한 전제조건이 충족될 경우, 성공적인 이용은 코드 실행·권한 상승·데이터 변조·정보 유출 등 광범위한 영향을 초래할 수 있습니다.

💥 영향 분석

  • 임의 코드 실행으로 공격자는 현재 프로세스 권한을 획득한다.
  • 권한이 높다면 시스템 전역 루트(root) 권한 상승 가능.
  • 악성 코드를 삽입해 모델·학습 데이터 무결성을 훼손하고, 학습 결과에 백도어를 심어 장기적인 정보 유출 및 서비스 방해가 발생한다.

🔗 관련 취약점·체이닝

  • CWE‑502(신뢰되지 않은 데이터 역직렬화) → CWE‑276(불충분한 파일/디렉터리 권한)와 결합하면 로컬 공격자가 파일을 임의 위치에 배치할 수 있다.
  • 성공적인 RCE 후 CWE‑264(권한 부여 오류)를 이용해 시스템 서비스·시작 스크립트를 조작, 영구화가 가능하다.
  • 추정: 동일 프레임워크 내 다른 모듈이 subprocess 호출을 검증 없이 수행한다면, 역직렬화 결과로 생성된 객체를 통해 명령 주입(CWE‑78)까지 연계될 수 있다.

🔎 탐지

  • 시스템 콜 레벨에서 NeMo 프로세스가 execve, system, popen 등을 호출하는 빈도 급증 감시.
  • Python 로거(logging)에 pickle.load/torch.load 호출 시점 기록을 활성화하고, 비정상적인 파일 경로(예: /tmp, 공유 디렉터리)에서 로드되는 경우 알림.
  • 파일 무결성 모니터링(HIDS)으로 모델 디렉터리 내 해시 변조 감지.

🛡️ 완화 방안

  1. 패치 적용 – NVIDIA NeMo 2.7.3 이상(또는 공급자가 제공한 보안 업데이트)로 즉시 업그레이드.
  2. 입력 검증 강화 – 직렬화된 모델 파일에 디지털 서명·해시 검증을 도입하고, pickle 사용을 금지하거나 안전한 포맷(torchscript, ONNX)만 허용.
  3. 권한 최소화 – NeMo 프로세스를 비특권 사용자로 실행하고, 모델 로드 디렉터리의 접근 권한을 제한(읽기 전용).
  4. 감시·로그 – 위 탐지 지표를 SIEM에 연동해 실시간 경보 체계 구축.

*본 보고서는 다중 소스 데이터 일관성이 확인된 결과([교차검증] 신뢰도 1.0)와 EPSS 0.00161이라는 실측 악용 예측값을 바탕으로, CVSS 7.8·non‑KEV·exploit hard라는 우선순위 논리

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=7.8 · non-KEV · EPSS=0.00161 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…