DF-2548 / leak_sample.txt
=== DF-2548 kern.ttys pointer leak โ raw leaked pointers (unpatched #0 baseline) ===
=== Read as uid 1001 (maxx, NOT in wheel). 3 consecutive runs, byte-identical (deterministic). ===
--- Run 1 (decisive baseline run, full output in run.log) ---
blob off 24 TEXT/FN : 0xffffffff80c64d8d
blob off 48 HEAP/DM : 0xfffff801168fb400
blob off 80 HEAP/DM : 0xfffff801168db800
blob off 112 HEAP/DM : 0xfffff8008d4a3800
blob off 160 HEAP/DM : 0xfffff8011690f808
blob off 168 HEAP/DM : 0xfffff8011692de10
blob off 256 TEXT/FN : 0xffffffff80b8c0f0
blob off 264 TEXT/FN : 0xffffffff806b87a0
blob off 272 TEXT/FN : 0xffffffff80b87220
blob off 352 HEAP/DM : 0xfffff8011865b600
blob off 360 TEXT/FN : 0xffffffff810e5200
blob off 400 TEXT/FN : 0xffffffff80c64d8d
blob off 424 HEAP/DM : 0xfffff8008bbb6c00
blob off 456 HEAP/DM : 0xfffff8008dcf1800
blob off 488 HEAP/DM : 0xfffff8008d200200
blob off 536 HEAP/DM : 0xfffff8004f1c6208
blob off 544 HEAP/DM : 0xfffff8008bb1fee8
blob off 632 TEXT/FN : 0xffffffff80b8c0f0
blob off 640 TEXT/FN : 0xffffffff806b87a0
blob off 648 TEXT/FN : 0xffffffff80b87220
blob off 728 HEAP/DM : 0xfffff8011865b600
blob off 736 HEAP/DM : 0xfffff8004f2e5f00
blob off 776 TEXT/FN : 0xffffffff80c64d8d
blob off 800 HEAP/DM : 0xfffff801182bd800
blob off 832 HEAP/DM : 0xfffff80118295800
blob off 864 HEAP/DM : 0xfffff8008d5d6a00
blob off 912 HEAP/DM : 0xfffff80118058bb0
blob off 920 HEAP/DM : 0xfffff80116d4e630
blob off 1008 TEXT/FN : 0xffffffff80b8c0f0
blob off 1016 TEXT/FN : 0xffffffff806b87a0
blob off 1024 TEXT/FN : 0xffffffff80b87220
blob off 1104 HEAP/DM : 0xfffff8011865b600
blob off 1112 HEAP/DM : 0xfffff8004f2e5d80
blob off 1152 TEXT/FN : 0xffffffff80c64d8d
blob off 1176 HEAP/DM : 0xfffff801182a0400
blob off 1208 HEAP/DM : 0xfffff80118296000
blob off 1240 HEAP/DM : 0xfffff8008d5d7c00
blob off 1288 HEAP/DM : 0xfffff80118058c28
blob off 1296 HEAP/DM : 0xfffff80116d4e698
blob off 1384 TEXT/FN : 0xffffffff80b8c0f0
blob off 1392 TEXT/FN : 0xffffffff806b87a0
blob off 1400 TEXT/FN : 0xffffffff80b87220
blob off 1480 HEAP/DM : 0xfffff8011865b600
blob off 1488 HEAP/DM : 0xfffff8004f2e5c00
blob off 1528 TEXT/FN : 0xffffffff80c64d8d
blob off 1552 HEAP/DM : 0xfffff80118312400
blob off 1584 HEAP/DM : 0xfffff801182f6800
blob off 1616 HEAP/DM : 0xfffff8008d6f7c00
TOTAL kernel-range pointers leaked : 102
of which kernel .text/.rodata (FN) : 38
of which heap/direct-map : 64
VERDICT: LEAK CONFIRMED โ unprivileged user obtained 102 raw kernel pointers from kern.ttys (KASLR-defeating).
--- Run 2 (run.2.log) โ variance check ---
TOTAL kernel-range pointers leaked : 102
of which kernel .text/.rodata (FN) : 38
of which heap/direct-map : 64
--- Run 3 (run.3.log) โ variance check ---
TOTAL kernel-range pointers leaked : 102
of which kernel .text/.rodata (FN) : 38
of which heap/direct-map : 64
=== Cross-reference: leaked .text addresses vs /boot/kernel/kernel symbols ===
0xffffffff806b87a0 (appears at intra-record off 264/640/1016/1392 = t_stop)
-> near ttyread (0xffffffff806b87b0), ptsstart (0xffffffff806bac90),
ptsstop (0xffffffff806bac00), ptsunhold (0xffffffff806b9ce0)
These are kernel .text addresses -> directly defeats KASLR base.
=== Pattern: driver function pointers repeat identically across records ===
(t_oproc/t_stop/t_param/t_unhold are static driver symbols; same addr every record)
offsets 256/264/272/360 == 632/640/648/728 == 1008/1016/1024/1104 == 1384/1392/1400/1480
(intra-record mod 376: 256/264/272/360 โ the t_oproc/t_stop/t_param/t_unhold fields)
=== Patched kernel (#1) ===
TOTAL kernel-range pointers leaked : 0
of which kernel .text/.rodata (FN) : 0
of which heap/direct-map : 0
VERDICT: NO LEAK โ pointer fields are sanitized (fixed kernel).