⬢ DragonFlyBSD Kernel Audit
DF-3377 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3377",
  "title": "PIM6 REGISTER decap panics: fake multicast_register_if never if_attach()ed; if_simloop() writes through NULL if_data_pcpu (3 stacked NULL derefs incl. in6_ifawithifp and in6_addr2zoneid)",
  "verdict": "reproduced",
  "reproduced": 1,
  "impact": "panic",
  "confidence": "certain",
  "reproduce": {
    "build": "cc -O -Wall -o /tmp/df3377 /root/poc/trigger_pim6_reg.c",
    "run": "/tmp/df3377   (as root)",
    "expected": "stock kernel #0: output stops after '[trigger] variant A ... sendto: rc=52'; serial console shows 'Fatal trap 12 ... fault virtual address = 0x0 ... Stopped at if_simloop+0x112: addq $0x1,(%rax)'. patched kernel #1: both variants complete with mif/sg counters incremented and 'no panic observed: guest still alive'."
  },
  "kernel_refs": [
    "sys/netinet6/ip6_mroute.c:1842",
    "sys/netinet6/ip6_mroute.c:175",
    "sys/netinet6/ip6_mroute.c:585-596",
    "sys/netinet6/ip6_mroute.c:1420-1421",
    "sys/netinet6/ip6_mroute.c:1433-1435",
    "sys/net/if_loop.c:284",
    "sys/net/if_var.h:685-688",
    "sys/net/if.c:550-553",
    "sys/net/if.c:591-593",
    "sys/netinet6/ip6_input.c:531-534",
    "sys/netinet6/in6.c:2318",
    "sys/netinet6/scope6.c:52-62",
    "sys/netinet6/scope6.c:278-288"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "trigger_pim6_reg.c", "build.sh", "run.sh",
    "build.log", "run.log", "fix_run.log", "fix_build.log",
    "panic.txt", "panic.2.txt", "env.txt", "fix.diff",
    "manifest.json", "verdict.json"
  ]
}