cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

map_ret_val.c (1927B)


      1{
      2	"invalid map_fd for function call",
      3	.insns = {
      4	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
      5	BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_10),
      6	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
      7	BPF_LD_MAP_FD(BPF_REG_1, 0),
      8	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_delete_elem),
      9	BPF_EXIT_INSN(),
     10	},
     11	.errstr = "fd 0 is not pointing to valid bpf_map",
     12	.result = REJECT,
     13},
     14{
     15	"don't check return value before access",
     16	.insns = {
     17	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
     18	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
     19	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
     20	BPF_LD_MAP_FD(BPF_REG_1, 0),
     21	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
     22	BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0),
     23	BPF_EXIT_INSN(),
     24	},
     25	.fixup_map_hash_8b = { 3 },
     26	.errstr = "R0 invalid mem access 'map_value_or_null'",
     27	.result = REJECT,
     28},
     29{
     30	"access memory with incorrect alignment",
     31	.insns = {
     32	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
     33	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
     34	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
     35	BPF_LD_MAP_FD(BPF_REG_1, 0),
     36	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
     37	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1),
     38	BPF_ST_MEM(BPF_DW, BPF_REG_0, 4, 0),
     39	BPF_EXIT_INSN(),
     40	},
     41	.fixup_map_hash_8b = { 3 },
     42	.errstr = "misaligned value access",
     43	.result = REJECT,
     44	.flags = F_LOAD_WITH_STRICT_ALIGNMENT,
     45},
     46{
     47	"sometimes access memory with incorrect alignment",
     48	.insns = {
     49	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
     50	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
     51	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
     52	BPF_LD_MAP_FD(BPF_REG_1, 0),
     53	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
     54	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
     55	BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0),
     56	BPF_EXIT_INSN(),
     57	BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 1),
     58	BPF_EXIT_INSN(),
     59	},
     60	.fixup_map_hash_8b = { 3 },
     61	.errstr = "R0 invalid mem access",
     62	.errstr_unpriv = "R0 leaks addr",
     63	.result = REJECT,
     64	.flags = F_LOAD_WITH_STRICT_ALIGNMENT,
     65},