Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
a1c62ec
refactor(dataflow): delete the implicit array-element mechanism
misonijnik Jul 23, 2026
5bd7acf
refactor(rules): field-sensitive java.io.File model and $*VAR syntax
misonijnik Jul 23, 2026
d405d70
refactor(engine): drop the get* default passthrough for explicit serv…
misonijnik Jul 23, 2026
ab76500
refactor(config): make the branch-added passthroughs precise
misonijnik Jul 23, 2026
78ceaf2
refactor(config): field-sensitive models for the leaking beans
misonijnik Jul 23, 2026
3f314da
style(config): normalise java-lang.yaml to the width=80 serialisation
misonijnik Jul 23, 2026
bb17a3a
refactor(config): collapse the CharSequence rule-storage slot onto th…
misonijnik Jul 23, 2026
6dc868f
refactor(config): collapse nio buffer and Matcher rule-storage slots …
misonijnik Jul 23, 2026
6d80610
fix(config): drop the dead builder-content and matcher-pattern slots
misonijnik Jul 23, 2026
3fb392c
refactor(config): collapse java.lang.ref.Reference rule-storage slot …
misonijnik Jul 23, 2026
94ee9f2
refactor(config): collapse javax.xml.namespace.QName rule-storage slo…
misonijnik Jul 23, 2026
549ed26
refactor(config): collapse java.sql Array/Blob/Clob/Ref/ResultSet/Str…
misonijnik Jul 23, 2026
e448cbc
refactor(config): collapse java.net URI/URL rule-storage slots onto t…
misonijnik Jul 23, 2026
304f304
refactor(config): collapse java.util.concurrent CompletableFuture/Com…
misonijnik Jul 23, 2026
499c6d6
refactor(config): collapse java.util.logging.LogRecord rule-storage s…
misonijnik Jul 23, 2026
4180393
refactor(config): collapse javax.sql.rowset.serial SerialDatalink/Ser…
misonijnik Jul 23, 2026
44e8a0c
refactor(config): collapse javax.xml.transform rule-storage slots ont…
misonijnik Jul 23, 2026
5cfff9e
refactor(config): collapse java.io holder rule-storage slots onto the…
misonijnik Jul 23, 2026
b38acdd
refactor(config): collapse java.lang holder rule-storage slots onto t…
misonijnik Jul 23, 2026
6bccfaf
refactor(config): collapse java.util holder rule-storage slots onto t…
misonijnik Jul 23, 2026
c3957a4
refactor(config): collapse java.text holder rule-storage slots onto t…
misonijnik Jul 23, 2026
575feae
refactor(config): split NameClassPair name/className/nameInNamespace
misonijnik Jul 23, 2026
4d6067d
refactor(config): split javax.naming.Reference, collapse the name hol…
misonijnik Jul 23, 2026
9eb68fa
refactor(config): collapse javax.naming.directory holders, slot Searc…
misonijnik Jul 23, 2026
8fdcba4
refactor(config): slot the javax.naming.ldap control properties
misonijnik Jul 23, 2026
9f8dc19
fix(config): restore the SortControl(String, boolean) taint model
misonijnik Jul 23, 2026
6d804c7
fix(config): key SortResponseControl's encodedValue to its declaring …
misonijnik Jul 23, 2026
11bc36a
refactor(config): collapse the org.w3c.dom.Document rule-storage slot…
misonijnik Jul 23, 2026
be1bff1
refactor(config): slot the javax.script engine properties, collapse t…
misonijnik Jul 23, 2026
7b37e3d
refactor(config): split the java.text symbols into per-property slots
misonijnik Jul 23, 2026
3e4c6ea
fix(config): close BasicControl#getID whole-object leak (star ctrlSink)
misonijnik Jul 23, 2026
3e49c4f
fix(config): close DecimalFormatSymbols#getCurrencySymbol whole-objec…
misonijnik Jul 23, 2026
b4a6826
fix(config): close DateFormatSymbols set./get. whole-object leak
misonijnik Jul 23, 2026
0f42604
fix(config): revert gate-invisible matcher form, adjudicate the leak
misonijnik Jul 23, 2026
32b8471
fix(config): propagate taint through SearchResult, Binding, and Rdn c…
misonijnik Jul 23, 2026
64d2a98
fix(config): remove whole-object twins on SortKey, MessageFormat, Dec…
misonijnik Jul 23, 2026
71b7172
fix(config): DecimalFormat#applyPattern taints only the pattern slot
misonijnik Jul 23, 2026
82e46fc
fix(config): restore DecimalFormatSymbols setCurrency/getLocale, drop…
misonijnik Jul 23, 2026
ad52d5b
fix(config): preserve servlet parameter map fields
misonijnik Jul 29, 2026
34a8e70
style(config): normalize Spring function entries
misonijnik Jul 29, 2026
9ffede7
test(ci): update OWASP trace expectation for config batch
misonijnik Jul 30, 2026
9290f47
fix(model): preserve reversed comparator state
misonijnik Aug 7, 2026
eacae1d
fix(config): model Map.Entry accessors and tighten LinkedList element…
misonijnik Aug 12, 2026
7afc656
refactor(model): rename <rule-storage> to semantic field names
misonijnik Aug 12, 2026
bb5e659
fix(test): track primitive approximation flows (model)
misonijnik Aug 12, 2026
0d670e2
fix(model): restore every passthrough rule deleted across the config …
misonijnik Aug 12, 2026
ddce2c8
fix(model): match primitive array parameter types
misonijnik Aug 13, 2026
40eb1d3
fix(model): re-key virtual-field slots whose value type diverged
misonijnik Aug 13, 2026
9deb135
fix(model): read into the destination buffer, keep nio buffers fluent
misonijnik Aug 13, 2026
118ba59
chore(model): drop duplicate copy actions
misonijnik Aug 13, 2026
c6e7077
fix(model): drop <serialized-value> reads that cannot type-check
misonijnik Aug 13, 2026
655af12
test(rules): pin the library passthrough models with regression samples
misonijnik Aug 13, 2026
bf7bc14
test(ci): restore the OWASP trace expectation
misonijnik Aug 13, 2026
cd6f6dc
refactor(model): give every field slot a java.lang.Object value type
misonijnik Aug 13, 2026
5d58be4
fix(model): close the container and serializer gaps the new samples f…
misonijnik Aug 13, 2026
5c6c45b
test(rules): cover the buffer-filling models and the rest of the cont…
misonijnik Aug 13, 2026
fcb3d5a
test(rules): leave Collectors#joining out of the assertions
misonijnik Aug 13, 2026
2b2945c
revert(model): drop the blanket restore of the deleted passthrough rules
misonijnik Aug 13, 2026
9bf524c
test(ci): put the OWASP trace expectation back to 2633
misonijnik Aug 13, 2026
492e567
fix(model): carry array elements into scalar destinations
misonijnik Aug 13, 2026
f285e33
fix(model): drop copies that name an argument the overload does not have
misonijnik Aug 13, 2026
95f933b
refactor(model): stop hanging String content slots off String positions
misonijnik Aug 13, 2026
6af7cb5
feat(model): model the servlet attribute slots and close the jakarta gap
misonijnik Aug 14, 2026
48f5131
feat(model): model the list element read
misonijnik Aug 18, 2026
affac6e
fix(model): keep the serialized-value read on readValue(String)
misonijnik Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-analyzer-owasp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ concurrency:
cancel-in-progress: true

