GithubHelp home page GithubHelp logo

mozillasecurity / virgo Goto Github PK

View Code? Open in Web Editor NEW
22.0 13.0 5.0 2.81 MB

Crowdsourced fuzzing cluster. ๐Ÿš€

JavaScript 98.31% HTML 0.15% CSS 0.67% Shell 0.87%
cluster fuzzing crowd docker desktop bounty

virgo's Introduction


Crowdsourced fuzzing cluster. ๐Ÿš€

Current Release

Overview

๐Ÿค”What is Virgo?

Virgo is a concept for creating a cluster of fuzzers made by users who are willing to trade and contribute their CPU resources of their workstations to a greater good.

Use Cases

  • Intracompany fuzz testing by using office workstations after-hours without additional spending on cloud providers.
  • Software developers can point Virgo to their own Task Definition Server and quickly test among colleagues newly developed features.
  • Bug bounty hunters and open source supporters creating a collective supercluster in testing features more quickly and more intensively, and potentially get rewarded for providing their CPU time.

Virgo can theoretically be used for any arbitrary work task defined in a container. However, Virgo was built as a fuzzing solution in mind.

๐Ÿ’กHow does it work?

Virgo's infrastructure is based on Docker. Virgo fetches routinely a remote server for new tasks by downloading a Task Definition File which contains information on how to run a task and which host preferences are required. If the required hosts preferences meet the constraints for a certain task, Virgo will download the image, create a container and run that container until a user action intervenes or run "indefinitely". An intervention can be pause, stop, a scheduler, observed system or network activity. If a crash is found during a run, it immediately is sent to our backend for further analyzation and in case of a security issue, you will be informed by the provided contact email address.

๐Ÿš€Usage

Virgo is in its beta stage, obscure bugs may occur. We urge you to file these in our GitHub issue tracker along with any suggestions or feature requests you might have.

You need to have the Docker engine installed and running on your computer. If you do not have it installed, here are some quick steps to get ready quickly.

Preparation

MacOS

brew cask install docker

Alternatively: https://download.docker.com/mac/stable/Docker.dmg

Windows

choco install docker-desktop

Alternatively: https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe

Make sure that in Settings -> Shared Drives the Volume is enabled on which you installed Virgo.

Linux

./scripts/install_docker.sh

Do not forget to log out/in after this step.

To make sure Docker is setup and running, you can run the following command: docker run hello-world. If you see the "Hello from Docker!" message after some seconds, you are good to go.

Launch

You can now launch Virgo which you downloaded for your platform from the release page.

Note: If you are on Linux run chmod a+x virgo*.AppImage before you try to launch it.

If you want to get notified about found security issues discovered by your machine, provide your email address in the Preferences. This step is optional but if your workstation has found a security related issue we will add you to the Bugzilla report to get notified.

Issues

In case of abnormal behaviour of the application you can reset Virgo to factory default settings.

Common

MacOS

rm ~/Library/Application\ Support/virgo/config.json

Windows

rm ~\AppData\Roaming\virgo\config.json

Linux

rm ~/.config/virgo

If a task was still running before you closed Virgo, then you can find the task in the Activity tab, where you can manually stop and delete it.

Debugging

If you want to take a glimpse in what is happening under the hood, go to the Activity tab and copy the container id of the running task. You can then in the Terminal run: docker logs <id> --follow to see what is happening.

Contributing

Launch Virgo

git clone https://github.com/mozillasecurity/virgo && cd virgo && npm -s install
npm start

Developer extensions are enabled in non-production builds, except Devtron for analyzing IPC traffic. You can enable it by entering require('devtron').install() in the Developer Console.

To produce a production build run first npm run build and optionally npm run release <platform>. Where platform can be macos64, windows64, linux64 or '' to create a release for all platforms.

For a detailed list of commands run npm run

Launch Task Definition Server

cd heroku && npm -s install && npm start

You will need to point Virgo to your custom Task Definition Server in the Preferences.

See Wiki for detailed setup instructions including Minio for testing in-app updates, Sentry.io for in-app crashes and FuzzManager as custom crash collector backend.

Screenshots

Dashboard Activity Settings

Author

๐Ÿ‘ค Christoph Diehl <[email protected]>

virgo's People

Contributors

posidron avatar pyoor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

virgo's Issues

Add History tab to Activity

  • Add History tab to Activity
    • Add id, name, duration to docker.history state
    • Add Clear button which triggers HISTORY_RESET action

Improve CSS for Content, Statusbar and Activity

  • Statusbar should have a little grid to place multiple status information inside.
  • Content area should be scrollable, not the entire Window.
  • Activity table columns need to be more dense .. should happen automatically.
  • Activity tabs need to resize automatically to the max Content area minus Statusbar. If the pagination switches from 10 to 25 it places the pagination footer below the Statusbar.

Copy stats file out of container for advanced information

Idea:

  • docker cp /home/worker/stats:<electron_dir>
  • parse into object or array
  • display as foldable view into Dashboard component

Example:

execs_done       : 312466
execs_per_sec    : 59
rss_mb           : 11426
corpus_size      : 4152
next_auto_reduce : 4774
crashes          : 0
timeouts         : 0
ooms             : 0
last_new         : 1561052444
last_new_pc      : 1561049863

Virgo crashes on startup win10

  • Version: 0.2.1
  • Platform: Windows 10 version 1903 (OS Build 18362.207)

Launching yields a crash dialog:
image

After clicking OK, the dashboard comes up, but nothing seems to happen there. In Task Manager, 3 processes are running:
image

Note: I do have Docker configured to expose the daemon on tcp://localhost:2375 without tls, so that I can use it from WSL.

Image sort by date appears to sort dates as strings

  • Version: 0.2.2
  • Platform: Win10

In the Virgo dashboard, sorting the docker images by date shows the dates are treated as strings, not dates. That'd be fine if the dates were displayed per RFC-3339, but they aren't (even though that is the format I've configured Windows to use):
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.