oscerd opened a new pull request, #6: URL: https://github.com/apache/camel-kit/pull/6
## Summary Adds the project-level security model and threat model requested in #5, following the precedent of the Apache Camel Security Model ([CAMEL-23496](https://issues.apache.org/jira/browse/CAMEL-23496) / [apache/camel#23181](https://github.com/apache/camel/pull/23181)) and the sub-project documents of Camel Quarkus and Camel K. The model was produced with the threat-model-producer procedure in draft-first mode: every claim carries a `(documented — source)` or `(inferred — Qn)` provenance tag, and every inferred claim routes to an open question for the maintainers. Closes #5. ## What is in the PR | File | Content | |---|---| | `SECURITY.md` *(new)* | Supported versions, the ASF private reporting process (`[email protected]`, explicit "no public issue or PR"), pointer to the model, related projects (Camel JBang MCP → Apache Camel, Knowledge MCP → its repository, Citrus MCP → Citrus). | | `docs/security-model.md` *(new)* | The canonical model, as the additive sub-project expansion of the umbrella Apache Camel Security Model: header with version binding and provenance legend; caller roles and an eight-row component-family table (CLI, graph parsers, skills/templates, Ship controller, Ship resolver/payloads, MCP servers, generated projects, shipped-but-unsupported); explicit non-goals; trust boundaries, data flow and per-family reachability preconditions; environment assumptions and the negative side-effect inventory; configuration knobs that move the envelope (generated harness allow-lists, MCP auto-approval, snapshot repositories, Ship `--ask`/`--backend`/`--accept-experimental`, `CAMEL_KIT_SHIP_STATE_HOME`); a per-entry-point input trust table; the adversary model (untrusted source-tree author, model output as attacker-influenced input, network peer, other local accounts); eleven claimed properties with violation symptom and severity tier (inherited source-readin g contract, hardened XML, `init` write confinement, pinned supply chain, Ship controller authority, tree policy, secret redaction, isolated validation, expression gate, generated least-privilege assets, stated resource bounds); disclaimed properties and false friends; downstream responsibilities including deployment hardening; known misuse patterns; known non-findings usable as a scanner suppression list; revision triggers; the closed set of triage dispositions with the mapping for the categories named in #5 (framework vulnerability vs. LLM hallucination vs. user-directed insecure design vs. operator misconfiguration); 13 open questions in three waves; a provenance back-map appendix. | | `docs/security-model.yaml` *(new)* | Derived machine-readable sidecar (roles, families, entry points, knobs, claimed/disclaimed properties, non-findings, dispositions, open questions, revision triggers) for automated and AI-assisted triage, as the umbrella model and Camel K ship. | | `.github/ISSUE_TEMPLATE/config.yml` *(new)* | Contact link "Report a security vulnerability" pointing at the ASF process, so the public issue form warns before a report is filed. | | `README.md`, `CONTRIBUTING.md`, `CLAUDE.md` | Pointers: README documentation list and a Security section; CONTRIBUTING issue guideline, "Where to Document" row and a Security section listing the changes that must update the model; CLAUDE.md "Security model" section (an agent must never open a public issue or PR about a suspected vulnerability) and a definition-of-done item. | | `CHANGELOG.md`, `docs/architecture.md` | Unreleased entry; the decision and rejected alternatives recorded under "Key Design Decisions". | ## Decisions taken in this PR - **File names.** `docs/security-model.md` as named in #5, with the sidecar named after it (`docs/security-model.yaml`), matching the umbrella `security-model.adoc` / `security-model.yaml` pairing. Camel K uses `docs/threat-model.md`; either name works for the ASF index registration. - **Structure.** The threat-model rubric's section numbering (4.1–4.15) is kept, as Camel K did, so triagers familiar with the rubric and the umbrella's disposition labels can map them one-to-one. - **Status is DRAFT.** 125 documented / 0 maintainer / 23 inferred tags. The inferred claims are hypotheses until the §4.14 questions are answered; the document says so in its header and marks what still needs a maintainer ruling. - **"Templates" in the issue's deliverable list** was read as GitHub issue templates (contributor-facing), hence the `config.yml` contact link. The generated per-agent workspace templates were deliberately not changed: they already carry the operative rules (Iron Laws, `context-authority.md`, the security checklist), and linking a user's project instructions to this repository's model adds little (open question Q13). ## Review path The fastest way to turn the draft into an accepted model is to answer wave 1 of §4.14 (Q1–Q5): the source-reading contract for all nine graph parsers, the termination/symlink stance for graph analysis, whether the generated Claude allow-list and MCP auto-approval are the supported posture, the status of snapshot repositories in the defaults, and the model/harness boundary for prompt injection. Each question states a proposed answer to confirm, correct or strike. Once accepted, the Camel PMC can register the document in `apache/security-site` (`scripts/project-coordinates.json`) under Apache Camel, as Camel K, Camel Quarkus, Camel Karaf, Kamelets and Kafka Connector are (Q10). ## Verification - Documentation-only change: no Java, skill, template or trait files touched, so no module test run applies. - `./mvnw -B -Psourcecheck validate` passes (CI format gate). - `docs/security-model.yaml` parses with a YAML loader; section references are strings; every `(inferred — Qn)` tag in the prose names a question defined in §4.14; all relative links and anchors in the touched Markdown files resolve. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
