Skip to content

Add draft project security threat-model document#496

Open
potiuk wants to merge 1 commit into
apache:masterfrom
potiuk:asf-security/draft-threat-model-2026-05-30
Open

Add draft project security threat-model document#496
potiuk wants to merge 1 commit into
apache:masterfrom
potiuk:asf-security/draft-threat-model-2026-05-30

Conversation

@potiuk
Copy link
Copy Markdown
Member

@potiuk potiuk commented May 30, 2026

Summary

This PR adds an initial draft of a project-level security
threat-model document (draft-THREAT-MODEL.md) so that automated
security scanners running against this repository have a
maintainer-facing reference for which classes of findings are
in-scope vs. out-of-scope for the project.

The document follows the rubric format used by several other ASF
projects piloting improved security-model discoverability for
agentic scanners. Every claim carries a provenance tag:

  • (documented) — paraphrased from public artefacts (this repo,
    the project website, the JSPWiki Security and CVE wiki pages),
    cited inline.
  • (inferred) — synthesised from code structure or domain
    knowledge; the PMC has not confirmed.
  • (maintainer) — confirmed by a JSPWiki PMC member in response
    to this draft. (1 in this initial draft — Juan Pablo's Path-3 +
    scope confirmation from the GLASSWING thread.)

Draft stats:

  • ~40 documented claims (incl. the wiki Security + CVE pages,
    folded into the appendix back-map after the initial draft)
  • ~27 inferred claims (each maps to a §14 question)
  • 37 open questions for maintainers in §14, grouped in 6 waves
    (meta + external-artefact reconciliation / SecurityManager /
    XSS + markup parser / auth + attachments / environment +
    side-effects / meta finalization)

§14 is the highest-leverage section: answering each question
either promotes one (inferred) tag to (maintainer) or corrects
the underlying claim.

Why "draft-" prefix?

The file is named draft-THREAT-MODEL.md rather than
SECURITY-THREAT-MODEL.md because this is a proposal for the
PMC to review — please correct, reject, or discuss as needed.

Once the PMC ratifies (or substantially edits) the content, the
file can be renamed in a follow-up PR and a discoverability
scaffold (AGENTS.mdSECURITY.md → the model) added so
scanners can mechanically follow the chain.

What this is, and what it is not

This is not a security audit. It is a working triage document
— the reference a triager holds against an inbound report to
decide whether the report is about a JSPWiki vulnerability or
about operator misconfiguration / an out-of-scope concern.

JSPWiki's wiki-engine domain (untrusted user-supplied markup
rendering, optional plugin execution, attachment handling, JAAS
container-managed auth) makes §3 / §9 / §11a especially load-
bearing — the model carefully calls out which classes of findings
the PMC has historically ruled non-issues vs. valid.

The draft was generated by an automated agentic security scan
being piloted by the ASF Security team; the discoverability work
is independent of any specific scan run.

How to review

  1. §14 first. Q1 (back-map of the wiki Security + CVE pages),
    Q9 (the SecurityManager-not-supported question — single
    highest-impact open ruling), and Q37 (§11a population from
    historical XSS-class CVE clusters) are the three most
    load-bearing.
  2. After that, please skim §3 (out-of-scope) and §13 (triage
    dispositions) — those govern how a vulnerability report would
    be triaged.

Reply edits / corrections inline on the PR, or to the original
security@apache.org thread, whichever fits the PMC's workflow.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 30, 2026 01:16
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a draft security threat model document for Apache JSPWiki to define scope, trust boundaries, security properties, non-goals, and triage dispositions for vulnerability reports.

Changes:

  • Introduces a comprehensive threat model draft, including deployment postures, trust boundaries, and adversary model.
  • Documents explicit “out of scope” areas and “known non-findings” to help triage/automation.
  • Captures maintainer open questions and a back-map to existing security artefacts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread draft-THREAT-MODEL.md
Comment thread draft-THREAT-MODEL.md
Comment thread draft-THREAT-MODEL.md
Comment thread draft-THREAT-MODEL.md
Adds a draft project-level security threat-model document
(draft-THREAT-MODEL.md) at repo root, improving discoverability
for automated security scanners running against this repository.
The file follows the rubric format used by several other ASF
projects piloting security-model discoverability.

