DF-3319 / manifest.json
{ "finding_id": "DF-3319", "file": "sys/netinet/in.c", "title": "v4 SIOCDLIFADDR kernel stack buffer overflow: unvalidated/confused ia_sockmask.sin_len as bcopy length into 64-byte on-stack in_aliasreq (in.c:949-956)", "verdict": "reproduced", "impact": "panic", "confidence": "certain", "reproduce": { "build": "cd findings/poc/DF-3319 && sh build.sh", "run": "as root on the guest: ./getlif lo0; ./smash lo0 (stock kernel: Fatal trap 12, guest wedges in DDB)", "expected": "Fatal trap 12: page fault while in kernel mode; fault virtual address = 0xe4 (supervisor write); instruction pointer = 0xfffff8004f308f46 (heap-derived, smashed return path); current process = Idle (netisr0); guest wedged in DDB, ssh dead. On the fix.diff-patched kernel: EADDRNOTAVAIL, guest stays up, lo0 intact." }, "kernel_refs": [ "sys/netinet/in.c:911", "sys/netinet/in.c:915-916", "sys/netinet/in.c:923", "sys/netinet/in.c:941-959", "sys/netinet/in.c:955-956", "sys/netinet/in.c:230-248", "sys/netinet/in.c:437-441", "sys/netinet6/in6_var.h:116-132" ], "artifacts": [ "README.md", "VERDICT.md", "smash.c", "getlif.c", "build.sh", "run.sh", "precheck.log", "run.log", "smash.log", "panic.txt", "fix.diff", "fix_run.log", "fix_build.log", "verdict.json", "manifest.json" ] } |