Skip to content

test(core): Honor typed-receiver instance-method sanitizers#261

Open
misonijnik wants to merge 1 commit into
mainfrom
misonijnik/repros-sanitizer
Open

test(core): Honor typed-receiver instance-method sanitizers#261
misonijnik wants to merge 1 commit into
mainfrom
misonijnik/repros-sanitizer

Conversation

@misonijnik

Copy link
Copy Markdown
Member

No description provided.

Minimal repro on top of main for the engine gap behind the
path-traversal FP
(`(java.io.File $F).getCanonicalFile()` fails to sanitize).

Root cause found by reading the engine: cleaners/sanitizers are applied
only for
rules carrying UserRuleFromSemgrepInfo
(JIRMethodCallRuleBasedSummaryRewriter does
`cleanRule.info as? UserDefinedRuleInfo ?: continue`), so a low-level
SerializedTaintConfig cleaner (info=null) is never applied — sanitizers
are
semgrep-only. The low-level function matcher is name-based (matches
instance and
static alike), so the instance-vs-static divergence must be in the
semgrep
pattern->matcher compilation. The working example uses a metavar
receiver
`$A.getObjBad()`; the failing path-traversal sanitizers use a TYPED
receiver
`(File $F).getCanonicalFile()`.

Repro (querylang SampleBasedTest, real SemgrepRuleLoader ->
createTaintConfig):
taint/InstanceSanitizerRepro with a `(Box $B).sanitize()` typed-receiver
pattern-sanitizer. Positive is flagged (correct); Negative (value passed
through
the sanitizer) is ALSO flagged — the repro. TaintTest."instance-method
typed-receiver sanitizer repro" fails today and should pass once
typed-receiver
instance-method sanitizers are honored.
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.

1 participant