The "draft-" prefix signals this is a proposal for the PMC to
review, correct, or reject — not a finalised maintainer-blessed
model. Every claim carries a provenance tag (documented /
inferred / maintainer) so reviewers can see where each claim
originates; §14 collects open questions for the maintainers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 30, 2026 18:47
@potiuk potiuk force-pushed the asf-security/draft-threat-model-2026-05-30 branch from 540d733 to a599070 Compare May 30, 2026 18:47
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 11 comments.

Comment thread draft-THREAT-MODEL.md
Comment on lines +38 to +41
- **Reporting**: vulnerabilities that fall under §8 (claimed properties)
should be reported per the Apache Security Team disclosure channel
(<security@jspwiki.apache.org>); reports that fall under §3 (out of
scope), §9 (properties not provided), or §11a (known non-findings)
Comment thread draft-THREAT-MODEL.md
| `ChangeLog.md` (recurring XSS entries lines 373–375, 750, 937–938, 984, 1525, 1781, 1794, 1875, 1902, 1961, 1970, 1996) | recurring class of XSS findings, all fixed case-by-case | §9 well-known attack classes, §14 Q37 |
| `ChangeLog.md` line 163 (`JSPWIKI-1245`) | "run security validation checks at start up and log it" | §8 P10 |
| `ChangeLog.md` line 213 (`JSPWIKI-1229`) | "cookie security flags. new jspwiki properties added" | §8 P8 |
| `jspwiki-wiki.apache.org/Wiki.jsp?page=Security` | hardening recommendations: enable TLS, remove `Install.jsp` after install, vet third-party plugins, restrict file uploads with size limits + AV scanning, secure file permissions, vet container/JDK versions; **explicit note that CSS can be inserted into wiki pages but JavaScript injection is prevented by default settings**; advises private security mailing list at `security@apache.org` for disclosure | §10 hardening, §11a (CSS-injection-permitted-by-default false-friend) |
Comment thread draft-THREAT-MODEL.md
Comment on lines +319 to +320
transport for the whole webapp ("this block will require TLS across
all the board" — `web.xml`) *(documented)*.
Comment thread draft-THREAT-MODEL.md
| `jspwiki.aclManager` | `DefaultAclManager` *(documented: line 665)* | the documented default | swapping changes the ACL syntax |
| `jspwiki.userdatabase` | `XMLUserDatabase` *(documented: line 626)* | the documented default for P2 | passwords SHA-1 hashed per docs (lines 628–630) — **see §14 Q17** |
| `jspwiki.groupdatabase` | `XMLGroupDatabase` *(documented: line 606)* | the documented default | as above |
| `jspwiki.credentials.length.min` / `minUpper` / `minLower` / `minDigits` / `minSymbols` / `repeatingCharacters` / `minChanged` / `reuseCount` | 8 / 1 / 1 / 1 / 1 / 1 / 1 / -1 *(documented: lines 1117–1151)* | "8 is the default. 15 or more is recommended for high security systems"; reuseCount default `-1` (disabled) | password-complexity defaults; do not apply in P3 (container) or external IdP postures |
Comment thread draft-THREAT-MODEL.md
Comment on lines +774 to +776
11. **Configure password policy** above the very-defensive defaults
(`jspwiki.credentials.length.min ≥ 15`, `reuseCount ≥ 5`) for any
P2-posture wiki with real user accounts.
Comment thread draft-THREAT-MODEL.md
under the License.
-->

# Apache JSPWiki Security Threat Model (draft)
Comment thread draft-THREAT-MODEL.md
Comment on lines +1178 to +1180
**Q34.** Where should this document live? Proposed:
`docs/threat-model.md` in `apache/jspwiki`, with the wiki Security
page linking to it. *(meta)*
Comment thread draft-THREAT-MODEL.md
Comment on lines +27 to +29
- **Repository scope**: `apache/jspwiki` only. `jspwiki-site` and
`jspwiki-asf-docs` are dormant and **out of scope** (confirmed by PMC chair
Juan Pablo Santos, 2026-05-30).
Comment thread draft-THREAT-MODEL.md
Comment on lines +44 to +45
`https://jspwiki-wiki.apache.org/Wiki.jsp?page=CVE` *(maintainer-published
artefact — not mined into this draft, see §14 Q1)*.
Comment thread draft-THREAT-MODEL.md
Comment on lines +963 to +965
### Wave 1 — meta and external-artefact reconciliation

**Q1.** The JSPWiki PMC publishes two canonical security artefacts **on
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants