cbombench
A testbed for benchmarking Cryptographic Bills of Materials (CBOMs).
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 2 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 (15.3%) to scientific vocabulary
Keywords
Repository
A testbed for benchmarking Cryptographic Bills of Materials (CBOMs).
Basic Info
Statistics
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 3
Topics
Metadata Files
README.md
CBOMbench

CBOMbench is a modular benchmarking framework for evaluating Cryptographic Bill of Materials (CBOM) generation tools. It automates testing of CBOM tools across real-world GitHub repositories and produces analysis based on output quality and performance metrics.
This tool was developed as part of a bachelor’s thesis at the University of Bern and currently supports benchmarking of: - IBM's CBOMkit - CycloneDX's cdxgen - DeepSeek for LLM-based CBOM-generation
Installation & Setup
To run CBOMbench, follow these steps:
1. Install Required Tools
- Follow the official instructions to install CBOMkit (via Docker or Podman).
- Install cdxgen using npm:
npm install -g @cyclonedx/cdxgen
2. Clone this Repository
bash
git clone https://github.com/SEG-UNIBE/cbombench.git
cd cbombench
3. Install Python Dependencies
bash
pip install -r requirements.txt
4. Set Environment Variables
bash
export DEEPSEEK_API_KEY=your_deepseek_key_here
export GITHUB_TOKEN=your_github_token_here
Usage
CBOMbench is operated through the command-line:
python ./src/cbombench.py [COMMAND]
Available Commands:
Repository Discovery and Selection
Get Github Repositories filtered by main programming language, size constraints in KB and how big the sample should be.
cbombench.py get-repos --languag java --min-size 1000 --max-size 100000 --sample-size 10Individual Tool Testing
Individual tool testing for a specified repository and branch (if branch is left empty CBOMbench automatically detects the default branch).
cbombench.py text cbomkit cdxgen deepseek https://github.com/example/repo --branch mainAutomated Benchmarking
Benchmarking the specified tools on a sample of GitHub repositories
cbombench.py benchmark cbomkit cdxgen deepseek --language java --sample-size 10Statistical Analysis and Reporting
Generate comparison reports from the collected CBOMs (save flag to save report in files).
cbombench.py analyze --saveHistorical Analysis
Load a past analysis
cbombench.py load-analysisData Cleanup
Delete generated CBOMs
cbombench.py delete-data
Extending CBOMbench
To add support for a new CBOM generation tool:
1. Create a new adapter
2. Implement a generate_cbom(url, branch) method that returns the CBOM as a JSON and a duration
3. Add the function to cbombench.py
Owner
- Name: SEG UNIBE
- Login: SEG-UNIBE
- Kind: organization
- Website: https://seg.inf.unibe.ch
- Repositories: 1
- Profile: https://github.com/SEG-UNIBE
Software Engineering Group, University of Bern, Switzerland
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: CBOMbench
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Simon
family-names: Egli
email: simon.egli4@students.unibe.ch
affiliation: University of Bern
- given-names: Roman
family-names: Bögli
email: roman.boegli@unibe.ch
affiliation: University of Bern
orcid: "https://orcid.org/0009-0004-8745-7800"
- given-names: Timo
family-names: Kehrer
email: timo.kehrer@unibe.ch
affiliation: University of Bern
orcid: "https://orcid.org/0000-0002-2582-5557"
repository-code: "https://github.com/SEG-UNIBE/cbombench"
abstract: A testbed for benchmarking Cryptographic Bills of Materials (CBOMs).
keywords:
- python
- benchmark
- cbom
license: Apache-2.0
GitHub Events
Total
- Release event: 1
- Watch event: 1
- Member event: 1
- Push event: 10
- Create event: 1
Last Year
- Release event: 1
- Watch event: 1
- Member event: 1
- Push event: 10
- Create event: 1
Dependencies
- click *
- datetime *
- matplotlib *
- openai *
- pandas *
- podman-compose *
- requests *
- seaborn *
- tabulate *
- tqdm *
- websocket-client *