> > What about emitting additional instructions at random locations in the > > generated code itself? > > > > Eg., after every instruction, have random chance to insert > > 'xor $0xcc,%al; xor $0xcc,%al', etc? > > This will be the latest thing I'll do. > > Frankly, whole point of BPF JIT is speed. > > If we have slow code, just use the interpretor instead.
Adding one of the standard nop opcodes wouldn't be too bad. IIRC 0x90 is skipped very early on by modern cpu. Adding one after every nth (or n-mth) instruction would probably break the alternate instruction stream. However the attacker could (probably) keep installing code patterns until the guess pattern matched. Also the code size changes might make the JIT compile fail - maybe because of branch offsets, or just size. David