44 "title" : " PHP2Shell build profile" ,
55 "description" : " Per-build profile with libphp offsets, heap calibration parameters and RCE verification status." ,
66 "type" : " object" ,
7- "required" : [" name" , " php_version" , " branch" , " sapi" , " rce" , " libphp" , " stages" , " config" ],
7+ "required" : [
8+ " name" ,
9+ " php_version" ,
10+ " branch" ,
11+ " sapi" ,
12+ " arch" ,
13+ " rce" ,
14+ " libphp" ,
15+ " stages" ,
16+ " config"
17+ ],
818 "properties" : {
919 "name" : {
1020 "type" : " string" ,
2232 "description" : " PHP release branch, e.g. 8.4."
2333 },
2434 "fixed_in" : {
25- "type" : [" string" , " null" ],
35+ "type" : [
36+ " string" ,
37+ " null"
38+ ],
2639 "description" : " First patched version in this branch, or null for EOL branches."
2740 },
2841 "sapi" : {
2942 "type" : " string" ,
30- "enum" : [" apache2handler" ],
43+ "enum" : [
44+ " apache2handler"
45+ ],
3146 "description" : " Server API. Only apache2handler (mod_php prefork) is supported."
3247 },
3348 "verified" : {
4055 },
4156 "upstream_profile" : {
4257 "type" : " string" ,
43- "enum" : [" bookworm" , " bookworm-noexpose" , " lab" ],
58+ "enum" : [
59+ " bookworm" ,
60+ " bookworm-noexpose" ,
61+ " lab"
62+ ],
4463 "description" : " Upstream exploit profile name passed to exploit.py."
4564 },
4665 "distro" : {
4968 },
5069 "arch" : {
5170 "type" : " string" ,
52- "enum" : [" aarch64" , " amd64" ],
71+ "enum" : [
72+ " aarch64" ,
73+ " amd64"
74+ ],
5375 "description" : " CPU architecture."
5476 },
5577 "libphp" : {
5678 "type" : " object" ,
5779 "description" : " Symbol offsets relative to the libphp.so load base." ,
58- "required" : [" zif_system" , " zval_ptr_dtor" ],
80+ "required" : [
81+ " zif_system" ,
82+ " zval_ptr_dtor"
83+ ],
5984 "properties" : {
6085 "zif_system" : {
6186 "type" : " string" ,
6893 "description" : " Offset of zval_ptr_dtor (the destructor the stage-3 hijack replaces)."
6994 },
7095 "htdata" : {
71- "type" : [" string" , " null" ],
96+ "type" : [
97+ " string" ,
98+ " null"
99+ ],
72100 "pattern" : " ^0x[0-9a-fA-F]+$" ,
73101 "description" : " Chunk-relative offset of the 167-byte live string used as stage-3 carrier. Null when stage 3 is not calibrated."
74102 }
100128 "description" : " Value parameter for stage-2 calibration."
101129 },
102130 "stage3_pads" : {
103- "type" : [" array" , " null" ],
131+ "type" : [
132+ " array" ,
133+ " null"
134+ ],
104135 "items" : {
105136 "type" : " array" ,
106- "items" : { "type" : " integer" },
137+ "items" : {
138+ "type" : " integer"
139+ },
107140 "minItems" : 2 ,
108141 "maxItems" : 2
109142 },
110143 "description" : " Padding pairs for stage-3 heap grooming. Null when stage 3 is not calibrated."
111144 },
112145 "stage3_carrier" : {
113- "type" : [" boolean" , " null" ],
146+ "type" : [
147+ " boolean" ,
148+ " null"
149+ ],
114150 "description" : " Whether the 167-byte carrier string is used. Null when stage 3 is not calibrated."
115151 }
116152 },
173209 },
174210 "memory_limit_tested_mb" : {
175211 "type" : " array" ,
176- "items" : { "type" : " integer" , "minimum" : 1 },
212+ "items" : {
213+ "type" : " integer" ,
214+ "minimum" : 1
215+ },
177216 "description" : " memory_limit values (in MiB) where RCE was verified."
178217 }
179218 },
180- "if" : { "properties" : { "rce" : { "const" : true } } },
219+ "if" : {
220+ "properties" : {
221+ "rce" : {
222+ "const" : true
223+ }
224+ }
225+ },
181226 "then" : {
182- "required" : [" oom_mb" ],
227+ "required" : [
228+ " oom_mb"
229+ ],
183230 "properties" : {
184231 "libphp" : {
185- "required" : [" zif_system" , " zval_ptr_dtor" , " htdata" ],
232+ "required" : [
233+ " zif_system" ,
234+ " zval_ptr_dtor" ,
235+ " htdata"
236+ ],
186237 "properties" : {
187- "htdata" : { "type" : " string" }
238+ "htdata" : {
239+ "type" : " string"
240+ }
188241 }
189242 },
190243 "stages" : {
191- "required" : [" stage1_n" , " stage1_forge_len" , " stage2_t" , " stage2_v" , " stage3_pads" , " stage3_carrier" ],
244+ "required" : [
245+ " stage1_n" ,
246+ " stage1_forge_len" ,
247+ " stage2_t" ,
248+ " stage2_v" ,
249+ " stage3_pads" ,
250+ " stage3_carrier"
251+ ],
192252 "properties" : {
193- "stage3_pads" : { "type" : " array" },
194- "stage3_carrier" : { "type" : " boolean" }
253+ "stage3_pads" : {
254+ "type" : " array"
255+ },
256+ "stage3_carrier" : {
257+ "type" : " boolean"
258+ }
195259 }
196260 }
197261 }
198262 },
199263 "additionalProperties" : false
200- }
264+ }
0 commit comments