⬢ DragonFlyBSD Kernel Audit
DF-3280 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3280",
  "title": "if_getgroupmembers() walks a stale ifg_group pointer: SIOCGIFGMEMB use-after-free read",
  "verdict": "reproduced",
  "impact": "leak",
  "confidence": "certain",
  "reproduce": {
    "build": "cc -O2 -o /root/gmembr_churn /root/gmembr_churn.c && cc -O2 -o /root/gmembr_reader /root/gmembr_reader.c",
    "run": "(root) nohup /root/gmembr_churn rgrpA lo0 >/root/churn.log 2>&1 & ; (unpriv user) /home/maxx/gmembr_reader rgrpA",
    "expected": "reader logs ANOMALY lines (member entries that are not 'lo0' = kernel heap read through the dangling ifg pointer); baseline runs produced 2/9/3 anomalies across three independent runs; panic possible but not observed (type-stable 48-byte M_IFNET bucket reuse); fixed kernel: 0 anomalies."
  },
  "kernel_refs": [
    "sys/net/if.c:1314",
    "sys/net/if.c:1324",
    "sys/net/if.c:1337",
    "sys/net/if.c:1346",
    "sys/net/if.c:1350",
    "sys/net/if.c:1352",
    "sys/net/if.c:1366",
    "sys/net/if.c:1234",
    "sys/net/if.c:1139",
    "sys/net/if.c:1289"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "gmembr_reader.c", "gmembr_churn.c",
    "build.sh", "run.sh", "build.log",
    "run.log", "run.2.log", "run.3.log", "churn3.log",
    "run.fix.log", "churnFIX.log",
    "fix.diff", "fix_validation.diff", "kbuild.log", "env.txt",
    "manifest.json", "verdict.json"
  ]
}