Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Security Policy

This security policy applies to all software products maintained by the
[Open Preservation Foundation](https://openpreservation.org) (OPF), including
veraPDF, JHOVE, Open Fixity, and associated libraries and tools.

## Reporting a Vulnerability

**Please do not report security vulnerabilities as public GitHub issues.**
Public disclosure before a fix is available puts users at risk.

Report vulnerabilities using one of these private channels:

- **Email:** security@openpreservation.org
- **GitHub:** Use the [Report a vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability) button on the Security tab of the relevant repository

Include as much of the following as you can:

- A description of the vulnerability and its potential impact
- The affected product(s) and version(s)
- Steps to reproduce or proof-of-concept code
- Any suggested mitigations you are aware of

## Our Commitment

When you report a vulnerability to us we will:

- **Acknowledge** your report within 5 business days
- **Assess** the severity and scope and keep you informed of our findings
- **Coordinate** the fix and disclosure timeline with you
- **Credit** you in the security advisory, unless you prefer to remain anonymous
- **Notify** you before we publish any advisory

We will not take legal action against researchers who report vulnerabilities in
good faith and act in accordance with this policy.

## Disclosure Timeline

We follow a coordinated vulnerability disclosure (CVD) process:

1. **Day 0** — You report the vulnerability privately
2. **Within 5 business days** — We acknowledge receipt
3. **Within 14 days** — We provide an initial assessment, including severity and
whether we can reproduce the issue
4. **Ongoing** — We work on a fix and agree a disclosure date with you

The disclosure timeline depends on severity:

| Severity | Target fix and disclosure |
|----------|--------------------------|
| Critical / actively exploited | As fast as possible — we may disclose early with mitigations if a fix is not yet ready |
| High | Within 30 days |
| Medium | Within 60 days |
| Low | Within 90 days |

We will always discuss timeline with you before publishing. If circumstances
require us to deviate from these targets we will explain why and agree an
alternative with you.

## Out of Scope

The following are outside the scope of this policy:

- Denial of service attacks
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix hyphenation in compound adjective.

"Denial of service" should be hyphenated when used as a compound adjective before "attacks". As per static analysis hint, this improves grammatical correctness.

📝 Proposed fix
-- Denial of service attacks
+- Denial-of-service attacks
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Denial of service attacks
- Denial-of-service attacks
🧰 Tools
🪛 LanguageTool

[grammar] ~64-~64: Use a hyphen to join words.
Context: ...side the scope of this policy: - Denial of service attacks - Social engineering or ...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@SECURITY.md` at line 64, Replace the unhyphenated phrase "Denial of service
attacks" in SECURITY.md with the hyphenated compound adjective
"Denial-of-service attacks"; locate the exact header or sentence containing
"Denial of service attacks" and change it to "Denial-of-service attacks", and
scan nearby uses of "Denial of service" to ensure consistent hyphenation when
used adjectivally.

- Social engineering or phishing of OPF staff
- Physical security issues
- Vulnerabilities in third-party dependencies — please report these upstream; we will still triage and advise if you are unsure

## Public Disclosure

Once a fix is available we will:

1. Publish a **GitHub Security Advisory** in the affected repository
2. Post a summary on the **[OPF website](https://openpreservation.org)**
3. Issue a **new release** of the affected product with the fix included

We will not publish details of a vulnerability before a fix is available,
except in cases where active exploitation means users must be warned
immediately.

## Regulatory Obligations

As part of our compliance with the EU Cyber Resilience Act (CRA), OPF reports
actively exploited vulnerabilities to ENISA within 24 hours of becoming aware
of them, and submits full notifications within 14 days. This regulatory
Comment on lines +83 to +85
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

EU Cyber Resilience Act vulnerability notification timeline requirements ENISA

💡 Result:

The EU Cyber Resilience Act (CRA, Regulation (EU) 2024/2847) requires manufacturers of products with digital elements to report actively exploited vulnerabilities and severe incidents via ENISA's Single Reporting Platform (SRP), starting 11 September 2026. For actively exploited vulnerabilities (Article 14(1-2)): - Early warning: within 24 hours of becoming aware. - Vulnerability notification: within 72 hours (unless already provided). - Final report: no later than 14 days after a corrective/mitigating measure is available. For severe incidents impacting product security (Article 14(3-4)): - Early warning: within 24 hours. - Incident notification: within 72 hours. - Final report: within 1 month after the incident notification. Reports are submitted once via the SRP to the relevant national CSIRT (based on manufacturer's main establishment) and simultaneously to ENISA, which distributes as needed. ENISA manages the SRP (Article 16) and will publish FAQs and operate a helpdesk.

Citations:


Clarify CRA notification timelines in compliance statement.

The CRA notification requirements are incomplete as stated. Per Article 14, manufacturers must report actively exploited vulnerabilities to ENISA with: early warning within 24 hours, full vulnerability notification within 72 hours (not mentioned), and final report within 14 days of corrective measures becoming available. The current phrasing conflates these distinct phases and omits the 72-hour window for complete vulnerability details, creating compliance ambiguity.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@SECURITY.md` around lines 83 - 85, The CRA timeline in the SECURITY.md
paragraph beginning "As part of our compliance with the EU Cyber Resilience Act
(CRA), OPF reports actively exploited vulnerabilities..." is incomplete and
conflates phases; update this statement to explicitly state the three distinct
reporting steps required by Article 14: an early warning to ENISA within 24
hours of becoming aware, a full vulnerability notification with complete details
within 72 hours, and a final report within 14 days after corrective measures are
available; revise the paragraph text to list these three timelines clearly and
unambiguously so it replaces the current single 24-hour/14-day phrasing.

reporting is separate from and does not replace our commitment to coordinating
disclosure with you.

---

_Policy version: 1.0 — April 2026_
_Review due: April 2027_
Loading