Repository navigation
docs(skills): require the request-to-sink path in every security triage - #2110
Merged
Merged
Conversation
The triaging-security-reports skill verified the mechanism a report
names but let the assessment stop there. In two triages this week the
sink was confirmed by a direct probe while the question that decides
ownership - does framework code carry the request value into that
sink, or does the application hand it over - was answered from memory
or not at all.
The assessment now carries a path table, one row per hop from the HTTP
request to the sink, each row a file:line read this session, a probe
executed, or the literal "not traced". The table decides ownership:
input the framework accepts and operates on (type conversion, parsing,
tag formatting) is the framework's fault even when the developer could
have validated it afterwards; input the developer hands to a framework
evaluation capability (findValue, getText, template %{}) is the
application's.
Baseline: four subagent runs against the unedited skill. The converter
scenario traced the path unprompted in both runs. The OGNL-gadget
scenario traced the parameter hops but left the report's second channel
(tag reflection) untouched and deferred the remaining channels to a
memory note; the first-pass triage in the live session traced nothing.
Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
triaging-security-reportsnow requires every assessment to carry a path table from the HTTP request to the sink the report names: one row per hop, each afile:lineread this session, a probe executed, or the literal "not traced". The table decides ownership, which becomes the verdict's first sentence:findValue,getText, template%{}) is the application's.Two red flags and three Common Mistakes rows close the rationalizations seen in use: "the gadget fires, so it's confirmed", "the developer declared the type", and "the earlier triage already walked the channels".
Why
In two triages this week the sink was confirmed by a direct probe and the assessment stopped there. The question that decides the verdict, whether framework code carries the request value into that sink, was answered from a memory note or not at all. The skill verified mechanisms; it did not demand reachability.
Testing (skill TDD)
Baseline, unedited skill, four subagent runs over two scenarios:
java.beans.Expressionpost, PMC pushing "quick confirm of the earlier verdict"): the neutral run traced the parameter hops but never touched the report's "reflected via tags" channel and deferred the other channels to the memory note.With the edit, one run per scenario: both open with the ownership call, both carry the table, the gadget run traced and executed the tag channel and marked the channels it did not walk as "not traced". No new rationalization appeared, so no refactor pass was needed.
🤖 Generated with Claude Code