⬢ DragonFlyBSD Kernel Audit
DF-5674 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5674",
  "title": "prop_dictionary keysym release mutates the global rb-tree without the tree mutex (CWE-362 -> CWE-416)",
  "manifest_version": 1,
  "verdict": "reproduced",
  "impact": "userland heap corruption (same-source libprop); latent kernel heap corruption",
  "reproduce": {
    "build": "sh build.sh  (guest, as root, /tmp; builds baseline/probe/fixed libs from /usr/src/sys/libprop + harnesses)",
    "run": "sh run.sh",
    "expected": "baseline: SIGSEGV in _prop_rb_tree_remove_node (5/5); probe: DF5674_unlocked_frees=88..1145 + crash incl. _prop_rb_tree_insert_node; control noremove: survives; fixed lib: 10/10 survive"
  },
  "kernel_refs": [
    "sys/libprop/prop_dictionary.c:148-153",
    "sys/libprop/prop_dictionary.c:203-206",
    "sys/libprop/prop_dictionary.c:233-242",
    "sys/libprop/prop_dictionary.c:294-341",
    "sys/libprop/prop_dictionary.c:843-871",
    "sys/libprop/prop_dictionary.c:1006-1011",
    "sys/libprop/prop_dictionary.c:1082-1107",
    "sys/libprop/prop_dictionary.c:1123",
    "sys/libprop/prop_object.c:1061-1107",
    "sys/libprop/prop_array.c:72-80",
    "sys/kern/kern_udev.c:229-235",
    "sys/kern/kern_udev.c:405",
    "sys/kern/vfs_quota.c:344-349"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "race_keysym.c", "race_attr.c", "race_probe.c",
    "proprop_dictionary.c", "pfix_dictionary.c", "pfix_object_impl.h",
    "build.sh", "run.sh", "run.log", "run.2.log", "run.3.log",
    "fixrun-summary.txt", "console_crash.txt", "env.txt", "fix.diff",
    "code_hashes.txt", "manifest.json", "verdict.json"
  ]
}