Null Pointer Dereference

Detects code that dereferences pointers or return values that could be NULL without validation, causing crashes or privilege escalation.

zakirkun Updated

File contents

Null Pointer Dereference

Overview

Null pointer dereference occurs when code uses a pointer without checking whether it's NULL. This causes:

  • Crash/DoS: SIGSEGV on Unix, access violation on Windows
  • Kernel privilege escalation: NULL pointer dereference in kernel context can map page 0 and execute attacker code
  • Logic bypass: Skipping NULL checks allows unexpected code paths

Detection Strategy

  • Return values of malloc(), calloc(), realloc() used without NULL check
  • Results of fopen(), popen() dereferenced without NULL check
  • Java objects returned from getById() or map lookups used without null check

Remediation

Always check pointers for NULL before dereferencing.

Vulnerable (C):

char *buf = malloc(256);
strcpy(buf, input); // buf might be NULL if malloc failed!

Safe (C):

char *buf = malloc(256);
if (buf == NULL) { perror("malloc"); exit(1); }
strcpy(buf, input);

zakirkun/ice-tea/tree/main/skills/memory/null-pointer-deref commit 014ccbc547

Frequently asked questions

npx skillmds@latest add zakirkun/null-pointer-dereference