Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
819 commits
Select commit Hold shift + click to select a range
3110e5a
JS: Localize MkModuleExport
asgerf Oct 10, 2025
a2a9518
JS: Localize MkModuleImport
asgerf Oct 10, 2025
385bb32
JS: Localize MkClassInstance
asgerf Oct 10, 2025
3ed0f36
JS: Use forceLocal to localize MkTypeUse
asgerf Oct 10, 2025
6c00a7f
JS: Remove unused predicate
asgerf Oct 10, 2025
295bc69
JS: Make API nodes and labels local
asgerf Oct 10, 2025
123bc64
JS: Improve join order at MkUse call
asgerf Nov 28, 2025
271567c
JS: Add missing def-node roots
asgerf Nov 28, 2025
daf04f1
JS: Call forceLocal on the output of Stage 1
asgerf Nov 28, 2025
b12d927
JS: Also expose "any state" version of tracking predicates
asgerf Nov 28, 2025
1001e86
JS: Restrict Stage1 to the base database
asgerf Nov 28, 2025
9c37e07
JS: Add overlay-specific Stage2
asgerf Nov 28, 2025
c9d3f06
JS:Add more member labels
asgerf Oct 10, 2025
4bd0f34
JS: Add debug tools for detecting lost nodes/edges
asgerf Oct 10, 2025
825c083
JS: Change signature of 'edges' to support quick eval
asgerf Oct 10, 2025
a6dfb83
JS: Add back CallReceiverStep() restriction
asgerf Oct 6, 2025
cf0e765
JS: Remove global dependency that wasnt needed anyway
asgerf Nov 3, 2025
c687dc9
JS: Add overlay[global] to abstract classes with fields
asgerf Oct 10, 2025
ed3a8bd
JS: Include import paths from custom ModuleImportNode::Range subclasses
asgerf Nov 20, 2025
651608a
JS: Bugfix in Stage1Local::trackDefNode
asgerf Nov 24, 2025
7974416
JS: Simplify toString()
asgerf Nov 24, 2025
962c128
JS: Update test output to reflect Node.toString() change
asgerf Nov 24, 2025
8731eee
JS: Work around an issue with overlay-invariance
asgerf Nov 24, 2025
27e8bcb
JS: Add back promisify-all support
asgerf Nov 24, 2025
97d369c
JS: Make API::Node overlay[local?]
asgerf Nov 24, 2025
869efb8
JS: Sync ApiGraphModels.qll
asgerf Nov 24, 2025
369848a
JS: Fix some QL4QL alerts
asgerf Nov 25, 2025
cae27c4
JS: Add a missing needsDefNode restriction
asgerf Nov 25, 2025
9721b4e
JS: Fix bad join in export logic
asgerf Dec 2, 2025
d0dbc91
Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
asgerf Dec 9, 2025
56a6fe4
Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
asgerf Dec 9, 2025
87049bd
Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
asgerf Dec 17, 2025
e16cacd
JS: Rename "in scope" to "in active file"
asgerf Dec 17, 2025
cf0b770
JS: Workaround forceLocal not supporting 'result' column
asgerf Jan 5, 2026
1e79213
Rust: Add `Result::Err` to `excludeFieldTaintStep`
hvitved Jan 7, 2026
6c291e1
Add model for `handlePongMessage` and update test
owen-mc Jan 7, 2026
f5ddb1d
C++: Remove `safeFloor` in simple range analysis
paldepind Jan 7, 2026
7ed3d3f
Merge pull request #21065 from michaelnebel/csharp/implicitspanconver…
michaelnebel Jan 7, 2026
2d4da80
Merge pull request #21114 from hvitved/rust/exclude-result-err-taint-…
hvitved Jan 7, 2026
fef00c1
Add change note
hvitved Jan 7, 2026
9db11f7
Revert "Add integration test for paths and paths-ignore vs. Java buil…
smowton Jan 7, 2026
688f10d
Revert "Change note"
smowton Jan 7, 2026
6a3c74c
Merge pull request #20999 from joefarebrother/java-spring-websocket
owen-mc Jan 7, 2026
8602a2d
Python: Use correct first parameter name for zstd call
tausbn Jan 7, 2026
e3503be
Cmake: fix bazel not generating files for the cmake generator
redsun82 Jan 7, 2026
a5f6806
Merge pull request #21105 from jketema/load-this
jketema Jan 7, 2026
d048d39
Merge pull request #21117 from smowton/smowton/admin/revert-java-path…
smowton Jan 7, 2026
614a051
Add changed framework coverage reports
github-actions[bot] Jan 8, 2026
7c0054b
C++: Tweak a comment in simple range analysis
paldepind Jan 8, 2026
2ea3c0e
Merge pull request #20938 from tesseractjh/js/use-cache-directives
asgerf Jan 8, 2026
22b88ae
Merge pull request #21119 from github/redsun82/cmake
redsun82 Jan 8, 2026
1ebf623
C++: Add space in tests for adding new tests in a logical place
jketema Jan 8, 2026
89c11b8
C++: Add tests for logical vector operations
jketema Jan 8, 2026
217c5cb
C++: Update tests after adding extractor support for logical vector o…
jketema Jan 8, 2026
56f5328
Rust: Use `getAssocItem` consistently in stdlib classes
paldepind Jan 8, 2026
c419b51
Merge pull request #21120 from github/workflow/coverage/update
owen-mc Jan 8, 2026
0c8fd83
Merge pull request #21124 from jketema/jketema/vec-expr
jketema Jan 8, 2026
647d11a
C++: Add test for C++23 multidimensional subscript operators
jketema Jan 8, 2026
26bd332
Merge pull request #21113 from paldepind/cpp/range-analysis-float-ceil
paldepind Jan 8, 2026
3907fc7
C++: Add predicates to support multidimensional subscript operators
jketema Jan 8, 2026
e0f8b12
C++: Update expected test results
jketema Jan 8, 2026
608fa1a
Merge pull request #20910 from yoff/java/more-thread-safe-initialisers
yoff Jan 8, 2026
4c3fb0c
C++: Deprecate getArrayOffset/0
jketema Jan 8, 2026
c8728c2
Merge pull request #21125 from paldepind/rust/builtin-refactor
paldepind Jan 8, 2026
9ceb091
C++: Update predicate after `getAnArrayOffset/0` deprecation
jketema Jan 8, 2026
72f1aa9
C++: Add change notes
jketema Jan 8, 2026
8a80158
Merge pull request #17590 from Kwstubbs/java-mad-test
owen-mc Jan 8, 2026
af5adba
SSA: Improve performance of finding relevant phi input nodes.
aschackmull Jan 8, 2026
cce6823
Delete experimental models that have been promoted
owen-mc Jan 8, 2026
bea93ae
Add changed framework coverage reports
github-actions[bot] Jan 9, 2026
9af432d
C++: Add simple range analysis tests for inequalities
paldepind Oct 4, 2025
3a13588
C++: Improve bounds from inequalities on integers
paldepind Oct 4, 2025
70c90a1
Merge pull request #21129 from owen-mc/java/delete-promoted-experimen…
owen-mc Jan 9, 2026
e35fa92
C#: Add support for MaD barriers and barrier guards.
aschackmull Dec 11, 2025
8c9318b
Minor tweaks to QLDocs
owen-mc Jan 9, 2026
c271e52
Validate models for barriers and barrier guards
owen-mc Jan 9, 2026
ca805e9
Fix QLDoc
owen-mc Jan 9, 2026
6028cd6
Address review comments
hvitved Jan 9, 2026
d7acb75
Merge pull request #21055 from owen-mc/java/allow-mad-barriers
owen-mc Jan 9, 2026
e2eaf80
Rust: Fix QL4QL finding
hvitved Jan 9, 2026
11bd334
Rust: Use `TypeItem` in path resolution
paldepind Jan 9, 2026
9493d9d
Merge pull request #21131 from github/workflow/coverage/update
owen-mc Jan 9, 2026
1a29b32
Merge pull request #20987 from hvitved/rust/type-inference-deref-trait
hvitved Jan 9, 2026
209ee92
Rust: Also lift read steps in summaries as taint steps
hvitved Jan 8, 2026
89ddd67
Merge pull request #21002 from github/tausbn/python-add-models-for-zs…
tausbn Jan 9, 2026
ac62a9f
Merge pull request #21133 from paldepind/rust/type-item-path-resolution
paldepind Jan 9, 2026
636bbe3
Merge pull request #21122 from hvitved/rust/summary-read-taint-step
hvitved Jan 9, 2026
31b0d3e
Rust: Fix some models in `fs.model.yml`
hvitved Jan 8, 2026
7929085
Rust: Add some `ffi` models
hvitved Jan 8, 2026
0d0029f
Rust: Update expected test output
hvitved Jan 8, 2026
609eb17
Rust: Add more models
hvitved Jan 8, 2026
f3d78a4
Rust: Update expected test output
hvitved Jan 8, 2026
13e0e6c
Reapply "Add integration test for paths and paths-ignore vs. Java bui…
smowton Jan 9, 2026
634e9e6
Reapply "Change note"
smowton Jan 9, 2026
d452696
Rust: Add test with fn trait syntax without return type
paldepind Jan 9, 2026
41921a8
Rust: Make function trait syntax without return type default to unit
paldepind Jan 9, 2026
4c8058d
Merge branch 'github:main' into couchdb
mbaluda Jan 9, 2026
fa0e8cc
Merge pull request #21137 from smowton/smowton/admin/reapply-java-xml…
smowton Jan 9, 2026
44089d8
Merge pull request #21102 from github/smowton/admin/respect-config-pa…
smowton Jan 9, 2026
0464e64
Merge branch 'github:main' into couchdb
mbaluda Jan 9, 2026
4318c28
Bump golang.org/x/mod
dependabot[bot] Jan 12, 2026
aae8ec2
SSA: Use fastTC for even better performance.
aschackmull Jan 12, 2026
57ec850
Merge pull request #21146 from github/dependabot/go_modules/go/extrac…
owen-mc Jan 12, 2026
c9e6d42
Merge pull request #21139 from paldepind/rust/fn-syntax-return
paldepind Jan 12, 2026
e4db3b1
Merge pull request #20584 from paldepind/cpp/range-analysis-fix
paldepind Jan 12, 2026
6b34d0d
Merge pull request #21123 from hvitved/rust/fix-path-models
hvitved Jan 12, 2026
8e2d74a
Java: Add TypeFlow base case for partially unbound types.
aschackmull Jan 12, 2026
c28062a
Merge pull request #21127 from aschackmull/ssa/phi-input-perf
aschackmull Jan 12, 2026
17441a5
Rust: Add missing `.Reference` in various models
hvitved Jan 12, 2026
7658ebb
Rust: Add spurious test case for rust/uncontrolled-allocation-size.
geoffw0 Jan 9, 2026
479c58b
Rust: Add a barrier.
geoffw0 Jan 9, 2026
a78756f
Merge branch 'main' into splitoff
geoffw0 Jan 12, 2026
c666fc7
Merge pull request #21147 from hvitved/rust/fix-more-models
hvitved Jan 12, 2026
659ec39
Mark generated files as generated
tausbn Jan 12, 2026
8c90c11
Update change note to reflect Python 2 changes
tausbn Jan 12, 2026
9e74a78
Rust: Move everything type inference related into the typeinference d…
paldepind Jan 12, 2026
de1d183
Misc: Add CLI interface to `create-change-note.py`
tausbn Jan 12, 2026
dcd0a69
Merge remote-tracking branch 'upstream/main' into igfoo/mb
igfoo Jan 13, 2026
37bb9d7
Bump golang.org/x/tools
dependabot[bot] Jan 13, 2026
e779112
Rust: Address review comments
paldepind Jan 13, 2026
1151fc3
Update csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlo…
aschackmull Jan 13, 2026
b2d19b6
Rust: US spelling.
geoffw0 Jan 13, 2026
d6ec174
Rust: Remove `MacroBlockExpr` class
hvitved Jan 13, 2026
3eafca0
Rust: Run codegen
hvitved Jan 13, 2026
5fb425f
Rust: Update extractor and QL code after removing `MacroBlockExpr`
hvitved Jan 13, 2026
5d5bad6
Rust: Update expected test output
hvitved Jan 13, 2026
4cc4717
Rust: Add DB upgrade script
hvitved Jan 13, 2026
31b4f88
Rust: Add DB downgrade script
hvitved Jan 13, 2026
f5b13db
Merge pull request #21015 from aschackmull/go/mad-barriers
owen-mc Jan 13, 2026
d2e6ae5
Update javascript/ql/lib/semmle/javascript/frameworks/Next.qll
asgerf Jan 13, 2026
ca52fe5
Merge pull request #20918 from asgerf/js/response-default-content-type
asgerf Jan 13, 2026
7f092e4
Merge pull request #21152 from paldepind/rust/typeinference-dir
paldepind Jan 13, 2026
da9aafc
JS: Also track additional use-steps crossing the overlay boundary
asgerf Jan 13, 2026
a96cd39
Merge pull request #21157 from github/dependabot/go_modules/go/extrac…
owen-mc Jan 13, 2026
8257475
Merge pull request #21132 from aschackmull/csharp/mad-barriers
aschackmull Jan 13, 2026
8b555ca
Java: Add test.
aschackmull Jan 13, 2026
004d40e
Allow MaD barriers using sink kinds
owen-mc Jan 9, 2026
b30bc5e
Allow MaD barriers relating to ExternalLocationSink
owen-mc Jan 9, 2026
68b6181
Convert barrier guard to MaD
owen-mc Jan 9, 2026
130f8f1
Convert barrier to MaD
owen-mc Jan 9, 2026
40c3534
JS: Add props to Vue router test case
asgerf Jan 13, 2026
69de17e
Merge pull request #21153 from geoffw0/splitoff
geoffw0 Jan 13, 2026
7cd820e
JS: Add support for props callbacks in router configs
asgerf Jan 13, 2026
9fa856f
JS: Change note
asgerf Jan 13, 2026
9c1351c
Merge pull request #21149 from aschackmull/java/typeflow-partially-un…
aschackmull Jan 13, 2026
5fc9b2d
Merge pull request #21154 from github/tausbn/misc-add-cli-mode-for-ch…
tausbn Jan 13, 2026
dda042f
rename change notes
mbaluda Dec 24, 2025
63f78e7
Merge pull request #21156 from igfoo/igfoo/mb
igfoo Jan 13, 2026
89f0e79
Fix `SqlTainted` test
mbaluda Jan 13, 2026
8cb0f5f
Merge pull request #21140 from owen-mc/csharp/mad-barriers
owen-mc Jan 13, 2026
9cdf63e
Rust: Skip model generation for functions with a ; in their canonical…
paldepind Dec 12, 2025
8bfce6b
Shared, rust: Add option to disable reads steps as taint steps in mod…
paldepind Jan 12, 2026
1fbf038
Rust: Skip model generation for Rocket due to performance issue
paldepind Jan 7, 2026
862adec
Rust: Disable dynamic dispatch when generating models
paldepind Jan 7, 2026
d784912
Rust: Exclude reqwest response timeout field as a taint step
paldepind Jan 12, 2026
da43e8c
Rust: Regenerate models
paldepind Jan 7, 2026
d20cd68
C++: Update expected test results after extractor changes
jketema Jan 2, 2026
a20f0a1
C++: No longer expose `_Decimal{32,64,128}`
jketema Jan 2, 2026
273f517
C++: Remove decimal types from the dbscheme
jketema Jan 2, 2026
ffdd6f7
C++: Add change note
jketema Jan 2, 2026
9ba73ba
C++: Update stats file
jketema Jan 2, 2026
f4980be
Update cpp/ql/lib/change-notes/2026-01-02-decimal-removal.md
jketema Jan 13, 2026
76a1e22
Rust: Remove manual models that are now generated
paldepind Jan 13, 2026
6c4a0bb
Merge pull request #20990 from github/tausbn/python-support-relaxed-e…
yoff Jan 13, 2026
55d4902
Rust: Restrict `ImplicitDerefBorrowNode` to nodes with enclosing CFG …
hvitved Jan 13, 2026
d335f03
Improve model for CWE-089
mbaluda Jan 13, 2026
4b7662f
Merge branch 'main' into couchdb
mbaluda Jan 13, 2026
29f23ee
Fix extraction error
mbaluda Jan 13, 2026
9efefa6
Fix test expectations
mbaluda Jan 13, 2026
519f0d2
Merge pull request #21023 from paldepind/rust/regenerate-models-1212
paldepind Jan 14, 2026
cc4926a
Merge pull request #21148 from hvitved/rust/remove-macro-block-expr
hvitved Jan 14, 2026
40a9136
Merge pull request #21110 from jketema/jketema/rm-decimal
jketema Jan 14, 2026
e430aa9
Merge pull request #20916 from asgerf/js/next-folders2
asgerf Jan 14, 2026
98c8b4c
JS: Skip minified file if avg line length > 200
asgerf Nov 13, 2025
84f6b6f
JS: Accept test change due to file no longer being extracted
asgerf Dec 2, 2025
2892ab6
JS: Make sure a file is not seen as minified
asgerf Dec 2, 2025
7ab52a8
JS: Add environment variable to opt out of the behaviour if needed
asgerf Dec 5, 2025
739ed4b
JS: Change note
asgerf Dec 5, 2025
0eadebc
Update javascript/extractor/src/com/semmle/js/extractor/FileExtractor…
asgerf Dec 5, 2025
b47ae42
Update javascript/ql/src/change-notes/2025-12-05-skip-minified-files.md
asgerf Dec 5, 2025
06cc323
Update javascript/ql/src/change-notes/2025-12-05-skip-minified-files.md
asgerf Dec 5, 2025
5cef037
Update java/ql/test/query-tests/security/CWE-798/semmle/tests/Hardcod…
mbaluda Jan 14, 2026
54f7565
C++: Update test expectations after extractor changes
jketema Jan 10, 2026
f71b6c1
Improved models for `Supplier` arguments
mbaluda Jan 14, 2026
9f725f7
Merge branch 'main' into couchdb
mbaluda Jan 14, 2026
ff58041
Merge pull request #20733 from asgerf/js/incremental-api-graphs
asgerf Jan 14, 2026
9d5e5b0
Add post-processing to Beego tests
owen-mc Dec 16, 2025
1cd0698
Fix test for reflected xss sanitizer
owen-mc Dec 12, 2025
93d7c5c
Remove redundant supertypes
owen-mc Jan 6, 2026
3850734
Use non-extending subtypes
owen-mc Jan 6, 2026
94bc47a
Swap order of supertypes
owen-mc Jan 6, 2026
b58e882
Remove redundant import
owen-mc Jan 6, 2026
0dc4738
Swap order of equality for easier comprehension
owen-mc Jan 6, 2026
76bba60
Fix misspelling in comment
owen-mc Jan 6, 2026
16113e6
Use type cast to make QL more succinct
owen-mc Jan 6, 2026
e01b674
Merge pull request #21082 from mbaluda/couchdb
owen-mc Jan 14, 2026
5d00a4d
Merge pull request #21143 from jketema/jketema/friends
jketema Jan 14, 2026
3d959ab
C++: Support new builtin operations
jketema Jan 9, 2026
93535d1
C++: Add tests for new builtin operations
jketema Jan 9, 2026
bb33ea3
C++: Add change note for new builtins
jketema Jan 9, 2026
047fa06
C++: Add `isThisAccess` predicate to `ParamAccessForType`
jketema Jan 9, 2026
f6b720b
C++: Add change note
jketema Jan 9, 2026
7a13cba
C++: Add upgrade and downgrade scripts
jketema Jan 9, 2026
1dacd83
C++: Update dbscheme stats file
jketema Jan 9, 2026
991d30f
Merge pull request #21161 from hvitved/rust/restrict-implicit-deref-b…
hvitved Jan 14, 2026
e0c36c7
Rust: Move associated types tests into separate file
paldepind Jan 12, 2026
fd5658d
Rust: Tweak tests for associated types
paldepind Jan 12, 2026
6219354
Rust: Add additional tests for associated types
paldepind Jan 14, 2026
a19ad5e
Rust: Associated types are inherited as type parameters by traits and…
paldepind Jan 14, 2026
17a453b
Merge pull request #21126 from jketema/subscript
jketema Jan 14, 2026
0cf0aac
Merge pull request #21109 from owen-mc/go/misc-trivial-fixes
owen-mc Jan 14, 2026
4654001
Rust: Adapt type inference consistency query exceptions
paldepind Jan 14, 2026
ca3e2db
Rust: Accept changes to expected files
paldepind Jan 14, 2026
8cbe17a
Rust: Fix bad join on name column
paldepind Jan 15, 2026
6e0a1ba
List more covered java frameworks explicitly
owen-mc Jan 15, 2026
3327193
Merge pull request #21164 from jketema/jketema/builtin
jketema Jan 15, 2026
13dc17c
Merge pull request #21167 from owen-mc/java/docs/library-coverage
owen-mc Jan 15, 2026
b4bbafa
Make `compile-queries.yml` sharded based on language
hvitved Jan 15, 2026
c632e8f
Merge pull request #20448 from github/alexet/avoid-path-node-java
aschackmull Jan 15, 2026
15f3c38
Rust: QLDoc fixes
paldepind Jan 15, 2026
97e0b4e
Use parameter name to only select correct overloads
owen-mc Jan 15, 2026
d8061c1
Merge pull request #21165 from paldepind/rust/associated-types
paldepind Jan 15, 2026
27a437a
C++: Modify test to reveal a bug.
MathiasVP Jan 15, 2026
2868150
C++: Fix bug and accept test changes.
MathiasVP Jan 15, 2026
d3fc254
Merge pull request #21169 from hvitved/shard-compile-queries
hvitved Jan 15, 2026
a5d9cb1
Merge pull request #20930 from owen-mc/java/spring-rest-template-requ…
owen-mc Jan 15, 2026
6da7890
C++: Add indirect barrier guard to 'cpp/unbounded-write' to prevent F…
MathiasVP Jan 15, 2026
549307a
Add changed framework coverage reports
github-actions[bot] Jan 16, 2026
c0b3569
Rust: Move `TypeAbstraction` into separate file
paldepind Jan 16, 2026
a116932
Rust: Avoid duplicated entries in `conditionSatisfiesConstraint` for …
paldepind Jan 16, 2026
c14b869
Merge pull request #21175 from github/workflow/coverage/update
owen-mc Jan 16, 2026
6b3d863
Rust: Remove trait parameter from `canonicalDynTraitTypeAbstraction`
paldepind Jan 16, 2026
ec09440
Merge pull request #21172 from paldepind/rust/dyn-abs
paldepind Jan 16, 2026
3cdca25
Actions: Add `examples` qlpack
hvitved Jan 16, 2026
7c95fef
Merge pull request #21177 from hvitved/actions/example-dir
hvitved Jan 16, 2026
767acb8
Rust: Fix bad join
hvitved Jan 16, 2026
5e9fd12
Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
MathiasVP Jan 16, 2026
43e2017
Rust: Fix bad join
hvitved Jan 16, 2026
08a6b99
C++: Add change note.
MathiasVP Jan 16, 2026
f05bff0
C++: Switch another 'DataFlowType' to 'Type'.
MathiasVP Jan 16, 2026
1c689d0
Merge pull request #21179 from hvitved/rust/fix-bad-join
hvitved Jan 16, 2026
06b99b2
Merge pull request #21180 from hvitved/rust/fix-bad-join2
hvitved Jan 19, 2026
077bbb2
Merge pull request #21159 from asgerf/js/vue-prop-function
asgerf Jan 19, 2026
dc7ce3f
Merge pull request #21171 from MathiasVP/fix-conflation-in-guards
MathiasVP Jan 19, 2026
bedb803
Merge pull request #20940 from asgerf/js/detect-minified-files
asgerf Jan 19, 2026
4142b9c
Release preparation for version 2.24.0
invalid-email-address Jan 19, 2026
7836765
Fix typo in changelog
nickrolfe Jan 19, 2026
1739e13
Fix list formatting inconsistency
nickrolfe Jan 19, 2026
c5329f6
Merge pull request #21189 from github/release-prep/2.24.0
nickrolfe Jan 19, 2026
5818330
Merge tag 'codeql-cli/latest' into auto/sync-main-pr
Jan 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.1.1
8.4.2
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,8 @@ updates:
- dependency-name: "*"
reviewers:
- "github/codeql-go"

