[방어] 분석 — CVE-2026-24157
The NVIDIA NeMo Framework deserialization flaw (CVE-2026-24157) enables remote code execution via crafted checkpoint files, and the highest‑priority mitigation is to block loading of untrusted checkpoints immediately.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00654 · 악용난이도 hard
🔍 공격 기법
- 공격자는 신뢰되지 않은 위치에 조작된 NeMo 체크포인트 파일을 배치하고, 해당 파일이
torch.load등 역직렬화 함수로 로드되도록 유도합니다. - 내부적으로
pickle객체가 실행되어 임의 명령이 실행되고, 이후 권한 상승·데이터 탈취·변조까지 이어질 수 있습니다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로 평가되어, 공격자는 로컬 환경에서 낮은 복잡도(특별한 권한 우회 없이)와 저권한(일반 사용자 계정)만으로, 사용자 개입 없이 악성 체크포인트를 로드하도록 유도하면 된다. 따라서 실제 공격 전제조건은 ① 취약한 서비스가 실행 중인 호스트에 접근 가능(SSH·콘솔 등), ② 해당 서비스가 외부 파일을 체크포인트로 받아들이는 경로나 API(예: /load_checkpoint REST 엔드포인트, CLI 옵션) 를 제어할 수 있는 경우이다. EPSS = 0.00654 로 측정된 점수는 현재 전 세계적으로 악용 가능성이 낮지만 완전히 배제되지 않으며, 공격자가 위 조건을 충족하면 실제로 원격 코드 실행이 가능한 ‘실제 위협’임을 시사한다. KEV에 등재되지 않은 것은 아직 대규모 캠페인이나 공개 익스
💥 영향 분석
- 성공적인 악용 시 원격 코드 실행이 발생하여 공격자는 시스템 셸을 획득합니다.
- 취득한 권한으로 권한 상승, 민감 데이터 유출, 시스템 파일 및 모델 파라미터 변조가 가능합니다.
🔗 관련 취약점·체이닝
- 동일한 역직렬화 원리를 이용하는 CVE‑2021‑XYZ(예시)와 같이
pickle기반 로드 시 임의 객체 삽입 공격이 가능함을 참고하십시오. (실제 번호는 확인되지 않음)
🔎 탐지
-
로그 지표
application.log:torch.load호출 직전/후에 기록되는 파일 경로(filepath)와 로드 성공 여부(status).system.audit: 비정상적인execve/bash프로세스 생성 시점과 부모 프로세스(neMo_server) 정보.
-
SIEM 탐지 규칙 예시
- 역직렬화 파일 로드 감시
1source = "application.log" 2where message matches /torch\.load\((?<path>.+?)\)/ 3 and path not in whitelist 4 and status == "success" 5alert "NeMo checkpoint load from untrusted path"- 비정상적인 프로세스 생성
1source = "system.audit" 2where process_name == "python" 3 and command_line contains "torch.load" 4 and parent_process_name != "neMo_trusted_loader" 5alert "Suspicious torch.load execution"- 파일 무결성 변경 감시 (정규식)
1source = "file.integrity" 2where path matches /.*\/(model|checkpoint)_.+\.pt$/ 3 and change_type == "modified" 4 and user not in ["mlops", "root"] 5alert "Untrusted checkpoint modification detected"- 오탐 튜닝
- 정상적인 모델 업데이트 파이프라인에서 발생하는
torch.load는 사전에 정의한 화이트리스트(whitelist)에 경로를 추가해 제외합니다. - CI/CD 자동 배포 시 생성되는 임시 파일은
process_name == "ci_runner"조건을 추가하여 필터링합니다.
- 정상적인 모델 업데이트 파이프라인에서 발생하는
🛡️ 완화 방안
-
즉시(긴급 차단)
- 모든 NeMo 서비스에 대해 checkpoint 로드 경로를 제한하는 ACL을 적용하고, 신뢰된 디렉터리(
/opt/nemo/models/) 외의 파일 접근을 차단합니다.- 구현 난이도: ★★☆☆☆ (방화벽/OS 수준 파일 권한 설정)
- 운영 영향: 기존 파이프라인에서 비신뢰 경로를 사용한다면 즉시 오류 발생 가능 → 사전 점검 필요
- 검증 방법: 차단된 경로에 대해
torch.load호출 시Permission denied로그가 기록되는지 확인
- 모든 NeMo 서비스에 대해 checkpoint 로드 경로를 제한하는 ACL을 적용하고, 신뢰된 디렉터리(
-
단기(완화)
-
입력 파일 무결성 검증 – 체크포인트 로드 전 SHA‑256 해시를 사전 정의된 값과 비교하도록 어플리케이션 레이어에 래퍼 함수를 삽입합니다.
- 난이도: ★★★☆☆ (코드 수정 및 재배포)
- 영향: 로드 지연 최소 0.1 s, 기존 모델 배포 시 해시 관리 필요
- 검증: 정상 파일은
hash match로그, 변조 파일은hash mismatch → abort로그 확인
-
역직렬화 비활성화 옵션 – NeMo가 제공하는
torch.load(..., map_location='cpu', pickle_module=SafeUnpickler)와 같은 안전 로더 사용을 강제합니다.- 난이도: ★★☆☆☆ (설정 파일 수정)
- 영향: 일부 커스텀 레이어가 로드되지 않을 수 있음 → 테스트 필요
-
-
근본(해결)
- NVIDIA에서 제공하는 패치 버전(예: NeMo 2.1.0 이상) 적용 및 최신 릴리즈로 업그레이드합니다. 패키지 매니저(
pip install --upgrade nemo_toolkit)를 이용해 배포 자동화 파이프라인에 반영하십시오.- 난이도: ★★★★☆ (전체 환경 재배포)
- 운영 영향: 서비스 재시작 필요, 호환성 테스트 필수
- 검증: 패치 적용 후 동일 로그 패턴이 발생하지 않는지 회귀 테스트 수행
- NVIDIA에서 제공하는 패치 버전(예: NeMo 2.1.0 이상) 적용 및 최신 릴리즈로 업그레이드합니다. 패키지 매니저(
-
잔여 리스크
- 패치 전까지는 위 즉시·단기 조치를 유지해야 하며, 화이트리스트 관리 오류 시 오탐·누락 가능성이 남습니다.
- 완전한 방어를 위해 정기적인 패키지 버전 점검과 보안 빌드 파이프라인 적용을 권고합니다.
-
인시던트 대응 플레이북 (핵심 순서)
application.log·system.audit에 “NeMo checkpoint load from untrusted path” 알림 발생 여부 확인- 해당 프로세스 PID, 부모 PID, 실행 사용자 식별 → 즉시 해당 세션 종료 (
kill -9) - 의심 파일 경로를 격리하고 해시 검증 수행
- 침해 범위(네트워크 연결, 추가 파일 생성) 조사 후 포렌식 로그 수집
- 위 즉시 차단 조치를 적용하고, 단기·근본 완화 단계로 전환
이와 같이 즉시 차단을 시행한 뒤, 단계별 완화를 진행하면 CVE-2026-24157에 대한 실효성 있는 방어가 가능합니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00654 · exploit=hard · in_scope=None