Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.8%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: pandora-tee
- License: agpl-3.0
- Language: Python
- Default Branch: main
- Size: 888 KB
Statistics
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 1
- Releases: 1
Metadata Files
README.md
Pandora
Pandora is a symbolic execution tool designed for truthful validation of Intel SGX enclave shielding runtimes. Pandora is based on the fabulous angr and extends it with enclave semantics such as Intel SGX instruction support, a realistic enclave memory view, attacker taint tracking, and report generation for a set of powerful vulnerability plugins.
Pandora is the result of our research publication you can read here and is published at the 45th IEEE Symposium on Security and Privacy (IEEE S&P 2024). It should be cited as:
Alder, F., Daniel, L. A., Oswald, D., Piessens, F., & Van Bulck, J. (2024, May). Pandora: Principled Symbolic Validation of Intel SGX Enclave Runtimes. In 45th IEEE Symposium on Security and Privacy-IEEE S&P 2024. IEEE.
Bibtex:
@inproceedings{alder2024pandora,
title={Pandora: Principled Symbolic Validation of Intel SGX Enclave Runtimes},
author={Alder, Fritz and Daniel, Lesly-Ann and Oswald, David and Piessens, Frank and Van Bulck, Jo},
booktitle={45th IEEE Symposium on Security and Privacy-IEEE S\&P 2024},
year={2024},
organization={IEEE}
}
This repository is the research artifact and can also be cited (check GitHub citation).
Quickstart
```bash pip3 install -r requirements.txt
Good CLI hopefully makes it easy for you to get started
./pandora.py --help
The run script executes Pandora on an ELF file or a binary
./pandora.py run --help
Easiest example: clone and compile the standalone Linux selftest enclave
cd .. git clone https://github.com/pandora-tee/pandora-examples.git cd pandora-examples/linux-sgx-selftest/ make cd ../../pandora/
Now analyze the Linux selftest enclave binary
./pandora.py run ../pandora-examples/linux-sgx-selftest/linuxtestencl.elf
When you start playing around, start using the debugging config file
This makes sure to not always write new HTML and json reports, but overwrites old reports
--> Less wasted disk space while you hack around
You can also control color schemes in these config files! This one works well for our dark modes.
./pandora.py run -c config-debugging.ini ../pandora-examples/linux-sgx-selftest/linuxtestencl.elf
More tricky example: An sgx-tracer dump, by giving the -s dump option:
./pandora.py run -c config-debugging.ini ../pandora-examples/intel-sdk/bin-and-sgxtrace/sgx_2.19.enclave.dump -s dump
Pandora is usually smart enough to also detect the *.json and *.so files of the same name. If not, pass them explicitly
Pandora needs the JSON for metadata of the dump, and if the elf file exists, can re-use its symbols to generate a backtrace
./pandora.py run -c config-debugging.ini ../pandora-examples/intel-sdk/bin-and-sgxtrace/sgx2.19.enclave.dump -s dump --sdk-json-file=../pandora-examples/intel-sdk/bin-and-sgxtrace/sgx2.19.enclave.json --sdk-elf-file=../pandora-examples/intel-sdk/bin-and-sgxtrace/sgx_2.19.enclave.so
You can also control Pandora's behavior
Only do 20 steps:
./pandora.py run -c config-debugging.ini ../pandora-examples/linux-sgx-selftest/linuxtestencl.elf -n 20
Wait for user input before starting (e.g. to verify everything is loaded correctly)
./pandora.py run -c config-debugging.ini ../pandora-examples/linux-sgx-selftest/linuxtestencl.elf -a start=break
Spawn a shell on every pointer sanitization issue
./pandora.py run -c config-debugging.ini ../pandora-examples/linux-sgx-selftest/linuxtestencl.elf -a ptr=shell
There are more options that can be set like depth-first search and allowing enclave reentries. Check the help how to do that.
```
Common Pandora errors
Pandora is a research prototype. There are still several types of errors that can occur during an execution of Pandora. Common Pandora errors can look as follows:
```
Machine runs out of memory:
Program terminated by signal SIGKILL (Forced quit)
Very Rarely, Z3 crashes occur with one of these:
Segmentation fault (core dumped) Program terminated by signal SIGSEGV (Address boundary error) ```
In rare cases, Pandora experiences segmentation faults or Z3 issues due to instability between angr and the underlying Z3 solver. We believe that these are issues both in the Python package of z3-solver and claripy.
For us, these issues occur very rarely, and happen non-deterministically. Often, re-running the same binary right away avoids a crash. On some machines, these errors seem to happen more often than on others, and for those machines, we had success in updating the Z3 Python package: pip install --upgrade z3-solver.
Installation and updating
To install or update, run pip on the requirements script:
bash
pip3 install -r requirements.txt --upgrade --upgrade-strategy='eager'
Alternatively, to install and run Pandora in a Python virtual environment:
bash
$ sudo python3 -m venv venv
$ ./venv/bin/pip3 install -r requirements.txt
$ source ./venv/bin/activate
(venv) $ ./pandora.py
Source code overview
Directory structure is organized as follows:
.
- assets -- Collection of static data for the HTML report generation.
- explorer -- Symbolic execution machinery: exploration strategies and
angr hooks for implementing missing x86 semantics.
- pithos -- Python classes to implement the actual validation logic for
detecting different vulnerabilities using angr and pandora breakpoints.
- sdks -- Python classes to abstract binary specifics for different
SGX shielding runtimes.
- tests -- Python methods to perform pandora selftests (sanity checks)
- ui -- User interaction abstracting user input, logging output, and
vulnerability report creation.
- utilities -- Common Pandora and angr functions and helpers
Owner
- Name: Pandora: Principled Symbolic Validation of Intel SGX Enclave Runtimes
- Login: pandora-tee
- Kind: organization
- Repositories: 1
- Profile: https://github.com/pandora-tee
Citation (Citation.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Alder" given-names: "Fritz" orcid: "https://orcid.org/0000-0001-9607-7798" - family-names: "Daniel" given-names: "Lesly-Ann" orcid: "https://orcid.org/0000-0002-2772-3722" - family-names: "Oswald" given-names: "David" orcid: "https://orcid.org/0000-0001-8524-5282" - family-names: "Piessens" given-names: "Frank" orcid: "https://orcid.org/0000-0001-5438-153X" - family-names: "Van Bulck" given-names: "Jo" orcid: "https://orcid.org/0000-0002-5953-9196" title: "Pandora: Principled Symbolic Validation of Intel SGX Enclave Runtimes" version: 1.0.0 doi: 10.5281/zenodo.10390331 date-released: 2023-12-15 url: "https://github.com/pandora-tee/pandora"
GitHub Events
Total
- Watch event: 2
- Delete event: 3
- Push event: 10
- Pull request event: 2
- Create event: 3
Last Year
- Watch event: 2
- Delete event: 3
- Push event: 10
- Pull request event: 2
- Create event: 3
Issues and Pull Requests
Last synced: 7 months ago
All Time
- Total issues: 0
- Total pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: less than a minute
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: less than a minute
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- jovanbulck (1)