在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):trailofbits/cb-multios开源软件地址(OpenSource Url):https://github.com/trailofbits/cb-multios开源编程语言(OpenSource Language):C 96.5%开源软件介绍(OpenSource Introduction):DARPA Challenge Binaries on Linux, OS X, and WindowsThe DARPA Challenge Binaries (CBs) are custom-made programs specifically designed to contain vulnerabilities that represent a wide variety of crashing software flaws. They are more than simple test cases, they approximate real software with enough complexity to stress both manual and automated vulnerability discovery. The CBs come with extensive functionality tests, triggers for introduced bugs, patches, and performance monitoring tools, enabling benchmarking of patching tools and bug mitigation strategies. The CBs were originally developed for DECREE -- a custom Linux-derived operating system that has no signals, no shared memory, no threads, no standard libc runtime, and only seven system calls -- making them incompatible with most existing analysis tools. In this repository, we have modified the CBs to work on Linux and OS X by replacing the build system and re-implementing CGC system calls via standard libc functionality and native operating system semantics. Scripts have been provided that help modify the CBs to support other operating systems. The CBs are the best available benchmark to evaluate program analysis tools. Using them, it is possible to make comparisons such as:
ComponentschallengesThis directory contains all of the source code for the challenge binaries. Challenges that are not building or are not yet supported are in the includeThis directory contains toolsThis folder contains Python scripts that help with modifying, building, and testing the original challenges. tester.pyThis is a helper script to test all challenges using BuildingThe following steps will build both the patched and unpatched binaries in MacOSThe challenges build as i386 binaries, but Mac OS 10.14+ only supports building x86-64 binaries by default. To enable i386 support, run the following command:
After this, proceed to the common directions for MacOS and Linux. LinuxThe following packages are required for building the challenges on Linux:
MacOS/Linux Common DirectionsFirst, install pre-requisites via pip.
Then to build all challenges, run: $ ./build.sh If you are absolutely certain that you don't intend to use any of the Python components of the build or repository, you can tell the build script to ignore them: $ NO_PYTHON_I_KNOW_WHAT_I_AM_DOING_I_SWEAR=1 ./build.sh This is not a publicly supported build mode. Build 64-bits version of the challengesBy default, the build system will build 32 bits version of the challenges.
However, by defining $ BUILD64=1 ./build.sh Note: This has only been tested on Linux WindowsThe following packages are required for building the challenges on Windows:
Note: depending on where you clone the repo, you may run into build errors about the path being too long. It's best to clone the repo closer to your root directory, e.g. To build all challenges, run:
TestingThe
Options
Example UsageThe following will run tests against all challenges in $ ./tester.py -a -o out.xlsx To run tests against only two challenges, do this: $ ./tester.py -c Palindrome basic_messaging To test all POVs and save the results, run: $ ./tester.py -a --povs -o out.xlsx Types of TestsAll tests are a series of input strings and expected output for a challenge. There are two types of tests that are used:
Type 1 POV noticeVerifying type 1 POVs relies on analyzing the core dump generated when a process crashes. They can be enabled with: OS X:$ sudo sysctl -w kern.coredump=1 Linux:$ ulimit -c unlimited Windows:Merge Current StatusPorting the Challenge Binaries is a work in progress. Please help us out by reporting any build and/or behavior errors you discover! NotesWe use the CMake build system to enable portability across different compilers and operating systems. CMake works across a large matrix of compiler and operating system versions, while providing a consistent interface to check for dependencies and build software projects. We are working to make this repository easier to use for the evaluation of program analysis tools. If you have questions about the challenge binaries, please join our Slack and we'll be happy to answer them. AuthorsPorting work was completed by Kareem El-Faramawi and Loren Maggiore, with help from Artem Dinaburg, Peter Goodman, Ryan Stortz, and Jay Little. Challenges were originally created by NARF Industries, Kaprica Security, Chris Eagle, Lunge Technology, Cromulence, West Point Military Academy, Thought Networks, and Air Force Research Labs while under contract for the DARPA Cyber Grand Challenge. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论