Skip to content
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

update README #80

Merged
merged 7 commits into from
Jun 30, 2022
Merged

update README #80

merged 7 commits into from
Jun 30, 2022

Conversation

il-steffen
Copy link
Collaborator

  • notice about code for research
  • notice about Intel PT and host kernel requirement
  • simplify texts for local/remote install
  • update how to activate environment

- notice about code for research
- notice about Intel PT and host kernel requirement
- simplify texts for local/remote install
- update how to activate environment
… that remote deployment assumes passwordless setup
@il-steffen
Copy link
Collaborator Author

squash me..

Copy link
Collaborator

@Wenzel Wenzel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for updating the README and making more enjoyable to read !
I made a few comments

README.md Outdated
- The setup requires a Gen-6 or newer Intel CPU (for Intel PT) and sufficient
RAM to run several VMs at once.
- A modifed Linux host kernel is required for VM-based snapshot fuzzing with
Intel PT coverage feedback. This setup does not run inside a VM or container!
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the notice that it doesn't run inside a VM or container ?
Did you wanted to say:

  1. "this current setup doesn't run in a VM or container"
  2. "this kAFL setup cannot run in a VM or container"

because the latter, especially the container part is true, we can run a Dockerized kAFL.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purpose is to warn that we (currently) assume physical host access to modify the kernel. Yes we can say current / supported setup.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you don't need physical host access to update a kernel.
I mean, kAFL could run in a nested virtualization setup for example (?), for testing purpose.

For example, can I develop a Vagrant based solution for my kAFL developer workflow ?
Because if that's possible, then this sentence is ambiguous :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nested setup has been done with Qemu-Nyx/KVM-Nyx but these modes are completely untested, at least from my perspective. The Nyx hypervisor fuzzing projects use this, together with a modified hypercube as the agent, but this was not working/tested in the latest upstream repos and I don't know what is the status.

So while not impossible, I think we need to make very clear that we currently assume this for our make deploy flow. I'll propose a change.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, thanks for the clarification regardig nested virt support.

I can propose this:

Note: This setup requires a bare-metal configuration, since nested virtualization is not support by kAFL at this point.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated

The userspace installation and fuzzing workflow has been tested for recent
Ubuntu (>=20.04) and Debian (>=bullseye). The base installation is captured
as an Ansible workflow which you can bootstrap using Python:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the user need to know about the underlying deployment / installation tools ?
The only requirement it to have Python3 and the capacity to create virtual environments.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found it misleading to say python3 is the only requirement, so I rewrote to explain we have a well-defined install flow "based on Python". Other suggestions?

We're actually pulling a lot of things as part of deployment: apt install, kernel install, grub config change, KVM group mod, kvm module options, and we don't offer uninstall. It may actually be good to document this somehow so the user has a chance to revert/debug.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I understand the need to explain what's about to happen when the user call make deploy.

I would rephrase like this:
The userspace installation and fuzzing workflow has been tested for recent
Ubuntu (>=20.04) and Debian (>=bullseye). The base installation is managed
as an Ansible playbook which you can bootstrap with the following commands.

  • playbook is the right terminology for Ansible (not workflow)
  • I would avoir mentionning using Python because that magic stuff is done by the Makefile recipe. The user just calls make deploy and that's it. He doesn't use Python in any way (not directly)

We can document what changes are made to the system, so the user has a better understanding of how to revert it into a previous state.

README.md Outdated

The userspace installation and fuzzing workflow has been tested for recent
Ubuntu (>=20.04) and Debian (>=bullseye). The base installation is captured
as an Ansible workflow which you can bootstrap using Python:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I understand the need to explain what's about to happen when the user call make deploy.

I would rephrase like this:
The userspace installation and fuzzing workflow has been tested for recent
Ubuntu (>=20.04) and Debian (>=bullseye). The base installation is managed
as an Ansible playbook which you can bootstrap with the following commands.

  • playbook is the right terminology for Ansible (not workflow)
  • I would avoir mentionning using Python because that magic stuff is done by the Makefile recipe. The user just calls make deploy and that's it. He doesn't use Python in any way (not directly)

We can document what changes are made to the system, so the user has a better understanding of how to revert it into a previous state.

README.md Outdated
- The setup requires a Gen-6 or newer Intel CPU (for Intel PT) and sufficient
RAM to run several VMs at once.
- A modifed Linux host kernel is required for VM-based snapshot fuzzing with
Intel PT coverage feedback. This setup does not run inside a VM or container!
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, thanks for the clarification regardig nested virt support.

I can propose this:

Note: This setup requires a bare-metal configuration, since nested virtualization is not support by kAFL at this point.

@il-steffen il-steffen merged commit 8e55e8b into IntelLabs:master Jun 30, 2022
@il-steffen il-steffen deleted the update-readme branch June 30, 2022 19:42
il-steffen added a commit to il-steffen/kAFL that referenced this pull request Dec 15, 2022
- notice about code for research
- notice about Intel PT and host kernel requirement
- simplify texts for local/remote install
- update how to activate environment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants