[공격] 분석 — CVE-2026-24237
CVE-2026-24237 enables unauthenticated local deserialization of untrusted pickle/joblib data in NVIDIA NVTabular, leading to remote code execution; immediate upgrade and strict safe‑load/whitelisting are required.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.0017 · 악용난이도 hard
🔍 공격 기법
- 정찰: 호스트 내·CI 로그, 컨테이너 이미지, 파이썬 의존성 트리를 분석해
nvtabular.io.load_pipeline,pickle.load,joblib.load호출 위치와 외부 스토리지(S3/HDFS 등) 마운트 경로를 식별한다. (다중 소스 데이터 일관성 확인됨) - 초기 접근: 로컬 계정(서비스 계정, CI 토큰, Jupyter 세션 등) 확보가 전제이며, CVSS 벡터 AV:L/PR:L/UI:N에 부합한다.
- 페이로드 배치: 공격자는 접근 가능한 파일 시스템 혹은 마운트된 외부 스토리지에 악의적인
*.pkl·*.joblib객체를 저장한다. 경로 예시:/tmp/malicious.pkl, S3 버킷 내data/payload.joblib. - 트리거 조건: NVTabular 파이프라인 로드 단계에서 입력 검증 없이
pickle.load(open(path,'rb'))또는joblib.load(path)가 자동 실행된다. 파일 존재만으로 발동하므로 AC:L(낮은 난이도)이다. - 실행·권한 획득: 역직렬화된 객체의
__reduce__/__setstate__메서드가 임의 파이썬 코드를 실행해 현재 프로세스 사용자 권한(Low privilege)으로 쉘을 띄우거나 악성 모듈을 로드한다. 이는 A:H(전면 영향)를 만족한다. - 지속: 백도어 객체를 포함한
pipeline.pkl을 영구 저장하면 정상 파이프라인 재실행 시마다 코드가 실행돼 지속성이 확보된다. - 영향: 전체 호스트 장악, NVTabular가 처리 중인 학습/추론 데이터 변조·삭제, 클라우드 자격증명·시크릿 파일 유출 등. EPSS=0.0017(실측 악용 확률)에도 불구하고 고위험(C:H/I:H/A:H)으로 우선 대응 필요.
악용 가능성: 이 취약점은 AV:L (로컬)·AC:L (낮은 복잡도)·PR:L (낮은 권한)·UI:N (사용자 상호작용 없음)이라는 CVSS 벡터가 의미하듯, 공격자는 대상 시스템에 이미 로컬 접근 권한이 있을 경우 별도의 추가 단계 없이 바로 악용할 수 있습니다. 따라서 실제 난이도는 “hard”로 평가되지만, 이는 공격자가 루트 혹은 동일 사용자 수준의 권한을 보유하고 있어야 한다는 전제하에 낮은 복잡도로 실행 가능함을 의미합니다. EPSS 0.0017이라는 실측값과 KEV 미등재 사실은 현재 공개된 악용 사례가 거의 없으며, 공격이 실제 환경에서 발생할 확률이 매우 낮다는 점을 보여줍니다. 그러나 NVTabular의 deserialize 함수가 외부 입력(예: 파일, 파라미터, REST API payload) 을 검증 없이 처리한다면, 해당 엔드포인트에 악성 직렬화 데이터를 전달하는 것만으로 코드 실행이 가능해집니다. 노출되는 공격 표면은 Python pickle 또는 protobuf 형식의 데이터 로더, CLI 옵션 및 내부 파이프라인 정의 파일 등이며, 이들 중 하나라도 신뢰되지 않은 소스로부터 입력받을 경우 취약성이 발현됩니다. 따라서 공격 흐름은 “정찰(시스템에 NVTabular 설치 여부 확인) → 초기 접근(로컬 계정 획득) → 악성 직렬화 데이터 주입 → 코드 실행/데이터 변조·정보 유출” 순으로 전개될 수 있습니다.
💥 영향 분석
- 임의 파이썬 코드 실행 → 호스트 전체 장악
- 데이터 프레임·모델 가중치 변조 → 비즈니스 로직 및 모델 정확도 심각 훼손
- 민감 정보(클라우드 키, 내부 DB 스키마 등) 탈취 → 추가 공격 경로 확보
🔗 관련 취약점·체이닝
- CWE‑502 (Deserialization): 역직렬화 객체가 시스템 명령을 호출하면 RCE가 성립한다.
- **CWE‑276 / CWE‑345 (권한·무결성 부재)**와 연계될 경우, 외부 스토리지에서 내려받은 파일이 검증 없이 로드되어 공격 표면이 확대된다(추정).
- 공급망 공격: 악의적인 모델 아티팩트가 CI/CD 파이프라인에 주입돼 배포 단계부터 백도어를 내장할 수 있다.
🔎 탐지
- EDR/OSSEC 등에서
python * -c "import pickle; pickle.loads"혹은joblib.load(호출을 감시하고, 경로가/tmp, 사용자 홈 외부인 경우 알림 생성. - NVTabular 파이프라인 로드 로그에 파일 해시·소유자 변화를 기록하고, 해시 불일치 시 SIEM 경보.
- 프로세스 트리
python → sh → nc등 비정상적인 자식 프로세스 생성 감지.
🛡️ 완화 방안
- 패치 적용: NVTabular ≥ 2026‑03‑12 버전으로 즉시 업그레이드한다.
- 입력 검증 강화:
pickle·joblib사용을 전면 금지하고,nvtabular.io.safe_load혹은 JSON/YAML safe 파서를 적용한다. - 화이트리스트: 역직렬화 허용 클래스 목록을 제한하고, 허용되지 않은 객체 로드 시 예외를 발생시킨다.
- 파일 무결성·접근 제어: 파이프라인 아티팩트 디렉터리 권한을 최소(소유자 전용)으로 설정하고, 서명·검증 절차를 CI/CD에 통합한다.
- 모니터링 연동: 위 탐지 규칙을 EDR/SIEM에 배포하고, 의심스러운 역직렬화 시도 발생 시 실시간 알림을 활성화한다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.0017 · exploit=hard · in_scope=None