Skip to content

Commit 5e7ea88

Browse files
committed
Mark the deb13 profile as contributor-reported
1 parent b5e7c00 commit 5e7ea88

2 files changed

Lines changed: 47 additions & 14 deletions

File tree

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ offsets-only entry. All `yes` rows use the lab configuration: Apache prefork
5757
`session.upload_progress=On`. Per-image offsets and `libphp` sha256 are in
5858
[the offset inventory](docs/offset-inventory.md). The 8.4.25 profile needs the
5959
default retries because its stage 3 is probabilistic. The 8.4.26 deb13/apxs2
60-
row is a **source build**, not an official image: its stage-3 phase is
61-
instance-dependent (the contributor reported 4/4 runs on one Apache master and
60+
row is a **contributor-reported source build**, not an official image: its
61+
stage-3 phase is instance-dependent (the contributor reported 4/4 runs on one Apache master and
6262
0/5+ on others), so treat `rce: true` as “reproduced on the reporter's lab” and
6363
retry on a fresh worker/master. Because two 8.4.26 amd64 profiles exist, the
6464
dispatcher requires `--profile deb13-apxs2` for this build.

‎profiles/php-8.4.26-deb13-apxs2-amd64.json‎

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,50 @@
1818
"stage2_t": 442,
1919
"stage2_v": 1,
2020
"stage3_pads": [
21-
[4, 4],
22-
[4, 4],
23-
[4, 4],
24-
[4, 4],
25-
[4, 4],
26-
[31, 31],
27-
[31, 31],
28-
[31, 31],
29-
[31, 31],
30-
[31, 31],
31-
[31, 31]
21+
[
22+
4,
23+
4
24+
],
25+
[
26+
4,
27+
4
28+
],
29+
[
30+
4,
31+
4
32+
],
33+
[
34+
4,
35+
4
36+
],
37+
[
38+
4,
39+
4
40+
],
41+
[
42+
31,
43+
31
44+
],
45+
[
46+
31,
47+
31
48+
],
49+
[
50+
31,
51+
31
52+
],
53+
[
54+
31,
55+
31
56+
],
57+
[
58+
31,
59+
31
60+
],
61+
[
62+
31,
63+
31
64+
]
3265
],
3366
"stage3_carrier": false,
3467
"stage3_cookie": true,
@@ -46,7 +79,7 @@
4679
"measured": {
4780
"chunk_base": "0x7fbcf4200000"
4881
},
49-
"status": "RCE verified on a source-built Debian 13 lab (apxs2, Apache 2.4.69 prefork, 1 worker): uid=33(www-data) 4/4 runs through the vendor engine with this profile's parameters; stages 1-2 dispatch cleanly on every attempt. Stage-3 phase is instance-dependent (after an apache restart, a fresh master may not reclaim; retry on a new instance) and the layout differs from the docker 8.4.26 image (different toolchain): third stage-3 layout with a K=5 bin-32 phase shift. Each (4,4) pad allocates the session reference at the k-th bin-32 slot, shifting the fake-reference slot linearly, R0 = chunk+0x2260+0x60*K (gdb watchpoint sweep 0..16); K=5 places the bin-56 reclaim slot so the 31-byte fake reference is written whole (chars at R0, framing differs from the upstream 55-byte carrier whose chars land at R0+8). Stage-3 request 1 carries a PHPSESSID cookie and five 5-char/1-byte fill fields; request 2 reclaims with 15x 167-byte fake hashtables then 12x 31-byte fake references, all with 3-char field names. Command proof read out-of-band from /tmp inside the apache mount namespace (PrivateTmp; nsenter).",
82+
"status": "contributor-reported — RCE verified on a source-built Debian 13 lab (apxs2, Apache 2.4.69 prefork, 1 worker): uid=33(www-data) 4/4 runs through the vendor engine with this profile's parameters; stages 1-2 dispatch cleanly on every attempt. Stage-3 phase is instance-dependent (after an apache restart, a fresh master may not reclaim; retry on a new instance) and the layout differs from the docker 8.4.26 image (different toolchain): third stage-3 layout with a K=5 bin-32 phase shift. Each (4,4) pad allocates the session reference at the k-th bin-32 slot, shifting the fake-reference slot linearly, R0 = chunk+0x2260+0x60*K (gdb watchpoint sweep 0..16); K=5 places the bin-56 reclaim slot so the 31-byte fake reference is written whole (chars at R0, framing differs from the upstream 55-byte carrier whose chars land at R0+8). Stage-3 request 1 carries a PHPSESSID cookie and five 5-char/1-byte fill fields; request 2 reclaims with 15x 167-byte fake hashtables then 12x 31-byte fake references, all with 3-char field names. Command proof read out-of-band from /tmp inside the apache mount namespace (PrivateTmp; nsenter).",
5083
"oom_mb": 12,
5184
"oom_margin_mb": 12,
5285
"memory_limit_tested_mb": [

0 commit comments

Comments
 (0)