env:
EXPECTED_TRACES: 4112
EXPECTED_TRACES: 2633

jobs:
owasp:
Expand Down
36 changes: 12 additions & 24 deletions model/go/config/builtin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,6 @@ passThrough:
copy:
- from: arg(0)
to: result
- function:
package: <builtin>
name: append
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- function:
package: <builtin>
name: append
Expand All @@ -45,18 +33,6 @@ passThrough:
copy:
- from: arg(1)
to: arg(0)
- function:
package: <builtin>
name: copy
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(1)
- '[*]'
to:
- arg(0)
- '[*]'
- function:
package: <builtin>
name: max
Expand All @@ -83,3 +59,15 @@ passThrough:
to:
- result
- .<pointer>#<deref>
- function:
package: <builtin>
name: append
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(1)
- '[*]'
to:
- result
- '[*]'
4 changes: 4 additions & 0 deletions model/go/config/errors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,7 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
4 changes: 4 additions & 0 deletions model/go/config/github.com.astaxie.beego.utils.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ passThrough:
copy:
- from: arg(*)
to: result(0)
- from:
- arg(0)
- '[*]'
to: result(0)
4 changes: 4 additions & 0 deletions model/go/config/github.com.beego.beego.utils.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ passThrough:
copy:
- from: arg(*)
to: result(0)
- from:
- arg(0)
- '[*]'
to: result(0)
4 changes: 4 additions & 0 deletions model/go/config/github.com.beego.beego.v2.core.utils.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ passThrough:
copy:
- from: arg(*)
to: result(0)
- from:
- arg(0)
- '[*]'
to: result(0)
16 changes: 16 additions & 0 deletions model/go/config/github.com.davecgh.go-spew.spew.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,40 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: github.com/davecgh/go-spew/spew
name: Sprint
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: github.com/davecgh/go-spew/spew
name: Sprintln
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: github.com/davecgh/go-spew/spew
name: Sprintf
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(1)
- '[*]'
to: result
4 changes: 4 additions & 0 deletions model/go/config/go.uber.org.zap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,7 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
12 changes: 12 additions & 0 deletions model/go/config/html.template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,29 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: html/template
name: JSEscaper
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: html/template
name: URLQueryEscaper
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
4 changes: 4 additions & 0 deletions model/go/config/io.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: io
name: MultiWriter
Expand Down
4 changes: 4 additions & 0 deletions model/go/config/net.url.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -192,3 +192,7 @@ passThrough:
copy:
- from: arg(*)
to: result(0)
- from:
- arg(1)
- '[*]'
to: result(0)
4 changes: 4 additions & 0 deletions model/go/config/path.filepath.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
4 changes: 4 additions & 0 deletions model/go/config/path.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,7 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
4 changes: 4 additions & 0 deletions model/go/config/reflect.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -303,3 +303,7 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(1)
- '[*]'
to: result
80 changes: 20 additions & 60 deletions model/go/config/slices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,48 +6,32 @@ passThrough:
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Clone
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Compact
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: CompactFunc
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Concat
Expand All @@ -67,48 +51,32 @@ passThrough:
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: DeleteFunc
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Grow
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Insert
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Insert
Expand Down Expand Up @@ -167,24 +135,16 @@ passThrough:
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Replace
receiver: false
taintCopyOnly: true
copy:
- from:
- arg(0)
- '[*]'
to:
- result
- '[*]'
- from: arg(0)
to: result
- function:
package: slices
name: Replace
Expand Down
4 changes: 4 additions & 0 deletions model/go/config/strings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -260,3 +260,7 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
12 changes: 12 additions & 0 deletions model/go/config/text.template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,29 @@ passThrough:
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: text/template
name: JSEscaper
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
- function:
package: text/template
name: URLQueryEscaper
receiver: false
copy:
- from: arg(*)
to: result
- from:
- arg(0)
- '[*]'
to: result
Loading
Loading