- package-ecosystem: bazel
directory: "/"
schedule:
interval: weekly
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.300
dotnet-version: 10.0.100

- name: Checkout repository
uses: actions/checkout@v5
Expand Down
42 changes: 37 additions & 5 deletions .github/workflows/compile-queries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,41 @@ permissions:
contents: read

jobs:
compile-queries:
detect-changes:
if: github.repository_owner == 'github'
runs-on: ubuntu-latest
outputs:
languages: ${{ steps.detect.outputs.languages }}
steps:
- uses: actions/checkout@v5
- name: Detect changed languages
id: detect
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
# For PRs, detect which languages have changes
changed_files=$(gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path')
languages=()
for lang in actions cpp csharp go java javascript python ql ruby rust swift; do
if echo "$changed_files" | grep -qE "^($lang/|shared/)" ; then
languages+=("$lang")
fi
done
echo "languages=$(jq -c -n '$ARGS.positional' --args "${languages[@]}")" >> $GITHUB_OUTPUT
else
# For pushes to main/rc branches, run all languages
echo 'languages=["actions","cpp","csharp","go","java","javascript","python","ql","ruby","rust","swift"]' >> $GITHUB_OUTPUT
fi
env:
GH_TOKEN: ${{ github.token }}

compile-queries:
needs: detect-changes
if: github.repository_owner == 'github' && needs.detect-changes.outputs.languages != '[]'
runs-on: ubuntu-latest-xl
strategy:
fail-fast: false
matrix:
language: ${{ fromJson(needs.detect-changes.outputs.languages) }}

steps:
- uses: actions/checkout@v5
Expand All @@ -31,16 +63,16 @@ jobs:
id: query-cache
uses: ./.github/actions/cache-query-compilation
with:
key: all-queries
key: ${{ matrix.language }}-queries
- name: check formatting
run: find shared */ql -type f \( -name "*.qll" -o -name "*.ql" \) -print0 | xargs -0 -n 3000 -P 10 codeql query format -q --check-only
run: find shared ${{ matrix.language }}/ql -type f \( -name "*.qll" -o -name "*.ql" \) -print0 | xargs -0 -n 3000 -P 10 codeql query format -q --check-only
- name: compile queries - check-only
# run with --check-only if running in a PR (github.sha != main)
if : ${{ github.event_name == 'pull_request' }}
shell: bash
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
- name: compile queries - full
# do full compile if running on main - this populates the cache
if : ${{ github.event_name != 'pull_request' }}
shell: bash
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
10 changes: 5 additions & 5 deletions .github/workflows/csharp-qltest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.300
dotnet-version: 10.0.100
- name: Extractor unit tests
run: |
dotnet tool restore
dotnet test -p:RuntimeFrameworkVersion=9.0.5 extractor/Semmle.Util.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.5 extractor/Semmle.Extraction.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.5 autobuilder/Semmle.Autobuild.CSharp.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.5 autobuilder/Semmle.Autobuild.Cpp.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 extractor/Semmle.Util.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 extractor/Semmle.Extraction.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 autobuilder/Semmle.Autobuild.CSharp.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 autobuilder/Semmle.Autobuild.Cpp.Tests
shell: bash
stubgentest:
runs-on: ubuntu-latest
Expand Down
14 changes: 7 additions & 7 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json")
bazel_dep(name = "fmt", version = "12.1.0-codeql.1")
bazel_dep(name = "rules_kotlin", version = "2.1.3-codeql.1")
bazel_dep(name = "gazelle", version = "0.40.0")
bazel_dep(name = "rules_dotnet", version = "0.19.2-codeql.1")
bazel_dep(name = "rules_dotnet", version = "0.21.5-codeql.1")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
bazel_dep(name = "rules_rust", version = "0.66.0")
bazel_dep(name = "zstd", version = "1.5.5.bcr.1")
Expand Down Expand Up @@ -172,7 +172,7 @@ http_archive(
)

dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
dotnet.toolchain(dotnet_version = "9.0.300")
dotnet.toolchain(dotnet_version = "10.0.100")
use_repo(dotnet, "dotnet_toolchains")

register_toolchains("@dotnet_toolchains//:all")
Expand Down Expand Up @@ -274,11 +274,11 @@ ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archi
# go to https://github.com/GoogleChrome/ripunzip/releases to find latest version and corresponding sha256s
ripunzip_archive(
name = "ripunzip",
sha256_linux = "ee0e8a957687a5dc3a66b2a4b25883bf762df4c9c07f0651af527a32a405054b",
sha256_macos_arm = "8a88eea54eac232d162a72a42065e0429b82dbf4f05e9642915dff9d7a81f846",
sha256_macos_intel = "4457a18bfcc5feabe09f5ea3d1157128e07b4873392cb404a870e611924abf64",
sha256_windows = "66d0c1375301bf5ab815348048f43b110631d3fa7200acd50d50a8ed8655ca62",
version = "2.0.3",
sha256_linux = "71482d7a7e4ea9176d5596161c49250c34b136b157c45f632b1111323fbfc0de",
sha256_macos_arm = "604194ab13f0aba3972995d995f11002b8fc285c8170401fcd46655065df20c9",
sha256_macos_intel = "65367b94fd579d93d46f2d2595cc4c9a60cfcf497e3c824f9d1a7b80fa8bd38a",
sha256_windows = "ac3874075def2b9e5074a3b5945005ab082cc6e689e1de658da8965bc23e643e",
version = "2.0.4",
)

register_toolchains(
Expand Down
4 changes: 4 additions & 0 deletions actions/ql/examples/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
lockVersion: 1.0.0
dependencies: {}
compiled: false
7 changes: 7 additions & 0 deletions actions/ql/examples/qlpack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
name: codeql/actions-examples
groups:
- actions
- examples
dependencies:
codeql/actions-all: ${workspace}
warnOnImplicitThis: true
12 changes: 12 additions & 0 deletions actions/ql/examples/snippets/uses_pinned_sha.ql
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @name Uses step with pinned SHA
* @description Finds 'uses' steps where the version is a pinned SHA.
* @id actions/examples/uses-pinned-sha
* @tags example
*/

import actions

from UsesStep uses
where uses.getVersion().regexpMatch("^[A-Fa-f0-9]{40}$")
select uses, "This 'uses' step has a pinned SHA version."
6 changes: 6 additions & 0 deletions actions/ql/lib/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 0.4.26

### Major Analysis Improvements

* The query `actions/code-injection/medium` has been updated to include results which were incorrectly excluded while filtering out results that are reported by `actions/code-injection/critical`.

## 0.4.25

No user-facing changes.
Expand Down
5 changes: 5 additions & 0 deletions actions/ql/lib/change-notes/released/0.4.26.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## 0.4.26

### Major Analysis Improvements

* The query `actions/code-injection/medium` has been updated to include results which were incorrectly excluded while filtering out results that are reported by `actions/code-injection/critical`.
2 changes: 1 addition & 1 deletion actions/ql/lib/codeql-pack.release.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.4.25
lastReleaseVersion: 0.4.26
42 changes: 36 additions & 6 deletions actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qll
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,7 @@ class CodeInjectionSink extends DataFlow::Node {
Event getRelevantCriticalEventForSink(DataFlow::Node sink) {
inPrivilegedContext(sink.asExpr(), result) and
not exists(ControlCheck check | check.protects(sink.asExpr(), result, "code-injection")) and
// exclude cases where the sink is a JS script and the expression uses toJson
not exists(UsesStep script |
script.getCallee() = "actions/github-script" and
script.getArgumentExpr("script") = sink.asExpr() and
exists(getAToJsonReferenceExpression(sink.asExpr().(Expression).getExpression(), _))
)
not isGithubScriptUsingToJson(sink.asExpr())
}

/**
Expand Down Expand Up @@ -91,3 +86,38 @@ private module CodeInjectionConfig implements DataFlow::ConfigSig {

/** Tracks flow of unsafe user input that is used to construct and evaluate a code script. */
module CodeInjectionFlow = TaintTracking::Global<CodeInjectionConfig>;

/**
* Holds if there is a code injection flow from `source` to `sink` with
* critical severity, linked by `event`.
*/
predicate criticalSeverityCodeInjection(
CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink, Event event
) {
CodeInjectionFlow::flowPath(source, sink) and
event = getRelevantCriticalEventForSink(sink.getNode()) and
source.getNode().(RemoteFlowSource).getEventName() = event.getName()
}

/**
* Holds if there is a code injection flow from `source` to `sink` with medium severity.
*/
predicate mediumSeverityCodeInjection(
CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink
) {
CodeInjectionFlow::flowPath(source, sink) and
not criticalSeverityCodeInjection(source, sink, _) and
not isGithubScriptUsingToJson(sink.getNode().asExpr())
}

/**
* Holds if `expr` is the `script` input to `actions/github-script` and it uses
* `toJson`.
*/
predicate isGithubScriptUsingToJson(Expression expr) {
exists(UsesStep script |
script.getCallee() = "actions/github-script" and
script.getArgumentExpr("script") = expr and
exists(getAToJsonReferenceExpression(expr.getExpression(), _))
)
}
2 changes: 1 addition & 1 deletion actions/ql/lib/qlpack.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: codeql/actions-all
version: 0.4.25
version: 0.4.26
library: true
warnOnImplicitThis: true
dependencies:
Expand Down
4 changes: 4 additions & 0 deletions actions/ql/src/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.6.18

No user-facing changes.

## 0.6.17

No user-facing changes.
Expand Down
5 changes: 1 addition & 4 deletions actions/ql/src/Security/CWE-094/CodeInjectionCritical.ql
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@ import CodeInjectionFlow::PathGraph
import codeql.actions.security.ControlChecks

from CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink, Event event
where
CodeInjectionFlow::flowPath(source, sink) and
event = getRelevantCriticalEventForSink(sink.getNode()) and
source.getNode().(RemoteFlowSource).getEventName() = event.getName()
where criticalSeverityCodeInjection(source, sink, event)
select sink.getNode(), source, sink,
"Potential code injection in $@, which may be controlled by an external user ($@).", sink,
sink.getNode().asExpr().(Expression).getRawExpression(), event, event.getName()
10 changes: 1 addition & 9 deletions actions/ql/src/Security/CWE-094/CodeInjectionMedium.ql
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,7 @@ import codeql.actions.security.CodeInjectionQuery
import CodeInjectionFlow::PathGraph

from CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink
where
CodeInjectionFlow::flowPath(source, sink) and
inNonPrivilegedContext(sink.getNode().asExpr()) and
// exclude cases where the sink is a JS script and the expression uses toJson
not exists(UsesStep script |
script.getCallee() = "actions/github-script" and
script.getArgumentExpr("script") = sink.getNode().asExpr() and
exists(getAToJsonReferenceExpression(sink.getNode().asExpr().(Expression).getExpression(), _))
)
where mediumSeverityCodeInjection(source, sink)
select sink.getNode(), source, sink,
"Potential code injection in $@, which may be controlled by an external user.", sink,
sink.getNode().asExpr().(Expression).getRawExpression()
2 changes: 2 additions & 0 deletions actions/ql/src/Security/CWE-275/MissingActionsPermissions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

If a GitHub Actions job or workflow has no explicit permissions set, then the repository permissions are used. Repositories created under organizations inherit the organization permissions. The organizations or repositories created before February 2023 have the default permissions set to read-write. Often these permissions do not adhere to the principle of least privilege and can be reduced to read-only, leaving the `write` permission only to a specific types as `issues: write` or `pull-requests: write`.

Note that this query cannot check whether the organization or repository token settings are set to read-only. However, even if they are, it is recommended to define explicit permissions (`contents: read` and `packages: read` are equivalent to the read-only default) so that (a) the actual needs of the workflow are documented, and (b) the permissions will remain restricted if the default is subsequently changed, or the workflow is copied to a different repository or organization.

## Recommendation

Add the `permissions` key to the job or the root of workflow (in this case it is applied to all jobs in the workflow that do not have their own `permissions` key) and assign the least privileges required to complete the task.
Expand Down
3 changes: 3 additions & 0 deletions actions/ql/src/change-notes/released/0.6.18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 0.6.18

No user-facing changes.
2 changes: 1 addition & 1 deletion actions/ql/src/codeql-pack.release.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.6.17
lastReleaseVersion: 0.6.18
2 changes: 1 addition & 1 deletion actions/ql/src/qlpack.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: codeql/actions-queries
version: 0.6.17
version: 0.6.18
library: false
warnOnImplicitThis: true
groups: [actions, queries]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
on:
push:
workflow_dispatch:

jobs:
echo-chamber:
runs-on: ubuntu-latest
steps:
- run: echo '${{ github.event.commits[11].message }}'
- run: echo '${{ github.event.commits[11].author.email }}'
- run: echo '${{ github.event.commits[11].author.name }}'
- run: echo '${{ github.event.head_commit.message }}'
- run: echo '${{ github.event.head_commit.author.email }}'
- run: echo '${{ github.event.head_commit.author.name }}'
- run: echo '${{ github.event.head_commit.committer.email }}'
- run: echo '${{ github.event.head_commit.committer.name }}'
- run: echo '${{ github.event.commits[11].committer.email }}'
- run: echo '${{ github.event.commits[11].committer.name }}'
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,16 @@ nodes
| .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | semmle.label | github.event.head_commit.committer.name |
| .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | semmle.label | github.event.commits[11].committer.email |
| .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | semmle.label | github.event.commits[11].committer.name |
| .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | semmle.label | github.event.commits[11].message |
| .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | semmle.label | github.event.commits[11].author.email |
| .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | semmle.label | github.event.commits[11].author.name |
| .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | semmle.label | github.event.head_commit.message |
| .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | semmle.label | github.event.head_commit.author.email |
| .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | semmle.label | github.event.head_commit.author.name |
| .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | semmle.label | github.event.head_commit.committer.email |
| .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | semmle.label | github.event.head_commit.committer.name |
| .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | semmle.label | github.event.commits[11].committer.email |
| .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | semmle.label | github.event.commits[11].committer.name |
| .github/workflows/reusable-workflow-1.yml:6:7:6:11 | input taint | semmle.label | input taint |
| .github/workflows/reusable-workflow-1.yml:36:21:36:39 | inputs.taint | semmle.label | inputs.taint |
| .github/workflows/reusable-workflow-1.yml:44:19:44:56 | github.event.pull_request.title | semmle.label | github.event.pull_request.title |
Expand Down
Loading
Loading