-
Notifications
You must be signed in to change notification settings - Fork 130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Why don't you maintain this project any more? #27
Comments
This repo mostly serves as a reference for our papers. |
I see. |
For the record: |
Does the intel version contain Bl1nnnk's patches? thanks. |
I don't think it does. But they are based on the Redqueen back-end which already included a significant number of improvements, and there is a chance this already fixed some of the bugs. I also think, they will be merging the remaining patches soon. |
@Bl1nnnk Could you give some detail on the fixes in decoder.c/disassember.c. How can I confirm the bug? The Redqueen code is just different enough to make this non-trivial to apply, and I'm also not sure if every line in your patch is intended as is: https://github.com/Bl1nnnk/kAFL/blob/master/QEMU-PT/pt/disassembler.c#L499 ;-) |
You know that pt package decoding have to be combined with binary code. The kAFL read all the guest binary code during initialization: https://github.com/RUB-SysSec/kAFL/blob/master/QEMU-PT/pt.c#L204. But some executable pages maybe page-out even in kernel mode. So I have qemu-pt fetch the guest binary code after execution in that page:
L490/L499/L508 is useless, I forgot to remove them :) |
Hi, @il-steffen! |
@e13fter I reviewed the patch and applied best I could. See IntelLabs/kAFL#9. There is still a fundamental issue that memory may be paged out during trace decoding, likely also some other bugs in decoder.c. About 1% of the executions can have a couple wrong edges in the bitmap. I added a I don't think any of this relates to the problem you mention, since crashes are matched against a separate bitmap. Are you getting any feedback at all? If the bitmap is empty, a crashing input may be discarded as "not new". I suggest to start from scratch using one of the recent confirmed tutorials IntelLabs/kAFL#27 (comment) or IntelLabs/kAFL#31. |
Seems like there are really empty bitmaps. I slighly modified agent for it to output payload through
If I provide second test case, the fuzzer takes it, runs and considers it to produce no new coverage and finally goes on with dumb mutations without any feedback.
Looking through python part of the fuzzer and its native bitmap library I think there is no mistakes in it and suspect the tracing PT part of KVM and QEMU. How could I debug it? I tried to enable PT tracing via the QMP monitor, but it failed.
Scared to dig into Intel PT insides and hope that the problem can be solved without it. By the way, I removed the My CPU is Intel Core i7-8550U (Kaby Lake R). Thank you |
This looks like an issue with the overall setup. Try to follow the mentioned guides exactly, and if that doesn't work try the Zephyr/UEFI examples. I think newer Linux guests are making problems and you probably have to disable spectre mitigations or kpti or something like that. If the problem persists, please post a new issue in the appropriate board and give some background on your installation/steps. |
Of course I disabled spectre mitigations, kpti, KASLR - all things I found in other issues. Also I've tried another setup. First, I tried another desktop motherboard: Gigabyte Q370-M. IntelLabs' KAFL worked with the same problems I described. But due to the fact that the BIOS on that motherboard supports legacy bootloaders, I could install old Ubuntu 16.04 as the host operating system and installed RUB-SysSec's KAFL there. And it worked right, well and as expected! Second, I tried all these actions on Debian 10.2, as it is in your kernel config here IntelLabs/kAFL#18 (comment). Same result. |
If the old kAFL is working, can you try some intermediate versions of KVM-PT and Qemu-PT to isolate the problem? The 4.x kernel module should actually be compatible, and all the Qemu changes are stored as separate patches on top of the RUB-SysSec baseline: https://github.com/IntelLabs/kAFL/tree/master/patches/qemu/v5.0.0 If you go back in history there is also a v3.1 qemu that should be identical to the SysSec version. |
I tried old kAFL kvm part from RUB SysSec and v3.1 qemu from IntelLabs. The fuzzer hangs after I moved this discussion to the separate issue IntelLabs/kAFL#32. |
Such a powerful project.
And I have found and fixed several bugs, do you mind that I maintain it in my forked repository?
The text was updated successfully, but these errors were encountered: