The UPLC-CAPE (Comparative Artifact Performance Evaluation for UPLC programs) project is committed to ensuring the security of its benchmarking framework and the privacy of its users. We value the contributions of the security community in helping us identify and address vulnerabilities in our code. This Security Vulnerability Disclosure Policy outlines how security vulnerabilities should be reported and how we will respond to and remediate such reports.
About UPLC-CAPE: This project is a benchmarking framework for measuring and comparing UPLC programs generated by different Cardano smart contract compilers. It accepts community submissions of UPLC code, measures performance metrics, and generates public reports. Security considerations differ from production smart contract systems and focus on the integrity and safety of the benchmarking tooling itself.
Security vulnerabilities that affect the UPLC-CAPE framework's integrity, availability, or safety:
- Measurement tool vulnerabilities: Bugs in the
measureexecutable that produce incorrect metrics, crash, or allow resource exhaustion attacks - Verification system bypasses: Issues that allow malicious submissions to pass verification despite being invalid
- Report generation vulnerabilities: XSS, injection attacks, or other security issues in the HTML report generation system
- Supply chain attacks: Vulnerabilities in dependencies (plutus-core, plutus-tx, etc.) that compromise the framework
- Malicious submission exploitation: UPLC code in submissions that exploits the tooling to compromise the build/measurement environment
- Schema validation bypasses: Issues that allow malformed metadata or metrics to pass validation
- File system vulnerabilities: Path traversal or other file system exploits through submission handling
The following are not considered security vulnerabilities in UPLC-CAPE:
- Performance characteristics of submitted UPLC programs: The entire purpose of UPLC-CAPE is to measure and compare performance, including resource-intensive programs
- Third-party compiler bugs: Issues with compilers that generate UPLC submissions (report these to the respective compiler projects)
- UPLC program correctness: Logical errors in submitted UPLC programs that don't compromise the framework itself
- Benchmark specification disputes: Disagreements about benchmark design or fairness (use GitHub issues for discussion)
If you discover a security vulnerability in UPLC-CAPE, we encourage you to responsibly disclose it to us. To report a vulnerability, please use the private reporting form on GitHub to draft a new Security advisory.
Please include as much details as needed to clearly qualify the issue:
- A description of the vulnerability and its potential impact.
- Steps to reproduce the vulnerability.
- The version or commit hash of UPLC-CAPE where the vulnerability exists.
- Any relevant proof-of-concept or exploit code (if applicable).
Examples of security issues to report:
- A malicious UPLC file that crashes the measurement tool
- A crafted metadata.json that bypasses schema validation
- An XSS vulnerability in generated HTML reports
- A path traversal exploit in submission file handling
- A resource exhaustion attack through the CLI
-
Acknowledgment: The team acknowledges the receipt of your report within 3 business days by commenting on the issue reporting it or replying to email.
-
Validation: The team investigates the issue and either reject or validate the reported vulnerability.
a. Rejection: If the team rejects the report, detailed explanations will be provided by email or commenting on the relevant issue and the latter will be made public and closed as
Won't fix.b. Acceptance: If the team accepts the report, a CVE identifier will be requested through GitHub and a private fork opened to work on a fix to the issue
-
Resolution: The team works to resolve the vulnerability in a timely manner. The timeline for resolution will depend on the complexity and severity of the vulnerability, but we will strive to address critical vulnerabilities as quickly as possible.
-
Collaboration: While working on a fix, the team maintains open and transparent communication with the reporter throughout the process, providing updates on the status of the vulnerability and any steps taken to remediate it. In particular this means that the reporter will be asked to review any proposed fix and to advise on the timing for public disclosure.
-
Fixing Issue: The team agrees on the fix, the announcement, and the release schedule with the reporter. If the reporter is not responsive in a reasonable time frame this should not block the team from moving to the next steps particularly in the face of a high impact or high severity issue.
a. Mitigation: Depending on the severity and criticity of the issue, the team can decide to disclose the issue publicly in the absence of a fix if and only if a clear, simple, and effective mitigation plan is defined. This must include instructions for users and operators of the software, and a time horizon at which the issue will be properly fixed (eg. version number).
b. Fix: When a fix is available and approved, it should be merged and made available as quickly as possible:
- All commits to the private repository are squashed into a single commit whose description should not make any reference it relates to a security vulnerability
- A new Pull Request is created with this single commit
- This PR's review and merging is expedited as all the work as already been done
-
Release: The team creates and publish a release that includes the fix
-
Announcement: Concomitant to the release announcement, the team announces the security vulnerability by making the GitHub issue public. This is the first point that any information regarding the vulnerability is made public.
a. Credit: The team publicly acknowledges the contributions of the reporter once the vulnerability is resolved, subject to the reporter's preferences for attribution.
-
Disagreements: In case of disagreements with the reporter on the fix, mitigation, timing, or announcement, the team has the final say.
We kindly request that reporters adhere to responsible disclosure practices, which include:
- Do not disclose the vulnerability publicly: Please refrain from posting details of the vulnerability on public forums or social media until it has been resolved.
- Do not exploit the vulnerability: Do not attempt to exploit the vulnerability to cause harm or gain unauthorized access to systems.
- Work with us: Allow us a reasonable amount of time to investigate and address the vulnerability before publicly disclosing any details.
We will not pursue legal action against individuals who report security vulnerabilities to us.
To report a security vulnerability, please use the GitHub security advisory form. Should you experience any issues reporting via GitHub or have other questions, please contact security@intersectmbo.org.
This Security Vulnerability Disclosure Policy may be updated or revised as necessary. Please check the latest version of this policy in the UPLC-CAPE repository.
The UPLC-CAPE project greatly appreciates the assistance of the security community in helping us maintain the security of our benchmarking framework while upholding the highest standards of privacy. Together, we can work to identify and address vulnerabilities, ensuring a safer and more secure experience for all users and contributors.