2.2.0
Highlights
For Reven 2.2.0, the keyword is Automation, that is, ways to work with Reven more productively and more in-depth by automating various tasks.
In details, this release is the first version to contain the high-level Analysis Python API, the low-level Workflow Python API, and various facilities for Automatic scenario recording.
Note that this release contains features marked as preview, whose APIs are included for early use. We are looking forward to your feedback on these new advanced features and accordingly reserves the right to introduce breaking changes to these APIs.
Analysis Python API
It is now possible to use Python to query data from a Reven server running on a scenario. For this release, supported features include: reading from a Context or a Transition, OSSI, memory history, search, backtrace and strings. The taint feature is also available as a preview package.
Note that the Reven v2 Python API can be imported from IDA, allowing to combine information from the IDA Python API and the Reven v2 Python API.
More information on the Python API is available in the quick start guide, that you can find inside the documentation served by the Project Manager.
Workflow Python API (preview)
It is now possible to use Python to automate the workflow of the Project Manager. The API offers methods that allow to perform some of the actions available from the Project Manager web interface.
For more information, please refer to the Project Manager API examples on the Downloads
page newly added to the
Project Manager.
Automatic scenario recording (preview)
It is now possible to record QEMU scenarios automatically using the Workflow Python API. Two main workflows are supported today:
- Start recording immediately after starting a binary, and stop recording automatically when the binary exits or crashes. Reven can also stop the record upon a BSoD.
- Use "magic" ASM instruction sequences to start and stop the record at any time from within the guest VM!
For more information, please refer to the automatic recording cookbook in the documentation served by the Project
Manager and to the various automatic recording examples on the Downloads
page of the Project Manager.
Improvements
Project manager
- Added a new
Downloads
page, accessible from the footer, that allows to download various Reven tools and examples directly from the Project Manager. For instance, the Reven Python API can be downloaded from this page. - Added a new
API REFERENCE
link to the footer that redirects to the Python API reference documentation. - The replay generation time has been improved by about 30% for the PC range, stack events and memory history resources.
- Streamlined port handling in the Project Manager: When the
QUASAR_{PQSL,REDIS,WEBSOCKIFY}_PORT
variables are set to a value, those fixed values are used as port numbers, which makes it easier to put the Project Manager behind a reverse proxy. If set to None or to 0, the corresponding ports are picked randomly among available ports at startup, making it easier to have several Project Manager instances running on the same machine without port conflicts. - Advanced users can now select the number of tasks allowed to run in parallel with the
QUASAR_CELERY_CONCURRENCY
variable. This allows users to fine-tune the behavior of the replay according to the configuration of their machine.
Axion
- Taint widget: the taint is now usable from a remote Axion client! Previously, the taint was only usable if the Axion client was on the same machine as the corresponding Reven Server. This limitation has now been lifted.
- Taint widget: the widget now displays warnings that occurred during the taint. Warnings tell the users about events that may impact the correctness of the taint. Warnings are displayed in a dedicated "Warnings" tab, and also as a Warning icon next to the affected change in the change view.
- Axion now exposes
reven2
rather thanreven
in thePythonQt
console.
Fixed issues
Project manager
- TIS-34, GS-11, EP-2 - Fixed download PDBs
FileNotFoundError
that would stop the task and mark it as failed. - GS-10 - Fixed XSS vulnerability in the Scenario Description field.
- Fixed an issue for scenarios recorded using QEMU, where the last context would sometimes contain incorrect values after replay. Replay your scenario trace and memory history if you need to fix them.
- Fixed an issue where memory usage would increase a lot after running the Project Manager for a long time
- Removed the
Terminal
link that was opening a new terminal on the server, but was unreliable.
Axion
- T3103 - Bookmark widget: The "filter" field now filters on all columns of the bookmark rather than just on the transition number
- T3259 - Search widget: Returning many results from a search would result in a freeze of the combo box used to select results upon being clicked. The combo box is now disabled when too many results are returned by a search, and prev/next buttons have been added to iterate the results.
- T3287 - Taint widget: the default shortcut has been changed from Ctrl-T to Alt-T to better accomodate Axion when launched in the browser
- EP-4 - Added a
close
button to the operand tracer widget that hides the widget
Limitations and known issues
- Only a single taint can run concurrently per Reven server: currently, starting a second taint, even from a different Axion, will cancel the first running taint. Besides, if two Axion sessions are involved, the first Axion session may display mixed taint results.
- If a taint generates many changes, the taint widget may slow down Axion. Cancelling the current taint operation will revert Axion's slowdown.
- When using the auto-record functionality, the replay operation may fail at the start of the trace with the
following error:
detect_infinite_loops: Assertion 'false' failed
. Performing a new scenario recording usually fixes the issue.