CVE-2026-15891 in Zephyr정보

요약

\~에 의해 VulDB • 2026. 09. 14.

MQTT-SN 클라이언트의 keepalive 처리기인 subsys/net/lib/mqtt_sn/mqtt_sn.c의 `process_ping()` 함수는 PINGREQ 재시도 횟수가 소진된 후 게이트웨이 레코드를 제거합니다. 이 코드는 `SYS_SLIST_PEEK_HEAD_CONTAINER(&client->gateways, gw, next)`를 호출하지만 그 결과를 버립니다. 해당 매크로는 `gw`에 할당하지 않는 순수 표현식(pure expression)이므로, 리스트의 내용과 관계없이 `gw`는 NULL 초기화 값을 유지합니다.

그 후 코드는 NULL인 `gw`(즉, `gw->gw_id`)를 역참조하여 `mqtt_sn_gw_destroy()`로 전달하고, 이는 `k_mem_slab_free(&gateways, NULL)`에 도달합니다. `CONFIG_MEM_SLAB_POINTER_VALIDATE`가 활성화된 경우 이것은 `k_panic();`를 트리거하며, 기본 구성에서는 NULL 포인터를 통한 쓰기(`(char *)mem = slab->free_list;`)를 수행하여 슬랩(free list)을 손상시킵니다. 그 결과 크래시/커널 패닉이 발생하거나, 주소 0이 쓰 가능한 타겟의 경우 메모리 할당자의 침묵적인 손상이 발생합니다.

취약한 분기는 연결된 MQTT-SN 게이트웨이가 구성된 재시도 횟수 동안 keepalive PINGREQ에 응답하지 않을 때 항상 실행됩니다. 이 조건은 원격 피어(peer)가 제어합니다: 악의적이거나 침해당한 게이트웨이, 또는 게이트웨이로 자신을 광고한 후 응답을 중단하거나(또는 실제 게이트웨이의 PINGRESP를 블랙홀 처리하는) 경로 상/인접 공격자가 클라이언트를 결함 상태로 만듭니다. MQTT-SN은 UDP 위에서 실행되며 인증이 필요하지 않습니다.

영향력은 영향을 받는 MQTT-SN 클라이언트의 원격 트리거 가능 서비스 거부(가용성 저하)이며, 공격자가 제어한 데이터는 쓰되지 않습니다. 형제 제거 프로세스인 `process_advertise()`는 `SYS_SLIST_FOR_EACH_CONTAINER_SAFE`를 사용하므로 영향받지 않습니다. 수정 방법은 매크로의 반환 값을 `gw`에 할당하는 것입니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 07. 15.

모더레이션

수락

항목

VDB-403353

EPSS

0.00000

출처

Want to know what is going to be exploited?

We predict KEV entries!