|
1077 | 1077 | .errstr = "R0 invalid mem access 'inv'",
|
1078 | 1078 | .errstr_unpriv = "R0 pointer -= pointer prohibited",
|
1079 | 1079 | },
|
| 1080 | +{ |
| 1081 | + "map access: trying to leak tained dst reg", |
| 1082 | + .insns = { |
| 1083 | + BPF_MOV64_IMM(BPF_REG_0, 0), |
| 1084 | + BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0), |
| 1085 | + BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| 1086 | + BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| 1087 | + BPF_LD_MAP_FD(BPF_REG_1, 0), |
| 1088 | + BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| 1089 | + BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 0, 1), |
| 1090 | + BPF_EXIT_INSN(), |
| 1091 | + BPF_MOV64_REG(BPF_REG_2, BPF_REG_0), |
| 1092 | + BPF_MOV32_IMM(BPF_REG_1, 0xFFFFFFFF), |
| 1093 | + BPF_MOV32_REG(BPF_REG_1, BPF_REG_1), |
| 1094 | + BPF_ALU64_REG(BPF_SUB, BPF_REG_2, BPF_REG_1), |
| 1095 | + BPF_STX_MEM(BPF_DW, BPF_REG_0, BPF_REG_2, 0), |
| 1096 | + BPF_MOV64_IMM(BPF_REG_0, 0), |
| 1097 | + BPF_EXIT_INSN(), |
| 1098 | + }, |
| 1099 | + .fixup_map_array_48b = { 4 }, |
| 1100 | + .result = REJECT, |
| 1101 | + .errstr = "math between map_value pointer and 4294967295 is not allowed", |
| 1102 | +}, |
1080 | 1103 | {
|
1081 | 1104 | "32bit pkt_ptr -= scalar",
|
1082 | 1105 | .insns = {
|
|
0 commit comments