Skip to main content

Zelos CrasHD Plugin

A plugin for Zelos to enhance crash triaging by performing dataflow & root cause analysis.

Optional Prerequisites

This plugin has an optional dependency on the graphviz package to render control flow graphs to png. The graphviz python package can be installed normally via pip install graphviz, but will also require Graphviz itself to be installed locally as well. Instructions for installing Graphviz locally can be found here.

If you do not wish to install the graphviz package or Graphviz, you can safely ignore this optional dependency and zelos-crashd will still work as intended, but control flow graphs will not be rendered to png.

Installation

Install from pypi

$ pip install zelos-crashd

Or install directly from the repo

$ git clone https://github.com/zeropointdynamics/zelos-crashd.git
$ cd zelos-crashd
$ pip install .

Alternatively, install an editable version for development

$ git clone https://github.com/zeropointdynamics/zelos-crashd.git
$ cd zelos-crashd
$ pip install -e '.[dev]'

Related Resources

CrasHD Visualizer is a VS Code extension for visualizing the results & output of this plugin that features:

  • Contextual source code highlighting
  • Interactive graph of data flow
  • Additional context & runtime information

CrasHD Examples is a collection of reproducible crashes that can be used with this plugin.

Usage

The following snippets use the example from examples-crashd/afl_training/vulnerable.c

After compiling the above example (vulnerable.c) you can emulate the binary using zelos:

$ zelos vulnerable < inputs/crashing_input

To gain a more information on the crashing program, use the --taint and --taint_output flags in order to keep track of dataflow leading from the crash. When the --taint flag is used, Zelos will calculate the dataflow and taint information related to the crash. --taint_output terminal is used to specify that the output of --taint will be to stdout.

$ zelos --taint --taint_output terminal vulnerable < inputs/crashing_input

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Version 0.0.2] - 2020-08-06

Remove graphviz as a required dependency, add the taint_output flag.

Added

  • taint_output flag

Changed

  • N/A

Removed

  • Dependency on graphviz package

[Version 0.0.1] - 2020-08-05

Initial public release.

Added

  • Initial open source commit.

Changed

  • N/A

Removed

  • N/A

Authors

Release files for zelos-crashd 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zelos-crashd 0.0.2
File Size Uploaded
zelos-crashd-0.0.2.tar.gz 941.8 kB Details

Release files / zelos-crashd-0.0.2.tar.gz

Download URL zelos-crashd-0.0.2.tar.gz
Size 941.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5376df3c771e02d1c2716bc8dda9b6a005c0997170c7450199f8e1a14a604183
BLAKE2b-256 checksum
How to use checksums
4bdeec1c607b36a920f67f772c9ba40ed4fc62852b54e3bc83af19aeaac8c0fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9

Release history Release notifications | RSS feed

This release

0.0.2 This release

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page