Replies: 2 comments 1 reply
|
Hi @snazy Thanks very much for starting this discussion. Would you like to create a simple draft PR with a few basic rules, scopes, to make it to easier to visualize, for us to to discuss various points, such as
and other ones you listed. Thanks |
1 reply
|
Just t add on it - the easily installable version of the skill I was using (and I can confirm it's really great to create your threat model) is now available as marketplace plugin: https://github.com/alpha-omega-security/threat-model |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
I've been thinking about whether it would make sense to have a security threat model for Quarkus.
I've used threat models in other projects and they worked quite well.
The useful part was not that they covered every possible attack.
It was almost the opposite: they made the project's implicit security contract explicit.
Another reason for doing this is the amount of scanner and AI-generated security reports open-source projects now receive.
It is very cheap to point at a suspicious piece of code.
Showing that it is reachable by an attacker and actually violates a security property is the hard part.
The same requirements should apply to every report, no matter whether it came from a human, scanner, fuzzer, or AI.
Keeping it maintainable
Quarkus is a pretty big project.
Trying to cover every threat, extension, configuration property, and public API in one document would create something that is impossible to keep current.
I think it needs to be layered:
The top-level document should be readable in one sitting.
It should also not turn into an audit, a CVE history, a secure-coding guide, or another copy of the architecture documentation.
What should a report have to show?
I do not think a reporter should have to provide a weaponized exploit.
But there should be a credible path from an in-scope attacker, through an input or action they control, to reachable code in a supported configuration.
The report should also say which security property is violated and what the impact is.
Things like these should not be enough on their own:
That does not mean an incomplete report is automatically invalid.
It may simply need more evidence.
Source-level reasoning or a safe reproducer can also be sufficient when a full exploit would be harmful or unnecessary.
Also, "non-default" cannot automatically mean "out of scope."
Many Quarkus capabilities are enabled through extensions and configuration.
Documented, supported production configurations should remain in scope unless the project explicitly says otherwise.
Who is responsible for what?
The existing Quarkus security policy already says that Quarkus is an ecosystem of extensions and libraries, many of which are not under the direct responsibility of the Quarkus team.
A threat model could make this more concrete:
Deployment hardening should not excuse a broken Quarkus invariant.
But an operator mistake is also not automatically a Quarkus vulnerability, unless Quarkus provides an unsafe default, breaks a documented property, or makes a misleading security guarantee.
For triage, I think it would already help to distinguish between a valid vulnerability, a report that needs more evidence, a hardening suggestion, an upstream issue, and something that is explicitly outside the model.
There should also be a "model gap" outcome.
If a credible report does not fit anywhere, the answer should be to improve the model, not to make up an ad-hoc reason for rejecting it.
Conversely, something that does not qualify as a vulnerability can still be a legit hardening issue.
Once it is clear that there is no confidential security issue, it can usually be handled publicly.
Where should it live?
Technically, I think the model itself should be a versioned top-level
SECURITY-MODEL.mdorTHREAT_MODEL.md.It should be the canonical place for scope and triage rules.
SECURITY.mdand the website security page should link to it and could contain a short checklist for reports.AGENTS.mdshould also point agents to the same document before they report a possible security issue.I would not copy the actual rules into
AGENTS.md.Having two versions of the policy would only make it easier for them to drift apart.
WDYT?
In particular, I would like to understand:
If the general direction makes sense, I can start with a draft based on the public documentation and a list of open questions.
It can then be corrected in small iterations instead of trying to design the complete model up front.
The approach is based on these public threat-model rubrics:
The second one is ASF-specific.
I would reuse the useful structure, not the ASF policy parts.
All reactions