[공격] 분석 — CVE-2025-68816
The mlx5 firmware tracer format‑string flaw can be weaponized by delivering malicious NIC firmware that feeds unsafe specifiers to the kernel, so immediate patching and strict firmware integrity checks are essential.
📋 요약
- 심각도 미상 · CVSS 미상 · EPSS 0.00177 · 악용난이도 hard
🔍 공격 기법
-
공격 표면 :
net/mlx5드라이버의 트레이스 인터페이스(펌웨어 → 커널)에서 포맷 문자열을 전달받는 경로. -
전제조건
- 대상 시스템에 Mellanox ConnectX‑5/6 계열 NIC가 장착되어 있고,
mlx5드라이버가 로드된 Linux 커널(패치 이전 버전). - 공격자는 해당 NIC의 펌웨어를 조작·플래시할 수 있는 권한을 보유한다(공급망 침투, 물리적 접근, 혹은 루트 권한을 이용한 로컬 플래싱 툴 사용).
- 대상 시스템에 Mellanox ConnectX‑5/6 계열 NIC가 장착되어 있고,
-
정찰 :
lspci -nn | grep Mellanox등으로 NIC 존재 확인 → 펌웨어 업데이트 메커니즘(벤더 전용 유틸리티,/dev/mst/mt4115_pciconf) 조사. -
초기 접근 :
- 공급망 단계 – 신뢰되지 않은 제조·유통 경로에서 변조된 펌웨어 이미지를 삽입.
- 로컬 단계 – 루트 권한으로
mlxfwreset등 벤더 툴을 이용해 임의 펌웨어 플래시.
-
실행 : 변조된 펌웨어가 부팅 시
mlx5_tracer에 다음과 같은 포맷 문자열을 전송한다.text1"BAD_FORMAT: %n %p %s"검증 로직이 없으면 커널 내부
vsprintf()가 실행되어%n→ 스택/힙 쓰기, 메모리 손상%p,%s→ 임의 주소 읽기·쓰기, 잠재적 코드 실행
-
권한 획득 / 지속 : 메모리 오염이 성공하면 커널 스택을 덮어
ret값을 조작하거나 함수 포인터를 변경해 루트 권한 상승을 달성한다. 이후 공격자는 영구적인 백도어(예:rootkit모듈 삽입)나 추가 DMA‑Write 기반 악용으로 전이할 수 있다. -
CVSS 벡터 (추정) : AV=P(Physical/PCIe), AC=H, PR=N, UI=N, S=U, C=H/I/L 등 → 물리·펌웨어 제어가 핵심이며 네트워크를 통한 직접 공격은 불가능함을 반영.
악용 가능성: 이 취약점은 mlx5 드라이버가 펌웨어로부터 전달받는 포맷 문자열을 검증하지 않아 발생합니다. CVSS 벡터에서 AV=Local, AC=High, PR=Root/Administrator, UI=None에 해당하는데, 이는 공격자가 실제로 악성 펌웨어를 NIC에 플래시하거나 시스템 관리 권한으로 업데이트 과정을 가로채야만 문자열을 주입할 수 있음을 의미합니다. 따라서 “Hard” 등급이 부여된 것이며, 일반 사용자나 원격 네트워크에서 직접 이용하기는 매우 어렵습니다. EPSS 값 0.00177(≈0.18 %)과 KEV 미등재는 현재까지 실전 악용 사례가 거의 없으며, 위협 모델에서도 낮은 확률임을 뒷받침합니다. 공격 표면은 PCIe 장치‑드라이버 인터페이스와 펌웨어 업데이트 API/명령어이며, 이 두 경로를 통해 전달되는 포맷 문자열이 유일한 입력점입니다. 즉, 악성 펌웨어가 성공적으로 배포돼야만 취약점이 트리거되며, 이는 물리적 접근 혹은 고도화된 공급망 공격 수준의 전제조건을 요구합니다. 이러한 조건들을 모두 충족해야 비로소 커널 내부에서 포맷 문자열 파싱 오류가 발생해 시스템 크래시나 메모리 오염으로 이어질 수 있습니다.
💥 영향 분석
- 시스템 크래시 : 검증되지 않은 포맷 문자열에 의해 커널 OOPS/패닉 발생 → 서비스 거부(DoS).
- 권한 상승 : 메모리 쓰기(
%n)가 성공하면 로컬 루트 권한을 획득, 이후 모든 시스템 자원에 무제한 접근 가능. - 정보 유출 :
%p,%s등으로 커널 주소·민감 데이터가 로그에 출력될 경우, 메모리 레이아웃 정보가 외부에 노출되어 추가 공격의 기반이 된다.
🔗 관련 취약점·체이닝
- 형식 문자열 (CWE‑134) : 기본적인 포맷 스트링 오용으로 메모리 손상·코드 실행.
- 펌웨어 무결성 부재(추정) : 벤더가 제공하는 펌웨어 서명 검증이 없거나 비활성화된 경우, 변조 펌웨어 삽입이 가능해짐 → 이 단계가
mlx5포맷 문자열 취약점과 직접 연결됨. - DMA‑Write / IOMMU 우회(추정) : 공격자가 이미 DMA 권한을 확보했다면, 포맷 문자열보다 직접 메모리 덮어쓰기 경로를 이용해 더 빠르게 커널을 장악할 수 있음. 따라서 이 취약점은 “펌웨어 → 포맷 문자열 → 메모리 오염” 체인의 초기 단계에 해당한다.
🔎 탐지
dmesg·/var/log/kern.log등에"BAD_FORMAT:"접두사가 붙은 메시지가 기록될 경우(패치 전후 모두).- 커널 OOPS 또는
printk로깅이 급증하고, 해당 로그에 비정상적인 포맷 specifier(%n,%p)가 포함된 문자열이 나타나는 현상. - NIC 펌웨어 버전/해시와 시스템 인벤토리 간 불일치 감지(예:
mlxfw명령어 출력과 중앙 DB 비교).
🛡️ 완화 방안
- 패치 적용 – 최신 Linux 커널(mlx5 드라이버에
mlx5_tracer_validate_params()가 포함된 버전)으로 업데이트하고, 배포판 보안 공지를 지속적으로 모니터링한다. - 펌웨어 무결성 검증 – 벤더 서명 기반 펌웨어 검증을 활성화하고, 신뢰되지 않은 공급망에서 온 NIC는 사용 전 물리적 격리 후 검증한다.
- IOMMU 강제 적용 – PCIe 디바이스에 대한 DMA 영역을 제한하여, 설령 악성 펌웨어가 실행돼도 커널 메모리 직접 쓰기를 차단한다.
- 로그 모니터링 –
BAD_FORMAT:문자열 및 비정상적인 포맷 specifier 로그를 실시간 SIEM 규칙으로 추가하고, 이상 징후 발생 시 즉시 알림을 설정한다. - 자산 조사 – 현재 운영 중인 모든 Mellanox NIC의 펌웨어 버전·해시를 수집하고, 의심스러운 이력(교체·업데이트 기록) 존재 시 물리적 검증 및 교체를 수행한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=미상 · non-KEV · EPSS=0.00177 · exploit=hard · in_scope=None