-
Notifications
You must be signed in to change notification settings - Fork 52
no sys_call_table in /proc/kallsyms? #2
Comments
As root I get the table (Ubuntu, kernel 4.13), but with the hex value I get 'Invalid opcode' (transl.german 'Ungültiger Maschinenbefehl (Speicherabzug geschrieben)'). I tried it with -march=x86-64, =native, =core2, but no success. |
@bsbhro
What model is your CPU exactly? I suppose I could achieve a similar effect with |
@mpictor Regarding the topic of this issue, the PoC demonstrates reading from a non-userspace-visible address. Finding that address out (it's protected by KASLR) is kind of out of the scope right now. Maybe once I figure out the innards of the BPU and I get arbitrary data into L1 D$, and once I can read arbitrary kernel addresses I could come up with something that would defeat KASLR for you. |
(The innards of the BPU don't make a terrible lot of sense yet) |
@mniip Are you planning on making that arbitrary loading into L1 public? That's what I'm struggling with now. I've tried various prefetching methods, both in ASM and C but no luck on arbitrary kernel space memory. |
@Frichetten Assuming I figure it out. The plan is to poison the BPU to induce a branch mispredict in the kernel code that would cause a speculative memory fetch with the kernel's privileges. I'm assuming that even if the fetch isn't retired the L1D-TLB-L2 thing will load the line into L1D. |
@mniip, I imagine that is how the Meltdown and Spectre research teams have done it. I'm excited for them to go public with POC code so I can get a look at it. As it stands I think you have the most complete public POC on the internet right now. Congrats to you. |
Until you have a way of finding the address, what about updating the README so that people don't waste a bunch of time trying to figure out why their system doesn't have the value you used? |
Hi, thanks for your reply. I tried it on Notebooks with |
What kernel version are you using? Any particular config options that need to be on/off for
sys_call_table
to be present?With kernel 4.9.60, I don't seem to have this symbol in kallsyms. While I have some things matching
call.*table
, they seem to be for sysctl or netfilter.Nothing jumps out at me in my config options:
zcat /proc/config.gz | grep -i sym
Googling makes it sound like (years ago, at least) sys_call_table was hidden from kallsyms to make rootkits more difficult. It would be nice if this POC didn't require something that's typically hidden...
Even
echo 0 > /proc/sys/kernel/kptr_restrict
(as suggested in PR #1) doesn't help.The text was updated successfully, but these errors were encountered: