Compare commits

..

5654 Commits

Author SHA1 Message Date
Philip Ginsbach
9a11e29c01 set compileForOverlayEval true for java 2025-04-22 19:22:47 +01:00
Philip Ginsbach
b6ac00f642 synchronise files 2025-04-22 19:22:46 +01:00
Philip Ginsbach
2a187e5922 add overlay[caller] annotations 2025-04-22 19:22:45 +01:00
Philip Ginsbach
bebe3f4fe5 annotate qll files via python script 2025-04-22 19:22:44 +01:00
Jeroen Ketema
0bcee84117 C++: Minor textual fixes 2025-04-17 12:33:27 +02:00
idrissrio
15fe2fbba6 C++: update stats file 2025-04-16 20:45:33 +02:00
idrissrio
36a425715c C++: add upgrade and downgrade scripts 2025-04-16 17:07:25 +02:00
idrissrio
d8afd2a786 C++: add change note for designator-based initializations 2025-04-16 16:23:32 +02:00
idrissrio
49183bb82a C++: add predicate to distinguish between array/field designators 2025-04-16 16:19:26 +02:00
Ian Lynagh
e05c030bb7 Merge pull request #19317 from github/post-release-prep/codeql-cli-2.21.1
Post-release preparation for codeql-cli-2.21.1
2025-04-16 14:45:49 +01:00
Ian Lynagh
bdd3207752 Merge branch 'main' into post-release-prep/codeql-cli-2.21.1 2025-04-16 11:54:23 +01:00
Idriss Riouak
67bfe108c2 Merge pull request #19298 from github/idrissrio/vla
C++: add `isVla` predicated to `ArrayType`
2025-04-16 11:25:31 +02:00
Michael Nebel
29be2171af Merge pull request #19309 from michaelnebel/csharp/fix-comments
C#: Adjust comments and remove compilation warnings.
2025-04-16 09:26:09 +02:00
Aditya Sharad
c4e8b1a79e Merge pull request #19307 from adityasharad/actions/public-preview-cleanup
Actions: Remove preview notice, minor help and metadata fixes
2025-04-16 05:40:20 +05:30
Aditya Sharad
4952768569 Actions: Fix change note newline 2025-04-15 10:21:54 -07:00
github-actions[bot]
d78736b1bf Post-release preparation for codeql-cli-2.21.1 2025-04-15 16:33:15 +00:00
Ian Lynagh
2409bcc0d6 Merge pull request #19301 from github/release-prep/2.21.1
Release preparation for version 2.21.1
2025-04-15 16:52:54 +01:00
Ian Lynagh
8ee353c12c Merge pull request #19312 from igfoo/igfoo/fix-typo-unmasked-secret-exposure
actions: Fix spelling error in UnmaskedSecretExposure.md
2025-04-15 15:41:07 +01:00
Paolo Tranquilli
ff8cd98527 Merge pull request #19233 from github/redsun82/cargo-upgrade
Rust: upgrade rust-analyzer to `0.0.273`
2025-04-15 16:30:12 +02:00
Ian Lynagh
b75e0ed02e actions: Fix spelling error in UnmaskedSecretExposure.md
Corrects "know" to "known" in the description of the UnmaskedSecretExposure document.
2025-04-15 14:25:39 +01:00
Paolo Tranquilli
3d3de78076 Merge pull request #19299 from github/redsun82/swift-6-extraction
Swift: extract still unextracted entities from the 6.0.2 upgrade
2025-04-15 14:08:38 +02:00
idrissrio
202040fad4 C++: update stats file 2025-04-15 13:36:24 +02:00
Michael Nebel
9170993cf0 C#: Adjust comments and remove compilation warnings. 2025-04-15 12:46:31 +02:00
idrissrio
ae07272c44 C++: add upgrade and downgrade scripts 2025-04-15 11:09:31 +02:00
idrissrio
15ba9e0c66 C++: add change note for VLAs 2025-04-15 11:06:19 +02:00
idrissrio
033bade0ab C++: add isVLA() to ArrayType to identify variable-length arrays 2025-04-15 11:03:26 +02:00
Tamás Vajk
de9c1fbc9c Merge pull request #19251 from tamasvajk/fix/macos15
C#: Fix autobuild on macos without mono
2025-04-15 10:07:26 +02:00
Arthur Baars
1c79c5e9ab Merge pull request #19292 from github/aibaars/rust-shadow-prelude
Rust: allow shadowing of prelude items
2025-04-15 09:54:31 +02:00
Paolo Tranquilli
eda1bc9f6b Merge pull request #19282 from github/redsun82/rust-codeowners
Rust: add to `CODEOWNERS`
2025-04-15 08:58:27 +02:00
Aditya Sharad
f9103f8ddc Actions: Add change note for missing severity 2025-04-14 14:48:43 -07:00
Aditya Sharad
6eb060f16a Actions: Add security-severity to excessive secrets exposure query
Same value as missing actions permissions,
both providing warnings to follow the
principle of least privilege within a
workflow.
2025-04-14 14:41:08 -07:00
Aditya Sharad
93fbb9fe61 Actions: Update description of missing permissions query 2025-04-14 14:39:31 -07:00
Aditya Sharad
eeb938a76d Docs: Minor fixes for Actions query help 2025-04-14 13:25:54 -07:00
Aditya Sharad
32f191cd9d Docs: Remove public preview notice for Actions support
Ready for GA.
2025-04-14 13:21:59 -07:00
Paolo Tranquilli
2dd3dea33a Merge branch 'main' into redsun82/cargo-upgrade 2025-04-14 16:35:57 +02:00
Paolo Tranquilli
6176202d50 Merge pull request #19291 from github/redsun82/rust-pick-edition
Rust: pick correct edition for the files
2025-04-14 16:26:00 +02:00
Paolo Tranquilli
c9cff09f5d Merge branch 'main' into redsun82/rust-pick-edition 2025-04-14 15:19:33 +02:00
Tamas Vajk
a70536f002 Improve code quality 2025-04-14 14:54:56 +02:00
Paolo Tranquilli
1c11c5562a Swift: add change note 2025-04-14 14:50:46 +02:00
Tamas Vajk
91daca1a6b Improve code quality based on PR review 2025-04-14 13:51:30 +02:00
Michael Nebel
53c4b29b50 Merge pull request #19289 from michaelnebel/csharp/improveautobuilder
C#: Improve auto-builder to better detect SDK references.
2025-04-14 12:43:23 +02:00
Paolo Tranquilli
c245459e97 Merge pull request #19293 from github/redsun82/rust-fix-member-aggregation
Rust: fix workspace member aggregation when absolute path is a glob pattern
2025-04-14 12:08:43 +02:00
github-actions[bot]
b961c5961d Release preparation for version 2.21.1 2025-04-14 09:53:06 +00:00
Geoffrey White
884c4a6e7b Merge pull request #19171 from geoffw0/badalloc
Rust: Query for uncontrolled allocation size
2025-04-14 10:10:53 +01:00
Paolo Tranquilli
1316e08365 Swift: add upgrade/downgrade scripts 2025-04-14 11:06:47 +02:00
Geoffrey White
c821f27309 Merge branch 'main' into badalloc 2025-04-14 09:36:59 +01:00
Paolo Tranquilli
fa6deaf87a Swift: extract UnreachableExpr 2025-04-14 10:35:24 +02:00
Paolo Tranquilli
9473543933 Swift: extract ActorIsolationErasureExpr 2025-04-14 10:35:24 +02:00
Paolo Tranquilli
ad0f9f1e73 Swift: mark ErrorUnionType as type-check only 2025-04-14 10:35:23 +02:00
Paolo Tranquilli
b575c89463 Swift: add CurrentContextIsolationTree to control flow 2025-04-14 10:35:23 +02:00
Paolo Tranquilli
712142cde9 Swift: extract CurrentContextIsolationExpr 2025-04-14 10:35:22 +02:00
Paolo Tranquilli
42ec6b018d Swift: add ExtractFunctionIsolationTree to control flow 2025-04-14 10:35:22 +02:00
Paolo Tranquilli
2910cb68ce Swift: extract ExtracFunctionIsolationExpr 2025-04-14 10:35:21 +02:00
Napalys Klicius
86313715a4 Merge pull request #19184 from Napalys/js/request_handlers
JS: Support for `Request` and `NextRequest`
2025-04-14 08:07:24 +02:00
yoff
85527101bd Merge pull request #19205 from yoff/ruby/refine-uninitialised-local
ruby: refine `rb/uninitialized-local-variable`
2025-04-11 23:08:01 +02:00
yoff
7517272d34 ruby: remove repetitive change note 2025-04-11 23:01:15 +02:00
yoff
b988be8ff6 ruby: improve help file
This has improved autofixes
I hope it also helps humans
2025-04-11 21:29:01 +02:00
yoff
85e27cae60 Merge branch 'main' into ruby/refine-uninitialised-local 2025-04-11 18:09:59 +02:00
Paolo Tranquilli
9dd1062a9c Rust: remove fixed inconsistency 2025-04-11 17:25:56 +02:00
Aditya Sharad
2dc88d87ae Merge pull request #19278 from adityasharad/actions/integration-test-filters
Actions: Fix handling of paths-ignore in autobuild scripts, add integration tests for configured path filters
2025-04-11 20:53:33 +05:30
Paolo Tranquilli
c844db09d2 Merge branch 'redsun82/rust-pick-edition' into redsun82/cargo-upgrade 2025-04-11 17:03:29 +02:00
Paolo Tranquilli
63e5f5a555 Rust: parametrize some integration tests on three editions 2025-04-11 16:50:23 +02:00
Paolo Tranquilli
868680f078 Merge branch 'redsun82/rust-fix-member-aggregation' into redsun82/rust-pick-edition 2025-04-11 16:46:16 +02:00
Paolo Tranquilli
60aa3a8d9d Rust: fix workspace member aggregation when absolute path is a glob pattern
We were interpreting the absolute path of a workspace as a glob pattern,
which doesn't work if the path has some special characters (e.g. `[` or
`]`).
2025-04-11 16:41:51 +02:00
yoff
eb0f8e9572 ruby: add rb/uninitialized-local-variable to quality suite 2025-04-11 16:27:21 +02:00
Mathias Vorreiter Pedersen
11aef7019e Merge pull request #19273 from MathiasVP/prepare-shared-mad-generation-for-cpp
Shared: Prepare model generation for C++ adoption
2025-04-11 07:22:56 -07:00
yoff
6a76a40cf4 ruby: adjust change notes 2025-04-11 16:18:03 +02:00
Arthur Baars
b27ae98b54 Rust: normalize paths in the rustup folder 2025-04-11 15:46:57 +02:00
Arthur Baars
662e963a7b Rust: allow shadowing of prelude items 2025-04-11 15:46:55 +02:00
Paolo Tranquilli
dbbd80f4dc Rust: pick correct edition for the files
Previously we would unconditionally set the edition to the latest stable
according to rust-analyzer (2021 at the moment). Now we ask
rust-analyzer itself to pick the correct edition for the file.
2025-04-11 15:36:45 +02:00
yoff
2477233508 ruby: only report on method calls
Interviewing a Ruby developer, I learned that
dealing with nil is common practice.
So alerts are mostly useful, if we can point to a place where this has gone wrong.
2025-04-11 15:01:57 +02:00
Tamas Vajk
51388f2401 Do not try running mono when it's not available on the runner 2025-04-11 14:58:08 +02:00
Mathias Vorreiter Pedersen
877118fb3b Merge pull request #19274 from MathiasVP/prepare-cpp-for-mad-generation
C++: Prepare for model generation adoption
2025-04-11 05:11:36 -07:00
Michael Nebel
f349048e42 C#: Add change note. 2025-04-11 13:53:54 +02:00
Michael Nebel
31143b405e C#: Improve auto builder logic to detect Sdk reference. 2025-04-11 13:53:52 +02:00
Mathias Vorreiter Pedersen
deef95d384 Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll
Co-authored-by: Taus <tausbn@github.com>
2025-04-11 12:43:59 +01:00
Mathias Vorreiter Pedersen
bfc494c0e1 Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll
Co-authored-by: Taus <tausbn@github.com>
2025-04-11 12:43:51 +01:00
yoff
b641d5f177 ruby: fix FP 2025-04-11 13:22:42 +02:00
yoff
6e2cfab7b2 ruby: add test for for
found during triage
2025-04-11 12:46:25 +02:00
Michael Nebel
a5aef8c6f9 C#: Add some more DotNet autobuilder unit tests. 2025-04-11 12:03:06 +02:00
Paolo Tranquilli
4ae49cfe35 Merge pull request #19281 from github/redsun82/rust-setup
Rust: refine `ql/test/setup.sh`
2025-04-11 11:55:12 +02:00
Owen Mansel-Chan
472bfa2668 Merge pull request #19115 from owen-mc/java/port/java/string-replace-all-with-non-regex
Java: Add new quality query to detect `String#replaceAll` with non-regex first argument
2025-04-11 10:31:38 +01:00
Napalys Klicius
3d7c0201d9 Merge pull request #19231 from Napalys/js/typed_array
JS: Taint propagation from low-level `ArrayBuffer` to `Strings`
2025-04-11 11:29:01 +02:00
Napalys
11abbf8c4a Now nextUrl is of type parameter and loosen the restriction for NextAppRouteHandler 2025-04-11 11:19:12 +02:00
Napalys Klicius
92e4f112c0 Update javascript/ql/lib/semmle/javascript/frameworks/Next.qll
Co-authored-by: Asger F <asgerf@github.com>
2025-04-11 11:08:40 +02:00
Napalys Klicius
d0dcf897cb Update javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll
Co-authored-by: Asger F <asgerf@github.com>
2025-04-11 11:04:08 +02:00
yoff
4167e96058 ruby: more complete impleemntation of isInBooleanContext
Co-authored-by: Tom Hvitved <hvitved@github.com>
2025-04-11 11:00:22 +02:00
yoff
f675a143d6 ruby: remove redundant cases
The CFG handles the negation
2025-04-11 10:48:41 +02:00
Napalys Klicius
d17d29a387 Merge pull request #19218 from Napalys/js/upgrade_websocket
JS: Refactor `WebSocket` to use `API` graphs
2025-04-11 10:05:54 +02:00
Napalys
e3f1720f9c RenamedDecodeLike to Decode and updated propagatesFlow 2025-04-11 10:04:09 +02:00
Arthur Baars
85940484ab Update rust/ql/test/setup.sh 2025-04-11 09:57:50 +02:00
Napalys
2c4b3527b4 Added change note 2025-04-11 09:42:12 +02:00
Napalys
678eccb417 Added searchParams.get as potential source for SSRF 2025-04-11 09:42:07 +02:00
Napalys
8674b61e5a Added SSRF test case with searchParams for NextRequest 2025-04-11 09:26:16 +02:00
Paolo Tranquilli
db1203acb3 Rust: reinstate adding rust-src for test toolchains 2025-04-11 08:57:14 +02:00
Napalys
6e09a65da0 Added support for NextRequest middleware SSRF. 2025-04-11 08:43:36 +02:00
Napalys
734ad2d767 Removed legacy Consistency check as it is redundant now with inline test expectations. 2025-04-11 08:43:08 +02:00
Napalys
208487f236 Added middleware test 2025-04-11 08:39:47 +02:00
Paolo Tranquilli
547833afb5 Rust: add to CODEOWNERS 2025-04-11 08:32:33 +02:00
Paolo Tranquilli
becea89a47 Rust: refine ql/test/setup.sh 2025-04-11 08:26:48 +02:00
Tamas Vajk
159d31d494 Reenable problematic test 2025-04-11 08:24:08 +02:00
yoff
8555e8c8c8 ruby: add change notes 2025-04-11 03:07:19 +02:00
yoff
53c88da91b ruby: refine query for uninitialised local variables
- there are places where uninitialised reads are intentional
- there are also some places where they are impossible
2025-04-11 03:07:19 +02:00
yoff
1ca25b2ccb ruby: add test of rb/uninitialized-local-variable 2025-04-11 03:00:05 +02:00
Aditya Sharad
283503b06d Actions: Fix handling of paths-ignore in autobuild scripts
Always concatenate the default filters with the user-provided filters.
This ensures that when `paths-ignore` is provided,
we begin with the default path inclusions,
not all YAML files.
This makes the `paths-ignore-only` integration test variant
under `filters` pass.

The handling of `paths` is unchanged:
if provided, this overrides the default filters.
2025-04-10 11:18:45 -07:00
Aditya Sharad
30ce0c5cbf Actions: Add integration tests for configured path filters
Use the common structure from the existing test
for default filters.

Check both query output finding workflows and actions,
and source archive output showing all extracted YAML files.

The test for only `paths-ignore` fails in this commit,
demonstrating a bug: we start with all YAML files
rather than starting with the default includes.

The tests for `paths` reflect current behaviour
which is consistent with other languages:
`paths` overrides the default inclusions,
and only files under `paths` are included.

This may not be the best user experience for Actions,
since we want to scan all workflow and action files
even in the presence of `paths`, but that is not
currently addressed.
2025-04-10 11:17:51 -07:00
Tom Hvitved
7ed8a85e08 Merge pull request #19246 from hvitved/rust/cache-tweaks 2025-04-10 19:02:25 +02:00
Felicity Chapman
c2baf9a052 Merge pull request #19270 from github/felicitymay-patch-1
CodeQL docs: Fix ordering in side navigation bar for Query help
2025-04-10 15:10:14 +01:00
Owen Mansel-Chan
4f5bdbb517 Add new query to java-code-quality.qls.expected 2025-04-10 14:37:11 +01:00
Mathias Vorreiter Pedersen
3bb249f580 C++: Ensure we always have 'Position's even if there are no calls in the DB. 2025-04-10 14:28:40 +01:00
Mathias Vorreiter Pedersen
b678112f4d C++: Add a few predicates to 'ReturnKind'. 2025-04-10 14:28:38 +01:00
Mathias Vorreiter Pedersen
960e9900af C++: Move the 'getArgumentIndex' into the abstract 'Position' class. It is implemented in all subclasses anyway. 2025-04-10 14:28:36 +01:00
Mathias Vorreiter Pedersen
94e08e318d C++: Expose a few predicates from 'ExternalFlow'. 2025-04-10 14:18:47 +01:00
Napalys Klicius
43bf0beae9 Merge pull request #19263 from Napalys/js/make-dir-lib
JS: Add support for `make-dir` package
2025-04-10 15:09:43 +02:00
Napalys
86b64afa13 Added NextResponse to the ResponseCall class it models similar near idential behaviour. 2025-04-10 15:06:44 +02:00
Mathias Vorreiter Pedersen
ea3bb8cf0c Shared: Provide a hook to MaD generation to modify the 'ReturnValue' string. 2025-04-10 14:02:31 +01:00
Mathias Vorreiter Pedersen
6c348b5855 Rust: Fixup MaD input. 2025-04-10 14:01:20 +01:00
Mathias Vorreiter Pedersen
b6c658767e Java: Fixup MaD input. 2025-04-10 14:01:11 +01:00
Mathias Vorreiter Pedersen
04bf908a4b C#: Fixup MaD input. 2025-04-10 14:01:00 +01:00
Mathias Vorreiter Pedersen
c484945f39 Shared: Move 'getEnclosingCallable' and 'getAsExprEnclosingCallable' out of the class signature. 2025-04-10 14:00:11 +01:00
Mathias Vorreiter Pedersen
732fcbf1c9 Shared: Move 'asParameter' out of the class signature. 2025-04-10 13:58:59 +01:00
Napalys
8acb0243ad Added test cases for NextResponse and Response 2025-04-10 14:57:40 +02:00
Mathias Vorreiter Pedersen
a1dc87496a Shared: Replace a 'count' with a 'strictcount' to prevent a CP when testing on C++. 2025-04-10 13:56:38 +01:00
Napalys
63a3953b0c Enhance Next.js API endpoint handling for compatibility with both Pages and App Router structures. 2025-04-10 14:48:17 +02:00
Napalys
81cba7fa2f Added test cases with missing alerts for Request and NextRequest. 2025-04-10 14:43:48 +02:00
Asger F
eac14b9837 Merge pull request #19200 from asgerf/js/web-response
JS: Add sinks for calls to 'new Response()'
2025-04-10 14:41:32 +02:00
Napalys
171a84609e Applied copilot suggestion. 2025-04-10 14:13:48 +02:00
Felicity Chapman
78a26cfdb2 Update index.rst 2025-04-10 13:09:51 +01:00
Joe Farebrother
7f7fca9e27 Merge pull request #19165 from joefarebrother/python-qual-loop-var-capture
Python: Modernize the Loop Variable Capture query
2025-04-10 13:07:05 +01:00
Owen Mansel-Chan
acfcc6d490 Sort ids in java-code-quality.qls 2025-04-10 12:35:42 +01:00
Owen Mansel-Chan
576f4cf19f Update tags 2025-04-10 12:21:09 +01:00
Owen Mansel-Chan
ad89e7980e Tweak documentation 2025-04-10 12:21:08 +01:00
Owen Mansel-Chan
3ea5cc1b66 Add query to code-quality query suite 2025-04-10 12:21:06 +01:00
Owen Mansel-Chan
e1c5517de7 Keep COMPLIANT and NON_COMPLIANT comments in test 2025-04-10 12:21:05 +01:00
Owen Mansel-Chan
04ec1d7830 Update test expectations 2025-04-10 12:21:03 +01:00
Owen Mansel-Chan
626a7d5007 Fix punctuation 2025-04-10 12:21:02 +01:00
Owen Mansel-Chan
c4e56b1ec8 Add quality and cwe tag to query
CWE-1176: Inefficient CPU Computation
2025-04-10 12:21:00 +01:00
Owen Mansel-Chan
042fe07494 Adjust alert message 2025-04-10 11:47:19 +01:00
Owen Mansel-Chan
fea3d10b97 Update qhelp 2025-04-10 11:47:18 +01:00
Owen Mansel-Chan
441c79ebdf Use existing class StringReplaceAllCall 2025-04-10 11:47:17 +01:00
Owen Mansel-Chan
b5b252b10f Convert test to inline expectations 2025-04-10 11:47:15 +01:00
Owen Mansel-Chan
ff2947a0e5 Adjust query name 2025-04-10 11:47:14 +01:00
Owen Mansel-Chan
041adcd63a Java: Add initial version of string replaceAll with no regex query 2025-04-10 11:46:59 +01:00
Asger F
d2a4f1e17a Merge pull request #19267 from asgerf/js/json-array-trailing-comma
JS: Tolerate trailing commas in JSON arrays
2025-04-10 12:38:16 +02:00
Joe Farebrother
6802037c89 Update qhelp formatting 2025-04-10 09:52:18 +01:00
Joe Farebrother
00999baf9a Apply docs review suggestion - Reword query description.
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-04-10 09:06:01 +01:00
Asger F
3da1f261f7 JS: Change note 2025-04-10 07:21:48 +02:00
Asger F
cfa1a9b603 JS: Update extractor version string 2025-04-10 07:20:53 +02:00
Asger F
1434f7acd2 JS: Tolerate trailing comma in JSON array
Previously we'd fail to extract some tsconfig.json files because of this.
2025-04-10 07:20:51 +02:00
Asger F
800dd168c2 JS: Add failing TRAP test for trailing comma 2025-04-10 07:20:49 +02:00
Aditya Sharad
bd3342af8a Actions: Update integration test for default filters
Create a common file structure to be shared among multiple tests
for path filters, and rename accordingly.
Update test expectations with additional files.
Use pytest markers to indicate the expected outputs.

Add source archive checking in addition to checking query output.
This allows us to test which YAML files were extracted
separately from whether they are semantically meaningful
to the Actions analysis.
2025-04-09 20:59:42 -07:00
Tom Hvitved
0e31bf1e7b Merge pull request #19265 from hvitved/rust/crate-graph-self-crate-ref 2025-04-09 22:54:53 +02:00
Tom Hvitved
a6b20d7731 Merge pull request #19259 from hvitved/ruby/fix-bad-join
Ruby: Fix bad join in `DeadStoreOfLocal.ql`
2025-04-09 19:03:33 +02:00
Tom Hvitved
1ba06ab3bf Merge pull request #19216 from hvitved/rust/path-resolution-path-attr
Rust: Handle path attributes in path resolution
2025-04-09 18:57:56 +02:00
Aditya Sharad
ef0065546a Merge pull request #19264 from github/coadaflorin-actions-docs-patch
Update codeql-library-for-actions.rst
2025-04-09 21:46:28 +05:30
Aditya Sharad
29af6f7f0d Merge pull request #19257 from adityasharad/actions/fix/autobuild-powershell-spaces
Actions: Fix invocation of autobuild PowerShell script
2025-04-09 21:26:32 +05:30
Tom Hvitved
52401aaa73 Address review comments 2025-04-09 17:19:25 +02:00
Chris Smowton
cc379b543c Merge pull request #19260 from smowton/smowton/feature/sanitize-enum-types
Java: Add EnumType to SimpleTypeSanitizer
2025-04-09 16:05:13 +01:00
Chris Smowton
7a8dfdb971 Grammar 2025-04-09 15:52:48 +01:00
Chris Smowton
f31b49b022 Change note 2025-04-09 15:41:48 +01:00
Tom Hvitved
fbab715cb6 Rust: Allow for crate self-references in crate graph paths 2025-04-09 15:21:34 +02:00
Joe Farebrother
84aa2e8627 Apply review suggestion - Tweak wording of example comment
Co-authored-by: Taus <tausbn@github.com>
2025-04-09 14:07:38 +01:00
Chris Smowton
949812243b Merge pull request #19261 from smowton/smowton/admin/improve-gradle-wrapper-message
Java: Update test expectation
2025-04-09 14:03:52 +01:00
Napalys
5243f90c90 Brought back old methods and marked them as deprecated 2025-04-09 14:56:24 +02:00
Florin Coada
0acccf240a Update codeql-library-for-actions.rst 2025-04-09 13:45:21 +01:00
Napalys
5ec71ab9af Added change note 2025-04-09 14:42:34 +02:00
Napalys
ce2fc25cdb Added make-dir model as data 2025-04-09 14:42:29 +02:00
Napalys
674f40b35f Added test cases for make-dir package. 2025-04-09 14:41:12 +02:00
Napalys Klicius
2dca95af92 Update javascript/ql/lib/change-notes/2025-04-07-websocket.md
Co-authored-by: Asger F <asgerf@github.com>
2025-04-09 14:26:00 +02:00
Napalys
0c52b5ad95 Added summary flow for StringFromCharCode 2025-04-09 14:24:43 +02:00
Chris Smowton
5c7a4eb511 Reorder test expectations 2025-04-09 12:51:18 +01:00
Napalys Klicius
f02783a9c6 Merge pull request #19210 from Napalys/js/mkdirp
JS: Modeling of `mkdirp` functions
2025-04-09 13:43:37 +02:00
Tom Hvitved
9323f1aaf0 Merge pull request #19250 from hvitved/rust/fix-bad-joins
Rust: Fix bad joins
2025-04-09 13:36:01 +02:00
Chris Smowton
3373c2457c Update test expectation 2025-04-09 12:27:48 +01:00
Napalys
a3e4e62eac Removed taint from ArrayBuffer constructor as it accepts length 2025-04-09 13:27:13 +02:00
Chris Smowton
0a293cf357 Add EnumType to SimpleTypeSanitizer 2025-04-09 12:12:35 +01:00
Owen Mansel-Chan
b6053e3f91 Merge pull request #19076 from owen-mc/go/update-depstubber-files
Go: update files generated by depstubber
2025-04-09 11:44:20 +01:00
Napalys
4bc3e9e736 Addressed comments
Co-authored-by: Asgerf <asgerf@github.com>
2025-04-09 12:31:45 +02:00
Napalys Klicius
0751d73eab Merge pull request #19256 from Napalys/js/open_package
JS: Model as Data `open` package
2025-04-09 11:54:44 +02:00
Asger F
da7d6d3346 JS: Change note 2025-04-09 11:28:21 +02:00
Tom Hvitved
35f9157e42 Ruby: Fix bad join in DeadStoreOfLocal.ql 2025-04-09 09:28:55 +02:00
Paolo Tranquilli
8d467c7d02 Merge pull request #19255 from github/redsun82/rust-setup
Rust: add test setup script
2025-04-09 08:51:58 +02:00
Aditya Sharad
2e75dbd519 Actions: Fix invocation of autobuild PowerShell script
Pass the quoted script path to PowerShell using `-File`.
This ensures the path is treated as a string rather
than a command, and correctly handles file paths
that contain spaces, unblocking integration tests.

Add logging to autobuild.cmd for easier debugging.
2025-04-08 20:00:25 -07:00
Aditya Sharad
c4c351c9dd Merge pull request #19239 from adityasharad/actions/integration-test-default-filters
Actions: Create initial integration test for default filters
2025-04-08 23:07:58 +05:30
Aditya Sharad
21af1c6113 Merge pull request #19241 from adityasharad/actions/fix/docs-table-block-formatting
Docs: Fix formatting of GitHub Actions content
2025-04-08 22:07:30 +05:30
Tamás Vajk
c0f2ce77d4 Merge pull request #19254 from tamasvajk/tamasvajk/test-queries-not-in-qls
Java: Add test to check queries not included in well-known query suites
2025-04-08 18:20:19 +02:00
Óscar San José
6d95950081 Merge pull request #19252 from github/oscarsj/nice-servers-for-java-tests
Run test servers with `sudo` when running on `macos-15`
2025-04-08 18:04:25 +02:00
Paolo Tranquilli
25bd0c3b21 Rust: add test setup script 2025-04-08 17:28:57 +02:00
Tamás Vajk
d39045e3e1 Merge pull request #19245 from tamasvajk/tamasvajk/improvement-security-and-quality-suite-selector
Java: Add explicit filtering for quality queries that should be included in security-and-quality
2025-04-08 17:08:28 +02:00
Tamas Vajk
e163344907 Java: Add test to check queries not included in well-known query suites 2025-04-08 17:06:46 +02:00
Tamas Vajk
6abff483da Java: Add explicit filtering for quality queries that should be included in security-and-quality 2025-04-08 16:47:41 +02:00
Tamas Vajk
259a09386e Move query suite selector logic to security-and-quality-suite 2025-04-08 16:47:41 +02:00
Tamás Vajk
f325f53273 Merge pull request #19229 from tamasvajk/test/java-query-suite
Java: add integration test for query suite contents
2025-04-08 16:47:07 +02:00
Óscar San José
afe3e5332f Update java/ql/integration-tests/java/buildless-inherit-trust-store/test.py
Co-authored-by: Paolo Tranquilli <redsun82@github.com>
2025-04-08 16:29:23 +02:00
Óscar San José
1eb4a1aa81 Update java/ql/integration-tests/java/buildless-snapshot-repository/test.py
Co-authored-by: Paolo Tranquilli <redsun82@github.com>
2025-04-08 16:29:16 +02:00
Óscar San José
3b56f95480 use only sudo for running maven test server (remove nice) 2025-04-08 16:19:33 +02:00
Paolo Tranquilli
84c728f847 Merge pull request #19244 from github/redsun82/bazel-update
Bazel: update to 8.1.1
2025-04-08 15:58:29 +02:00
Óscar San José
e49fb839b8 Update java/ql/integration-tests/java/buildless-inherit-trust-store/test.py
Co-authored-by: Paolo Tranquilli <redsun82@github.com>
2025-04-08 15:28:18 +02:00
Michael B. Gale
87f2ccb5a2 Merge pull request #19249 from github/mbg/go/fix-getpkginfo-decerr
Go: Fix `err` instead of `decErr` in `GetPkgsInfo`
2025-04-08 14:21:14 +01:00
Óscar San José
b5e1b25553 use sudo nice for running maven test server 2025-04-08 13:51:09 +02:00
Simon Friis Vindum
9dc008b9f4 Merge pull request #19214 from paldepind/rust-ti-associated
Rust: Associated types
2025-04-08 13:46:36 +02:00
Tom Hvitved
95add2f60b Rust: Fix bad join in getAPrivateVisibleModule
Before
```
Pipeline standard for PathResolution::getAPrivateVisibleModule/1#3829a5ee@822d5hwq was evaluated in 24 iterations totaling 16ms (delta sizes total: 4843).
         105047   ~63652%    {2} r1 = SCAN `PathResolution::resolvePathPrivate/3#56db2cdf#reorder_1_2_0_3#prev_delta` OUTPUT In.0, In.0

             69       ~0%    {2} r2 = JOIN `#PathResolution::ItemNode.getImmediateParentModule/0#dispred#57c4c6d5Plus#bf#reorder_1_0#prev_delta` WITH `PathResolution::resolvePathPrivate/3#56db2cdf#reorder_1_2_0_3#prev` ON FIRST 1 OUTPUT Lhs.0, Lhs.1

        5766690  ~148309%    {2} r3 = JOIN `PathResolution::resolvePathPrivate/3#56db2cdf#reorder_1_2_0_3#prev_delta` WITH `#PathResolution::ItemNode.getImmediateParentModule/0#dispred#57c4c6d5Plus#bf#reorder_1_0#prev` ON FIRST 1 OUTPUT Lhs.0, Rhs.1

        5871806  ~143984%    {2} r4 = r1 UNION r2 UNION r3
           6859     ~148%    {2}    | AND NOT `PathResolution::getAPrivateVisibleModule/1#3829a5ee#prev`(FIRST 2)
                             return r4
```

After
```
Pipeline standard for PathResolution::getAPrivateVisibleModule/1#3829a5ee@5edefhwp was evaluated in 12 iterations totaling 0ms (delta sizes total: 3515).
         339   ~1%    {2} r1 = SCAN `PathResolution::isItemParent/1#d5e587d6#prev_delta` OUTPUT In.0, In.0

        3130   ~0%    {2} r2 = JOIN `PathResolution::isItemParent/1#d5e587d6#prev_delta` WITH `#PathResolution::ItemNode.getImmediateParentModule/0#dispred#57c4c6d5Plus#bf#reorder_1_0#prev` ON FIRST 1 OUTPUT Lhs.0, Rhs.1

          46   ~0%    {2} r3 = JOIN `#PathResolution::ItemNode.getImmediateParentModule/0#dispred#57c4c6d5Plus#bf#reorder_1_0#prev_delta` WITH `PathResolution::isItemParent/1#d5e587d6#prev` ON FIRST 1 OUTPUT Lhs.0, Lhs.1

        3515   ~2%    {2} r4 = r1 UNION r2 UNION r3
        3515   ~2%    {2}    | AND NOT `PathResolution::getAPrivateVisibleModule/1#3829a5ee#prev`(FIRST 2)
                      return r4
```
2025-04-08 13:11:32 +02:00
Tom Hvitved
2e1b8b8b0e Rust: Fix bad join in unqualifiedPathLookup
Before
```
Pipeline standard for PathResolution::unqualifiedPathLookup/2#6b171b76#reorder_2_0_1@822d53wq was evaluated in 61 iterations totaling 118ms (delta sizes total: 131072).
          606491   ~0%    {4} r1 = SCAN `PathResolution::getASuccessor/3#febac7bd#prev_delta` OUTPUT In.1, In.2, In.0, In.3
          106457   ~1%    {3}    | JOIN WITH `PathResolution::unqualifiedPathLookup/4#e32cdfce_1230#join_rhs` ON FIRST 3 OUTPUT Lhs.3, Rhs.3, Lhs.1

          606491   ~2%    {4} r2 = SCAN `PathResolution::getASuccessor/3#febac7bd#prev_delta` OUTPUT In.0, In.2, In.3, In.1

           19261   ~0%    {4} r3 = JOIN r2 WITH `PathResolution::ModuleLikeNode.isRoot/0#dispred#21662e64` ON FIRST 1 OUTPUT Lhs.3, Lhs.0, Lhs.1, Lhs.2

        42776643   ~1%    {4} r4 = JOIN r2 WITH `doublyBoundedFastTC@PathResolution::hasChild/2#6b318d51#2@PathResolution::isRoot/1#a01ce5c3#1@PathResolution::hasCratePath/1#73ea688d#1` ON FIRST 1 OUTPUT Lhs.3, Rhs.1, Lhs.1, Lhs.2

        42795904   ~1%    {4} r5 = r3 UNION r4
           24921   ~6%    {3}    | JOIN WITH `PathResolution::RelevantPath.isCratePath/2#e595e892_120#join_rhs` ON FIRST 2 OUTPUT Lhs.3, Rhs.2, Lhs.2

          131378   ~2%    {3} r6 = r1 UNION r5
          131072   ~2%    {3}    | AND NOT `PathResolution::unqualifiedPathLookup/2#6b171b76#reorder_2_0_1#prev`(FIRST 3)
                          return r6
```

After
```
Pipeline standard for PathResolution::unqualifiedPathLookup/2#6b171b76#reorder_2_0_1@0553a4wi was evaluated in 66 iterations totaling 10ms (delta sizes total: 131072).
        610251  ~0%    {4} r1 = SCAN `PathResolution::getASuccessor/3#febac7bd#prev_delta` OUTPUT In.1, In.2, In.0, In.3
        131378  ~0%    {3}    | JOIN WITH `PathResolution::unqualifiedPathLookup1/4#781de0cd_1230#join_rhs` ON FIRST 3 OUTPUT Lhs.3, Rhs.3, Lhs.1
        131072  ~0%    {3}    | AND NOT `PathResolution::unqualifiedPathLookup/2#6b171b76#reorder_2_0_1#prev`(FIRST 3)
                       return r1
```
2025-04-08 13:10:52 +02:00
Michael B. Gale
7798b716ff Go: Fix err instead of decErr in GetPkgsInfo 2025-04-08 12:04:48 +01:00
Óscar San José
a7943d88b1 Merge pull request #19234 from github/oscarsj/csharp-disable-nuget-tests
Disable csharp tests that use nuget on macos-15
2025-04-08 12:38:28 +02:00
Geoffrey White
866fc6b320 Merge pull request #19235 from geoffw0/ssaconsistency
Rust: SSA inconsistency counts
2025-04-08 10:49:19 +01:00
Tom Hvitved
7459548118 Rust: Cache tweaks 2025-04-08 11:49:16 +02:00
Owen Mansel-Chan
8c878cd8f5 Merge pull request #19243 from github/dependabot/go_modules/go/extractor/extractor-dependencies-891a2402ea
Bump golang.org/x/tools from 0.31.0 to 0.32.0 in /go/extractor in the extractor-dependencies group
2025-04-08 10:30:29 +01:00
Owen Mansel-Chan
5f6c59580c Merge pull request #19240 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-04-08 10:28:22 +01:00
Geoffrey White
10ad5780b5 Rust: Try a different toolchain version to fix the test in CI? 2025-04-08 10:21:40 +01:00
Geoffrey White
e2f63db96d Merge branch 'main' into badalloc 2025-04-08 10:15:38 +01:00
Geoffrey White
fd3dcb2d00 Rust: More precise imports. 2025-04-08 09:30:14 +01:00
Paolo Tranquilli
15606dd894 Bazel: update to 8.1.1 2025-04-08 08:20:54 +02:00
Napalys
4a4d78bbde Added change note 2025-04-08 08:12:42 +02:00
Napalys
b8802a29f4 Added open package model as data. 2025-04-08 08:12:30 +02:00
Napalys
df89739085 Added test cases for open package. 2025-04-08 08:10:10 +02:00
dependabot[bot]
2f9be926fb Bump golang.org/x/tools
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/tools` from 0.31.0 to 0.32.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.31.0...v0.32.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-version: 0.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 03:42:17 +00:00
Aditya Sharad
cf4989e1f8 Docs: Place GitHub Actions link lower in sidebar
Order by the human-readable language name
that is rendered,
i.e. 'GitHub Actions', not 'actions'.
2025-04-07 17:37:24 -07:00
Aditya Sharad
98b6e5ce2f Docs: Fix formatting of GitHub Actions content
Discovered in internal review of docs preview.
Use double backticks to render inline code blocks.
Use __ after inline hyperlinks.
Use an extra blank line to format the Actions library predicates table correctly.
Fix some rogue references to Ruby and case inconsistency.
2025-04-07 17:33:43 -07:00
github-actions[bot]
5adf135134 Add changed framework coverage reports 2025-04-08 00:22:09 +00:00
Aditya Sharad
0bb4ab950f Actions: Add integration test for default filter behaviour
Include a reachable workflow, and several unreachable workflow files.
Include action metadata files at various depths, all reachable.
This test exercises the default filters when the user doesn't
specify paths/paths-ignore.
2025-04-07 17:14:53 -07:00
Aditya Sharad
37db35431b Actions: Ensure autobuild invocations work when the CLI path contains spaces
Quote the paths to the CodeQL CLI dist or autobuild scripts when invoked.

This unblocks integration testing, since our integration tests always use
a CLI with a space in its directory name.
2025-04-07 17:06:28 -07:00
Geoffrey White
88439b42e6 Merge pull request #19095 from geoffw0/blockon
Rust: Model futures::executor::block_on.
2025-04-07 17:41:49 +01:00
Óscar San José
5e74bdc8dd Disable csharp test failing on macos-15 2025-04-07 18:16:33 +02:00
Napalys
873db7c121 Added change note 2025-04-07 18:15:24 +02:00
Napalys
b97c61864e Add flow summaries and entry points for TextDecoder 2025-04-07 18:15:19 +02:00
Napalys
f28478e876 Add test cases from TypedArrays to strings. 2025-04-07 18:13:52 +02:00
Napalys
f4277204b7 Add flow summaries and entry points for ArrayBuffer and SharedArrayBuffer 2025-04-07 18:12:35 +02:00
Napalys
0e099474c5 Added test cases for ArrayBuffer and SharedArrayBuffer 2025-04-07 18:07:54 +02:00
Napalys
ff07ec8d8c Add flow summaries for TypedArray methods set and subarray 2025-04-07 18:06:40 +02:00
Geoffrey White
ee54ba4c48 Rust: Autoformat. 2025-04-07 17:06:15 +01:00
Chuan-kai Lin
7c63264951 Merge pull request #19208 from github/cklin/exclude-from-incremental
Java: add exclude-from-incremental tag to telemetry queries
2025-04-07 08:29:30 -07:00
Paolo Tranquilli
de0d374cce Rust: add upgrades property in qlpack.yml 2025-04-07 17:22:17 +02:00
Geoffrey White
9c1567375d Shared: Implement getInconsistencyCounts for SSA. 2025-04-07 16:20:42 +01:00
Simon Friis Vindum
48e5b0a731 Merge branch 'main' into rust-ti-associated 2025-04-07 17:07:05 +02:00
Simon Friis Vindum
602e617bc6 Rust: Add type inference test for trait with multiple associated types 2025-04-07 17:02:51 +02:00
Simon Friis Vindum
8e76bb1a43 Rust: Minor changes based on PR review 2025-04-07 16:46:54 +02:00
Óscar San José
3744ef7379 Disable csharp tests that use nuget on macos-15 2025-04-07 16:24:48 +02:00
Paolo Tranquilli
1f9455c434 Rust: add upgrade/downgrade scripts for struct_field_is_unsafe 2025-04-07 15:39:14 +02:00
Geoffrey White
41f54d836e Rust: Tweak query description. 2025-04-07 14:33:31 +01:00
Geoffrey White
dad85854cd Apply suggestions from code review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-04-07 14:27:12 +01:00
Paolo Tranquilli
260322b669 Rust: fix compilation errors 2025-04-07 15:25:19 +02:00
Tom Hvitved
13f4a6afa6 Rust: Handle path attributes in path resolution 2025-04-07 15:24:17 +02:00
Tom Hvitved
edb7aaabab Rust: Add path attribute test 2025-04-07 15:23:27 +02:00
Napalys
d689a55229 Added test cases for TypedArray methods 2025-04-07 15:15:29 +02:00
Napalys
e23ff9cf3e Add TypedArrays flow summaries for Uint8Array and buffer property 2025-04-07 15:15:24 +02:00
Owen Mansel-Chan
d8ca8dd954 Merge pull request #19203 from owen-mc/review/egregius313/17905
Go: Add database source models for `uptrace/bun` and `gogf/gf/database/gdb`
2025-04-07 13:56:00 +01:00
Tamás Vajk
ffcf6d6e58 Apply suggestions from code review
Co-authored-by: Paolo Tranquilli <redsun82@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-07 14:52:57 +02:00
Paolo Tranquilli
132632b2a1 Cargo: update rustc_apfloat patched revision 2025-04-07 14:45:55 +02:00
Paolo Tranquilli
afb97d2797 Rust: regenerate schema 2025-04-07 14:34:33 +02:00
Paolo Tranquilli
db9c908d1d Cargo: upgrade dependencies 2025-04-07 14:30:00 +02:00
yoff
bf7d3d12a9 Merge pull request #19230 from yoff/ruby/add-DeadStoreOfLocal-to-code-quality-suite
ruby: add `rb/useless-assignment-to-local` to the code-quality suite
2025-04-07 14:25:20 +02:00
Simon Friis Vindum
74583e4fbf Merge pull request #19227 from paldepind/rust-pr-self
Rust: Resolve `Self` path in trait type of implementation
2025-04-07 14:21:02 +02:00
yoff
ba225013e7 ruby: add rb/useless-assignment-to-local to the code-quality suite 2025-04-07 14:08:53 +02:00
yoff
76c0b1698f Merge pull request #19164 from yoff/ruby/refine-deadstore
ruby: remove some FPs from `rb/useless-assignment-to-local`
2025-04-07 14:08:12 +02:00
yoff
6a8484f843 ruby: adjust precision of rb/useless-assignment-to-local to medium 2025-04-07 13:28:05 +02:00
yoff
eb8cbfa287 ruby: add change note 2025-04-07 13:28:05 +02:00
yoff
385598d46d ruby: remove some FPs from rb/useless-assignment-to-local 2025-04-07 13:28:05 +02:00
yoff
b205fedef4 ruby: add tests 2025-04-07 13:27:27 +02:00
yoff
e5fc1b0b00 ruby: add qhelp to rb/useless-assignment-to-local 2025-04-07 13:27:27 +02:00
Tom Hvitved
ca5cc8e405 Merge pull request #19220 from hvitved/rust/path-resolution-crate-fix
Rust: Minor path resolution fix for `($)crate` paths
2025-04-07 13:24:12 +02:00
Geoffrey White
2c2506c4f8 Rust: Add Rust SSA inconsistency infrastructure. 2025-04-07 12:16:45 +01:00
Simon Friis Vindum
3441af136c Merge pull request #19146 from paldepind/rust-ti-alias
Rust: Implement support for inference of type aliases
2025-04-07 13:03:30 +02:00
Simon Friis Vindum
5dba2412b5 Rust: Fix annotation in comment 2025-04-07 12:53:13 +02:00
Florin Coada
5cde4ddccf Merge pull request #19219 from github/changedocs/2.21.0
Add changelog entries for CodeQL CLI versions 2.20.7 and 2.21.0
2025-04-07 11:53:05 +01:00
Simon Friis Vindum
acc565f84e Rust: Refactor PathMention as suggested in review 2025-04-07 12:50:31 +02:00
Tamas Vajk
d17d44125c Java: add integration test for query suite contents 2025-04-07 12:49:16 +02:00
Napalys
93882263f9 Added test case for Uint8Array and TypedArray.prototype.buffer 2025-04-07 12:46:19 +02:00
Napalys
c4fa417680 Added change note 2025-04-07 12:11:33 +02:00
yoff
a885e61875 Merge pull request #19206 from hvitved/ruby/super-implicit-args-synth
Ruby: Synthesize implicit super arguments
2025-04-07 11:57:12 +02:00
Simon Friis Vindum
6cecf7e618 Rust: Resolve Self path in trait type of implementation 2025-04-07 11:55:03 +02:00
Simon Friis Vindum
5c2d6e3d0f Rust: Add path resolution test for Self in trait implementation 2025-04-07 11:45:43 +02:00
Napalys
6fb5376c5f Refactor ReceivedItemAsRemoteFlow to handle data from both client and server WebSocket sources 2025-04-07 11:44:40 +02:00
Geoffrey White
893e42315e Merge branch 'main' into badalloc 2025-04-07 09:33:23 +01:00
Geoffrey White
f292d04d7a Merge branch 'main' into blockon 2025-04-07 09:03:55 +01:00
Geoffrey White
810228273b Merge pull request #19222 from geoffw0/sinkstats
Rust: Define queries more consistently and include all sinks in stats
2025-04-07 08:57:40 +01:00
Tom Hvitved
f992c714fd Ruby: Add change note 2025-04-07 09:24:26 +02:00
Geoffrey White
471f02cf3b Merge branch 'main' into sinkstats 2025-04-04 22:28:30 +01:00
Geoffrey White
6ad7a950da Merge branch 'main' into badalloc 2025-04-04 21:57:04 +01:00
Geoffrey White
c9939387f8 Rust: Turn on PrettyPrintModels for RegexInjection so we hopefully don't have to deal with test result changes there as often. 2025-04-04 21:47:22 +01:00
Geoffrey White
a5883b1627 Rust: Accept test changes (due to added models?). 2025-04-04 21:45:37 +01:00
Geoffrey White
bc92a99fae Merge pull request #19080 from geoffw0/deallocation
Rust: Query for dereferencing an invalid pointer
2025-04-04 21:25:40 +01:00
Geoffrey White
d7c14ec065 Rust: Revert change to Cargo.lock. 2025-04-04 20:47:16 +01:00
Geoffrey White
ff78c45e50 Rust: Abstractions then implementations. 2025-04-04 18:33:27 +01:00
Geoffrey White
47ee6c6b81 Rust: Give regex injection extendable sources as well. 2025-04-04 18:27:16 +01:00
Geoffrey White
0db551032c Rust: Make imports consistent and correct. 2025-04-04 18:23:53 +01:00
Geoffrey White
784ccb740b Rust: Define Rust queries and extensions more consistently. 2025-04-04 18:17:16 +01:00
Geoffrey White
1acbdbaaa2 Rust: Make all query sinks extend QuerySink::Range and import them into Stats.qll (this ensures that sink statistics are complete). 2025-04-04 18:02:59 +01:00
Geoffrey White
c783549b5c Merge branch 'main' into blockon 2025-04-04 17:35:00 +01:00
Geoffrey White
8e7e162ebc Merge branch 'main' into badalloc 2025-04-04 17:09:50 +01:00
Geoffrey White
49c2f97cc8 Merge pull request #19180 from geoffw0/lessnoise
Rust: Reduce CI noise from the SummaryStats query
2025-04-04 16:51:30 +01:00
Tom Hvitved
006cb024de Merge pull request #19217 from hvitved/rust/macro-expansion-inherit-location
Rust: Use macro call location as fall back in macro expansions
2025-04-04 16:25:45 +02:00
Geoffrey White
d47e925e85 Rust: Delete empty .expected files. 2025-04-04 14:43:24 +01:00
Geoffrey White
65974544a3 Merge remote-tracking branch 'upstream/main' into lessnoise 2025-04-04 13:58:29 +01:00
Geoffrey White
64ee6c5c02 Merge branch 'main' into lessnoise 2025-04-04 13:51:31 +01:00
Geoffrey White
e9971ffb94 Rust: Change the ID of the new query. 2025-04-04 13:50:28 +01:00
Tom Hvitved
8b6c8d7174 Rust: Minor path resolution fix for ($)crate paths 2025-04-04 14:44:39 +02:00
Geoffrey White
dc31da82d0 Rust: Fix file name typo. 2025-04-04 13:42:29 +01:00
Joe Farebrother
e08072d77b Fix qhelp formatting 2025-04-04 12:51:46 +01:00
Florin Coada
5c1581d080 Add changelog entries for CodeQL CLI versions 2.20.7 and 2.21.0 2025-04-04 12:37:37 +01:00
Joe Farebrother
de7e611962 Rewrite documentation 2025-04-04 12:36:13 +01:00
Geoffrey White
24a4aad120 Rust: Accept consistency check fixes following merge with main. 2025-04-04 12:11:25 +01:00
Geoffrey White
8b23945417 Merge branch 'main' into deallocation 2025-04-04 12:06:50 +01:00
Tom Hvitved
6f704f088e Merge pull request #19157 from hvitved/rust/path-resolution-prelude
Rust: Take prelude into account when resolving paths
2025-04-04 13:06:31 +02:00
Michael Nebel
8f0b9853f8 Merge pull request #19061 from michaelnebel/csharp/useless-assignment-to-local
C#: Add `cs/useless-assignment-to-local` to the code quality suite.
2025-04-04 13:00:36 +02:00
Joe Farebrother
b5805503fe Cleanups 2025-04-04 11:56:07 +01:00
Tom Hvitved
ffca52e5c0 Merge pull request #19195 from hvitved/rust/post-with-flow-in-exclude
Rust: Add another disjunct to `postWithInFlowExclude`
2025-04-04 12:41:30 +02:00
Tom Hvitved
8e9e772ac8 Merge pull request #19121 from hvitved/ruby/pre-update-unique
Ruby: Make `getPreUpdateNode` Unique Again
2025-04-04 12:40:44 +02:00
Napalys
6bcfd8c91d Updated getAServer with API graphs. 2025-04-04 12:31:29 +02:00
Napalys
c5860e92ec Updated WebSocketReceiveNode to match bind functions. 2025-04-04 12:28:53 +02:00
Napalys
4b7a9cd399 Added test case with bind. 2025-04-04 12:26:58 +02:00
Napalys
49194b0340 Updated WebSocketReceiveNode with API graphs. 2025-04-04 12:26:52 +02:00
Michael Nebel
70a174ad5a C#: Address review comments. 2025-04-04 11:47:46 +02:00
Tom Hvitved
b115f3f5e9 Update rust/ql/lib/codeql/rust/internal/PathResolution.qll
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-04-04 11:39:06 +02:00
Tom Hvitved
5731fa91f3 Rust: Use macro call location as fall back in macro expansions 2025-04-04 11:38:10 +02:00
Joe Farebrother
9fb1c31206 Update tests to inline expectations 2025-04-04 10:13:39 +01:00
Geoffrey White
44b26e5ae6 Rust: Change the test copy of the example as well. 2025-04-04 09:54:41 +01:00
Geoffrey White
f96b00a62a Update rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSizeGood.rs
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-04-04 09:53:13 +01:00
Joe Farebrother
adfe89fadc Update test output 2025-04-04 09:47:21 +01:00
Simon Friis Vindum
77e1b231a6 Rust: Handle associated types in trait methods 2025-04-04 10:24:55 +02:00
Simon Friis Vindum
f9ff92a705 Rust: Expand on type inference tests for associated types 2025-04-04 10:16:09 +02:00
Michael Nebel
dd1fbd28be C#: Add string interpolation examples to cs/useless-assignment-to-local. 2025-04-04 10:08:41 +02:00
Michael Nebel
2b88600f0f C#: Re-factor cs/useless-assignment-to-local tests to use inline test framework. 2025-04-04 10:08:39 +02:00
Michael Nebel
49ecff3292 C#: Add cs/useless-assignment-to-local to the CCR suite. 2025-04-04 10:08:38 +02:00
Michael Nebel
5a4e0cea55 Merge pull request #19199 from michaelnebel/csharp/synctestfiles
C#: Accept file sync mismatch for C# testfiles.
2025-04-04 10:07:05 +02:00
Tom Hvitved
15bfeab652 Ruby: Make getPreUpdateNode Unique Again 2025-04-04 09:43:55 +02:00
Anders Schack-Mulligen
ea8cd6f758 Merge pull request #19160 from aschackmull/ssa/deprecate-definitionext
Ssa: Deprecate the public DefinitionExt and PhiReadNode
2025-04-04 09:23:08 +02:00
Napalys
0dbf951291 Updated ClientSocket and SendNode with API graphs. 2025-04-04 09:14:54 +02:00
Napalys
455ce59583 Added test cases with export of an instance. 2025-04-04 08:59:19 +02:00
Napalys
e16a20e69f Updated SocketClass to use API Graphs. 2025-04-04 08:47:27 +02:00
Napalys
c7fad09664 Added test cases with custom exports/imports. 2025-04-04 08:33:26 +02:00
Napalys
a572ac60d2 Added inline test expectations for WebSocket 2025-04-04 08:22:48 +02:00
Anders Schack-Mulligen
ce19972aef SSA: Reinstate consistency check. 2025-04-03 16:16:20 +02:00
Tom Hvitved
f4e9382622 Rust: Take prelude into account when resolving paths 2025-04-03 16:07:26 +02:00
Tom Hvitved
4b3816e14e Rust: Variants inherit visibility from their parent enum 2025-04-03 16:05:12 +02:00
Tom Hvitved
f09c3c5813 Rust: Handle self enum/struct uses 2025-04-03 16:05:11 +02:00
Tom Hvitved
3bfb4fbd8d Rust: More path resolution tests 2025-04-03 16:05:09 +02:00
Asger F
68f6f9f2e8 Merge pull request #19211 from asgerf/js/pp-unit-tests
Support post-procesed inline expectations for query predicates in unit tests
2025-04-03 16:00:18 +02:00
Simon Friis Vindum
a1d36c0501 Rust: Implement support for inference of type aliases 2025-04-03 15:18:15 +02:00
Simon Friis Vindum
e7027f0979 Rust: Add type inference tests for type aliases 2025-04-03 15:13:19 +02:00
Simon Friis Vindum
04d37c3f46 Merge pull request #19198 from paldepind/rust-ti-inline-expectations
Rust: Add inline expectations test for type inference
2025-04-03 14:55:12 +02:00
Simon Friis Vindum
e6c7ad8ee0 Rust: Add comment as suggested in review 2025-04-03 14:34:23 +02:00
Simon Friis Vindum
a53f664e85 Rust: Fix bad join 2025-04-03 14:33:02 +02:00
Anders Schack-Mulligen
5f290ebfca Merge pull request #19156 from aschackmull/misc/stageoverlap
Misc: Add stage overlap script
2025-04-03 13:40:24 +02:00
Asger F
14c5495b4c JS: Use in SensitiveActions test as an example 2025-04-03 13:24:18 +02:00
Asger F
c49ffa01ee JS: Enable post-processed inline expectations for query predicates 2025-04-03 13:24:17 +02:00
Simon Friis Vindum
d5d61dd8b3 Rust: Add inline expectations test for type inference 2025-04-03 12:49:34 +02:00
Simon Friis Vindum
b0c40111e7 Rust: Tweaks to stringification 2025-04-03 12:45:08 +02:00
Owen Mansel-Chan
1ed8fbd811 Delete commented out code 2025-04-03 11:19:14 +01:00
Asger F
6c33013788 JS: Enable association with headers without needing a route handler
Previously it was not possible to associate a ResponseSendArgument with its header definitions if they did not have the same route handler.

But for calls like `new Response(body, { headers })` the headers are fairly obvious whereas the route handler is unnecessarily hard to find. So we use the direct and obvious association between 'body' and 'headers' in the call.
2025-04-03 11:08:10 +02:00
Asger F
db2720ea5b JS: Initial model of Response 2025-04-03 11:08:05 +02:00
Napalys
0e7bff0f81 Added change note. 2025-04-03 10:45:17 +02:00
Napalys
04a39eb735 Removed old mkdirp modeling and replaced it with MaD. 2025-04-03 10:45:16 +02:00
Napalys
3fa24d6026 Add sink model for mkdirp and update tests for path injection alerts. 2025-04-03 10:45:14 +02:00
Napalys
533f1a93e2 JS: Added test cases for mkdirp. 2025-04-03 10:45:12 +02:00
Michael Nebel
79688efacb Merge pull request #19194 from michaelnebel/csharp/enumsimpletype
C#: Extend simple type sanitizers with enums and `System.DateTimeOffset`.
2025-04-03 10:24:26 +02:00
Tamás Vajk
befc2fd7c1 Merge pull request #19145 from tamasvajk/tamasvajk/blazor/parameter-passing-jumpnode-2
C#: Blazor: Support string literals as property names in jump nodes
2025-04-03 10:07:59 +02:00
Anders Schack-Mulligen
6ac4cb71cb SSA: Add change note. 2025-04-03 09:57:48 +02:00
Napalys Klicius
5c42c0ba4c Merge pull request #19196 from Napalys/js/rimraf
JS: Modeling of `rimraf` functions
2025-04-03 09:51:52 +02:00
Anders Schack-Mulligen
34554fd000 SSA: Deprecate the public DefinitionExt. 2025-04-03 09:47:50 +02:00
Anders Schack-Mulligen
e04075b0ec Merge pull request #19177 from aschackmull/swift/ssa-useuse
Swift: Update SSA to reference the new use-use predicates.
2025-04-03 09:46:47 +02:00
Asger F
bb15f30ef6 Merge pull request #19192 from asgerf/js/name-resolution-independent-fixes
JS: Some preliminary fixes from name resolution branch
2025-04-03 09:36:02 +02:00
Tom Hvitved
65a11984bd Ruby: Synthesize implicit super arguments 2025-04-03 09:13:06 +02:00
Tom Hvitved
c10b5801b1 Ruby: Add argument-less super call tests 2025-04-03 09:12:23 +02:00
Simon Friis Vindum
52660fa57d Merge pull request #19149 from paldepind/rust-ti-self-param
Rust: Make trait a base type mention of the self type parameter
2025-04-03 08:44:09 +02:00
Aditya Sharad
927b26b869 Merge pull request #19190 from adityasharad/actions/initial-docs
Docs: Add GitHub Actions as a supported language
2025-04-03 04:39:23 +05:30
Aditya Sharad
4d6afe7d29 Docs: Address comments on Actions docs 2025-04-02 16:00:55 -07:00
Aditya Sharad
8f6dc1cdfc Docs: Fix more short underlines 2025-04-02 15:56:42 -07:00
Aditya Sharad
67dd301a37 Docs: Add language guide structure for Actions 2025-04-02 15:25:27 -07:00
Jonas Jensen
118abd40c9 Java: add exclude-from-incremental tag to telemetry queries
In the future, this tag should signal to the action that the queries
should be excluded from incremental scans because they are too slow
and/or produce too many results.

The three queries tagged here rely on global data-flow analysis to find
all XSS sinks. All other metric and diagnostic queries are fast enough
for incrementality.
2025-04-02 14:19:45 -07:00
Nicolas Will
62fa136506 Merge pull request #19201 from nicolaswill/patch-1
Add @ps-codeql to CODEOWNERS for experimental cryptography
2025-04-02 22:15:03 +02:00
Aditya Sharad
d31896bf52 Merge pull request #19166 from yoff/actions/add-actions-permissions-MaD-model
actions: add MaD model for permissions needed by actions
2025-04-03 01:24:04 +05:30
Aditya Sharad
4207322719 Docs: Make Actions underlines the right length
Fixes warnings in Sphinx build.
2025-04-02 11:39:01 -07:00
Jon Janego
d5130127b1 Merge pull request #19189 from github/jonjanego/useless-expression-tags
Update tags for js/useless-expression
2025-04-02 13:24:56 -05:00
Tom Hvitved
a01b211f79 Merge pull request #19185 from hvitved/rust/ssa-capture-psudeo-read-dominate
Rust: Fix `capturedCallRead`
2025-04-02 19:16:55 +02:00
Jon Janego
e0d9dad9c2 Merge branch 'main' into jonjanego/useless-expression-tags 2025-04-02 10:51:52 -05:00
Jon Janego
d8ef4fc25d Update javascript/ql/src/Expressions/ExprHasNoEffect.ql
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-04-02 10:22:27 -05:00
Idriss Riouak
145c141e63 Merge pull request #19202 from github/idrissrio/trailing-return
C++: update expected test results after extractor changes
2025-04-02 17:01:14 +02:00
Óscar San José
f4515515fe Merge pull request #19204 from github/oscarsj/migrate-builders-macos-15
Run pytest server with `sudo` and higher `nice` value
2025-04-02 16:59:11 +02:00
Chris Smowton
e865d07a70 Merge pull request #19187 from smowton/smowton/feature/jakarta-persistence
Java: generalise `javax.persistence` models to also recognise `jakarta.persistence`.
2025-04-02 15:56:29 +01:00
Óscar San José
18c901bee4 Merge branch 'main' into oscarsj/migrate-builders-macos-15 2025-04-02 16:11:58 +02:00
Michael Nebel
16142a287a C#: Add NoDisposeCallOnLocalIDisposableBad file and update test expected output. 2025-04-02 15:43:52 +02:00
Simon Friis Vindum
001735bfb8 Rust: Take internal IDs of a smaller class 2025-04-02 15:39:58 +02:00
Michael Nebel
2193bece90 C#: Update test expected output. 2025-04-02 15:30:48 +02:00
idrissrio
14a84c3209 C++: update expected test results after extractor changes 2025-04-02 15:20:06 +02:00
Owen Mansel-Chan
ecd09edf64 Add stubs for gogf/gf and uptrace/bun 2025-04-02 14:17:40 +01:00
Owen Mansel-Chan
1687042c3b Add Bun models and tests 2025-04-02 14:17:39 +01:00
Owen Mansel-Chan
ddb7da4c13 Add gogf models and tests 2025-04-02 14:17:37 +01:00
Ed Minnix
9cf4117120 Add tests for gogf/gf/database/gdb 2025-04-02 14:17:35 +01:00
Ed Minnix
db65a6ff85 [gogf] Model github.com/gogf/gf/database/gdb
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2025-04-02 14:17:34 +01:00
Ed Minnix
c54f0d82e2 [bun] Model github.com/uptrace/bun 2025-04-02 14:17:32 +01:00
Owen Mansel-Chan
89e853b4be Don't use non-existent dependency
This makes some go tooling, like `go mod tidy`, not work.
2025-04-02 14:17:31 +01:00
Owen Mansel-Chan
88b061e27e Add change note 2025-04-02 14:17:30 +01:00
Michael Nebel
93d0f364d6 C#: Add ConstantConditionBad file. 2025-04-02 15:00:05 +02:00
Nicolas Will
10564fac4d Add @ps-codeql to CODEOWNERS for experimental cryptography
This pull request adds @github/ps-codeql as a code owner of `**/experimental/quantum/` to support the development of post-quantum cryptography-related libraries and queries.

We’ll be committing stable but experimental work to these directories as it becomes ready for public use, with a near-term goal of moving it out of experimental.

To get started, we’d also need write access to `github/codeql`.

cc @adityasharad @lcartey
2025-04-02 14:20:24 +02:00
Asger F
6c3bc941c5 Merge branch 'main' into js/name-resolution-independent-fixes 2025-04-02 14:15:44 +02:00
Asger F
2c40359143 JS: Change note 2025-04-02 14:12:07 +02:00
Asger F
30a9cd7c8a JS: Include document as a DOM value 2025-04-02 14:09:52 +02:00
Michael Nebel
6820cbabc8 C#: Accept file sync mismatch for C# testfiles if they are identical modulo comments. 2025-04-02 14:01:00 +02:00
Asger F
9ebaac82cf JS: Add tests for Response object sink 2025-04-02 13:47:18 +02:00
Geoffrey White
fbde235253 Rust: Rename the test as well. 2025-04-02 12:16:10 +01:00
Geoffrey White
02245af3ca Rust: Rename the query file. 2025-04-02 12:11:55 +01:00
Geoffrey White
9fc0ee185b Rust: Change the query ID to rust/summary/summary-statistics-reduced. 2025-04-02 12:03:20 +01:00
Taus
f461763938 Merge pull request #19186 from github/tausbn/actions-fix-gettargetpath-performance
Actions: Fix bad performance in `getTargetPath`
2025-04-02 12:53:56 +02:00
Napalys
390d9ffe66 Added change note 2025-04-02 12:50:53 +02:00
Napalys
b16b407f89 Add rimraf model and update tests for path injection vulnerabilities 2025-04-02 12:49:48 +02:00
Napalys
14999c19da Added test cases for rimraf library. 2025-04-02 12:46:48 +02:00
Tom Hvitved
8663f3b8b2 Rust: Add another disjunct to postWithInFlowExclude 2025-04-02 12:32:28 +02:00
Geoffrey White
c737ee9b52 Rust: Accept another consistency check failure. 2025-04-02 10:58:56 +01:00
Michael Nebel
22c943657a C#: Update change note. 2025-04-02 11:21:11 +02:00
Michael Nebel
d7f5ce2492 C#: Update log forging expected test output. 2025-04-02 11:21:07 +02:00
Michael Nebel
cf75493fe9 C#: Consider Enums and System.DateTimeOffset as having a sanitizing effect. 2025-04-02 11:21:05 +02:00
Michael Nebel
08159896f3 C#: Convert cs/log-forging tests to inline expectations. 2025-04-02 11:21:03 +02:00
Michael Nebel
60e3b4351a C#: Fix simple types testcases. 2025-04-02 11:21:01 +02:00
Michael Nebel
024712c073 C#: Temporarily comment out considering Enums as having a sanitizing effect. 2025-04-02 11:20:59 +02:00
Chris Smowton
77e4d9e692 Fix stray references to the javax package name
Co-authored-by: Jami <57204504+jcogs33@users.noreply.github.com>
2025-04-02 10:03:49 +01:00
Joe Farebrother
c37809a187 Reduce scope of allowImplicitRead to avoid cartesian product. 2025-04-02 09:35:50 +01:00
Joe Farebrother
2d6476ad21 Update names and alert message 2025-04-02 09:35:43 +01:00
Joe Farebrother
11830bf661 Move to separate folder 2025-04-02 09:35:39 +01:00
Joe Farebrother
5b7200a041 Use flow path in alerts 2025-04-02 09:35:32 +01:00
Joe Farebrother
08b4281187 Update query message and remove field case 2025-04-02 09:35:25 +01:00
Joe Farebrother
efdb4a6d82 Use global dataflow for loop variable capture 2025-04-02 09:35:17 +01:00
Anders Schack-Mulligen
e6cf737f99 Merge pull request #19178 from aschackmull/csharp/pressa-useuse
C#: Update PreSSA to reference the new use-use predicates.
2025-04-02 10:30:36 +02:00
Anders Schack-Mulligen
47b1c3d3ce Merge pull request #19154 from aschackmull/ssa/variablecapture
Ssa: Replace phi-read references in VariableCapture with default use-use flow
2025-04-02 10:16:17 +02:00
Asger F
78b25388ca JS: Protect against bad join in BadRandomness
This code resulted in bad join orders in response to certain library
changes. The actual library changes have to be split into smaller pieces
but I'd like to ensure I don't run into the bad join again.
2025-04-02 10:14:07 +02:00
Asger F
46f88e7ce7 JS: Updates to DOM model 2025-04-02 10:14:03 +02:00
Asger F
48db2b9315 JS: Add test 2025-04-02 10:12:36 +02:00
Ian Roof
1d81c77fcd C#: Enhanced LogForgingQuery to treat C# Enums as simple types. 2025-04-02 09:40:10 +02:00
yoff
c18529086a actions: add change note 2025-04-02 08:50:05 +02:00
yoff
7bf4a47549 Apply suggestions from code review
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-04-02 08:43:29 +02:00
Michael Nebel
45b55c05ae Merge pull request #19191 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-04-02 08:02:39 +02:00
Aditya Sharad
3b8c4d970f Docs: Remove spurious predicate reference 2025-04-01 19:07:34 -07:00
Aditya Sharad
9db5cdf957 Docs: Add query help page placeholders for Actions 2025-04-01 19:03:59 -07:00
Aditya Sharad
a1ceaa0aa3 Docs: Add initial library docs for Actions
Create the basic structure, state the key importable libraries.
Describe a workflow.
State the extensible predicates available.
Other elements are to be filled in later.
2025-04-01 19:02:49 -07:00
github-actions[bot]
f379f23216 Add changed framework coverage reports 2025-04-02 00:22:37 +00:00
Aditya Sharad
f6442d20db Docs: Add Actions pages for CWE coverage 2025-04-01 17:09:03 -07:00
Aditya Sharad
09de7cfe4d Docs: Add GitHub Actions as a supported language
Include GitHub Actions (identifier `actions`) everywhere we list
supported languages, query packs, and library packs.

Query and library documentation link targets do not exist yet.
2025-04-01 17:01:47 -07:00
Jon Janego
74587f0d64 Update ExprHasNoEffect.ql
adding quality tags per metadata styleguide
2025-04-01 18:47:52 -05:00
Jon Janego
fa02f82ef6 Updating the metadata style guide
Update query-metadata-style-guide.md
2025-04-01 15:50:23 -05:00
Jon Janego
dcdc3b8939 Merge branch 'main' into jonjanego-patch-1 2025-04-01 15:42:51 -05:00
Jon Janego
00bb9056c2 Update query-metadata-style-guide.md 2025-04-01 15:42:36 -05:00
Geoffrey White
1d7dac485e Rust: switch the query to taint flow so that we get taint through conversions (without needing a special case). 2025-04-01 17:57:04 +01:00
Chris Smowton
3c555fce11 Add basic test for SQL injection vs Jakarta Persistence 2025-04-01 17:13:23 +01:00
Chris Smowton
5d37ccfa90 Change note 2025-04-01 16:51:29 +01:00
Chris Smowton
20839745bd Remove redundant import 2025-04-01 16:49:56 +01:00
Asger F
887942e3e9 Merge pull request #19108 from asgerf/js/api-graph-spread-rest
JS: Handle spread/rest in API graphs
2025-04-01 17:48:36 +02:00
Taus
aacdc70a73 Merge pull request #19136 from github/tausbn/python-modernise-mixed-tuple-returns-query
Python: Modernize `py/mixed-tuple-returns`
2025-04-01 17:31:56 +02:00
Chris Smowton
50119ae481 Update docs 2025-04-01 16:20:06 +01:00
Chris Smowton
a5a6fd37df Enable recognising jakarta.persistence in dead-code queries 2025-04-01 16:19:42 +01:00
yoff
80ae8794f5 actions: update test expectations 2025-04-01 17:07:57 +02:00
yoff
d83f35ff64 actions: remove unneded API 2025-04-01 17:07:43 +02:00
Chris Smowton
fb6296a564 Persistence models: recognise jakarta.persistence 2025-04-01 16:07:40 +01:00
yoff
6fd8aba560 actions: simplify using existing UsesStep 2025-04-01 17:07:21 +02:00
yoff
ee1eb199b5 actions: add description of actionsPermissionsDataModel 2025-04-01 17:07:02 +02:00
yoff
bd7c684c6c actions: add test with empty permissions 2025-04-01 17:06:32 +02:00
Taus
8afdf25e9a Actions: Mark helper predicate as noinline. 2025-04-01 14:50:00 +00:00
Asger F
4746cfddf2 JS: Add clarifying comment 2025-04-01 16:26:07 +02:00
Asger F
e1784bb10c JS: Fix handling of spread args on a bound function 2025-04-01 16:20:57 +02:00
Taus
c9fc7882e6 Actions: Fix bad performance in getTargetPath
Seen on `github/codeql`, some queries had very poor performance:
```
 [2/24 eval 36m4s] Evaluation done; writing results to
codeql/actions-queries/Security/CWE-312/ExcessiveSecretsExposure.bqrs
```

Investigating further lead to the following worrying sequence of joins
(after I ran out of patience and cancelled the query):
```
[2025-04-01 12:31:03] Tuple counts for
Yaml::YamlInclude.getTargetPath/0#dispred#32565107#fb#reorder_1_0/2@i6#9f4b2jw1
after 8m40s:
...
    559418    ~33%        {1} r5 = SCAN
`Yaml::YamlNode.getLocation/0#dispred#24555c57#prev_delta` OUTPUT In.1
...
    909345525 ~821%       {3} r7 = JOIN r5 WITH
`Yaml::YamlNode.getLocation/0#dispred#24555c57#prev` CARTESIAN PRODUCT
OUTPUT Rhs.1, Lhs.0 'result', Rhs.0
    909342139 ~779%       {3}    | JOIN WITH
`Locations::Location.getFile/0#dispred#dcf38c8d#prev` ON FIRST 1 OUTPUT
Rhs.1, Lhs.1 'result', Lhs.2
    909338753 ~794%       {3}    | JOIN WITH containerparent_10#join_rhs
ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'result', Lhs.2
    909335367 ~824%       {3}    | JOIN WITH
`FileSystem::Container.getAbsolutePath/0#dispred#d234e6fa` ON FIRST 1
OUTPUT Lhs.2, Lhs.1 'result', Rhs.1
    883246724 ~812%       {3}    | JOIN WITH
`Yaml::YamlNode.getDocument/0#dispred#ee1eb3bf#bf_10#join_rhs` ON FIRST
1 OUTPUT Rhs.1 'this', Lhs.1 'result', Lhs.2
    760047185 ~838%       {5}    | JOIN WITH yaml_scalars ON FIRST 1
OUTPUT Lhs.1 'result', Lhs.0 'this', Rhs.2, _, Lhs.2
    0         ~0%         {4}    | REWRITE WITH Tmp.3 := "/", Out.3 :=
(In.4 ++ Tmp.3 ++ InOut.2), TEST Out.3 = InOut.0 KEEPING 4
                        {4}    | REWRITE WITH NOT [TEST InOut.2
startsWith "/"]
...
```

The culprit turned out to be the following method on class `YamlInclude`
```ql
private string getTargetPath() {
    exists(string path | path = this.getValue() |
    if path.matches("/%")
    then result = path
    else
        result =

this.getDocument().getLocation().getFile().getParentContainer().getAbsolutePath()
+ "/" +
            path
    )
}
```

Basically, in the `else` branch, the evaluator was producing all
possible values of `result` before filtering out the ones where the
`path` component started with a forward slash.

To fix this, I opted to factor out the logic into two helper predicates,
each accounting for whether `this.getValue()` does or does not start
with a `/`. With this, evaluating the original query from a clean cache
takes roughly 3.3s.
2025-04-01 13:59:19 +00:00
Tom Hvitved
ffb25b7aac Merge pull request #19162 from hvitved/rust/to-string-non-rec
Rust: Make `Element.toString` non-recursive
2025-04-01 15:31:18 +02:00
Anders Schack-Mulligen
e1ef56b8bb Swift: Fix accidental cartesian product. 2025-04-01 15:23:16 +02:00
Óscar San José
9b2eff88a6 restore original port 2025-04-01 15:17:52 +02:00
Arthur Baars
0e23b86bf5 Merge pull request #19182 from github/post-release-prep/codeql-cli-2.21.0
Post-release preparation for codeql-cli-2.21.0
2025-04-01 15:12:29 +02:00
Tom Hvitved
dcaeeabad8 Rust: Fix capturedCallRead 2025-04-01 15:11:20 +02:00
Tom Hvitved
9dea9f5046 SSA: Make phiWithoutTwoPriorRefs consistency check more informative 2025-04-01 15:07:46 +02:00
Tom Hvitved
01810cbac9 Rust: Update PhiDefinition.toString 2025-04-01 14:59:05 +02:00
Marco Gario
2419ccf511 Merge pull request #19183 from github/marcogario-patch-1
Update UntrustedCheckoutCritical.ql
2025-04-01 14:43:37 +02:00
Simon Friis Vindum
8acf9ceef4 Rust: Make trait a base type mention of the self type parameter 2025-04-01 14:04:46 +02:00
Marco Gario
d33ce423d8 Update UntrustedCheckoutCritical.ql 2025-04-01 13:58:37 +02:00
Arthur Baars
68690b4615 Merge pull request #19181 from github/aibaars/rust-delete-cargo-lock
Rust: QLTest: delete Cargo.lock files
2025-04-01 13:57:19 +02:00
yoff
3cdd641b81 actions: fix typo 2025-04-01 13:43:00 +02:00
Michael Nebel
f4105ee4af Merge pull request #19089 from michaelnebel/csharp/improvestringinterpolation
C#: Extract string interpolation alignment and format.
2025-04-01 13:40:15 +02:00
github-actions[bot]
10205cb990 Post-release preparation for codeql-cli-2.21.0 2025-04-01 11:30:43 +00:00
Joe Farebrother
0339601ada Merge pull request #19179 from joefarebrother/python-ccr
Python: Add file-not-closed and special-method-wrong-signature to python code-quality suite
2025-04-01 12:26:35 +01:00
yoff
1ec3e8712b Apply suggestions from code review
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-04-01 13:18:30 +02:00
Arthur Baars
626c752a0b Merge pull request #19172 from github/release-prep/2.21.0
Release preparation for version 2.21.0
2025-04-01 12:49:25 +02:00
Óscar San José
81a39f380a Change niceness of test server 2025-04-01 12:48:00 +02:00
Arthur Baars
1d49252c03 Rust: QLTest: delete Cargo.lock files 2025-04-01 12:38:57 +02:00
Paolo Tranquilli
01d4c0ff56 Merge pull request #19167 from github/redsun82/rust-upgrades-downgrades
Rust: introduce upgrades/downgrades infrastructure
2025-04-01 12:01:30 +02:00
Paolo Tranquilli
7821fbf576 Merge branch 'main' into redsun82/rust-upgrades-downgrades 2025-04-01 11:38:34 +02:00
Marco Gario
c8299253f1 Merge pull request #19126 from github/marcogario-patch-1
Update UseOfKnownVulnerableAction.ql
2025-04-01 11:36:25 +02:00
Tom Hvitved
f54d8325ae Merge pull request #19133 from hvitved/rust/more-path-resolution
Rust: More path resolution improvements
2025-04-01 11:25:16 +02:00
Anders Schack-Mulligen
7afcd1bbec Swift: Update test output. 2025-04-01 11:07:17 +02:00
Joe Farebrother
73eebcbca6 Python: Add file-not-closed and special-method-wrong-signature to python code-quality suite 2025-04-01 10:05:17 +01:00
Marco Gario
c0d7288696 Merge branch 'main' into marcogario-patch-1 2025-04-01 10:59:03 +02:00
Geoffrey White
86840a78c2 Rust: Update .expected files. 2025-04-01 09:56:56 +01:00
Geoffrey White
cc90ba5836 Rust: Create a less noisy version of the summary stats query, for use in tests. 2025-04-01 09:56:47 +01:00
Geoffrey White
32e2c1912c Rust: Move all summary stats logic into Stats.qll. 2025-04-01 09:56:39 +01:00
Marco Gario
3652d6f258 Merge pull request #19127 from github/marcogario/untrusted_checkout_name
UntrustedCheckout: Try and differentiate between two versions of the query
2025-04-01 10:56:36 +02:00
Idriss Riouak
1ebce01c95 Merge pull request #19159 from github/idrissrio/calling-conventions
C++: Add class representing calling conventions
2025-04-01 10:31:16 +02:00
Tamas Vajk
a570a728bd Fix code quality 2025-04-01 10:29:55 +02:00
Tamás Vajk
398f041464 Update csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/aspnetcore/Components.qll
Co-authored-by: Michael Nebel <michaelnebel@github.com>
2025-04-01 10:18:09 +02:00
Michael Nebel
8bf2ceb942 Merge pull request #19125 from michaelnebel/csharp/updatedotnet9models
C#: Update generated .NET 9 Runtime models.
2025-04-01 10:09:58 +02:00
Anders Schack-Mulligen
887452d202 Swift: Update SSA to reference the new use-use predicates. 2025-04-01 10:05:02 +02:00
Anders Schack-Mulligen
dbd99df85b C#: Update PreSSA to reference the new use-use predicates. 2025-04-01 10:03:20 +02:00
idrissrio
d61d9730c8 C++: add change note for calling conventions 2025-04-01 09:53:36 +02:00
Tom Hvitved
56f4694b38 Swift: Avoid calling Element.toString recursively 2025-04-01 08:48:16 +02:00
Tom Hvitved
c14a2375c3 Swift: Run codegen 2025-04-01 08:48:15 +02:00
Tom Hvitved
4fb138a1a3 Rust: Make Element.toString non-recursive 2025-04-01 08:48:13 +02:00
Anders Schack-Mulligen
efb5ed1030 Merge pull request #19155 from aschackmull/cpp/iterator-ssa
C++: Refactor Iterator SSA flow to use the data flow integration module.
2025-04-01 08:44:10 +02:00
Michael Nebel
3017d42c95 Merge pull request #19173 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-04-01 08:33:35 +02:00
Michael Nebel
de6e3eafb9 C#: Add change note. 2025-04-01 08:32:52 +02:00
Michael Nebel
2f16e3a0c0 C#: Update flowsummaries test expected output. 2025-04-01 08:32:43 +02:00
Michael Nebel
2487f7734b C#: Update the generated .NET 9 models. 2025-04-01 08:24:09 +02:00
Michael Nebel
ba26953f0b C#: Update generated .NET 9 models. 2025-04-01 08:24:07 +02:00
github-actions[bot]
1186699269 Add changed framework coverage reports 2025-04-01 00:25:24 +00:00
Andrew Eisenberg
70150eea9a Merge branch 'main' into marcogario/untrusted_checkout_name 2025-03-31 13:54:17 -07:00
Marco Gario
820dacd151 Merge branch 'main' into marcogario-patch-1 2025-03-31 20:42:12 +02:00
Marco Gario
8737acb6a9 Update actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.ql
Co-authored-by: Andrew Eisenberg <aeisenberg@github.com>
2025-03-31 20:42:03 +02:00
Geoffrey White
ff2a1ca961 Rust: Group the data in rust/summary/summary-statistics. 2025-03-31 19:28:00 +01:00
github-actions[bot]
84f6564cc0 Release preparation for version 2.21.0 2025-03-31 17:35:15 +00:00
Arthur Baars
c89c403e0e Merge pull request #19169 from github/aibaars/fix-changenote-file
Javascript, add missing `*` to changenote
2025-03-31 19:27:18 +02:00
Geoffrey White
fb22d55878 Rust: Remove duplicate models. 2025-03-31 18:26:26 +01:00
Geoffrey White
6a5a1001bb Rust: Refine the barrier guard. 2025-03-31 18:26:21 +01:00
Geoffrey White
f7d3a51f27 Rust: Implement barrier guard. 2025-03-31 17:53:17 +01:00
Geoffrey White
cdd5cb0523 Rust: More test cases for bounds / guards. 2025-03-31 17:53:14 +01:00
Geoffrey White
addc1d34d8 Rust: Add qhelp, examples, and tests of examples. 2025-03-31 17:53:10 +01:00
Arthur Baars
cd9ccef8b2 Javascript, add missing * to changenote 2025-03-31 18:45:01 +02:00
Geoffrey White
64aa4e8bae Rust: Ensure that the sinks for this query appear in metrics. 2025-03-31 17:39:24 +01:00
Geoffrey White
e49c1afe72 Rust: Add a few missing models. 2025-03-31 17:39:19 +01:00
Geoffrey White
03f94de3cb Rust: Add models. 2025-03-31 17:39:15 +01:00
Geoffrey White
9409cd6ed7 Rust: Prototype query. 2025-03-31 17:39:11 +01:00
Geoffrey White
ae555f2f2e Rust: Add a test for uncontrolled allocation size. 2025-03-31 17:37:21 +01:00
Arthur Baars
ec53b189b6 Merge pull request #19168 from github/aibaars/fix-changenote-file
Actions: rename changenote file
2025-03-31 18:28:52 +02:00
Arthur Baars
bcd038c291 Actions: rename changenote file 2025-03-31 18:14:44 +02:00
idrissrio
9ec7f3c9a5 C++: add test for calling conventions 2025-03-31 17:45:44 +02:00
idrissrio
f83f14bab2 C++: add calling convention specifier class 2025-03-31 17:44:56 +02:00
Paolo Tranquilli
f5d6fd081d Rust: introduce upgrades/downgrades infrastructure 2025-03-31 16:49:45 +02:00
yoff
e7bb47f335 ruby: add MaD model for permissions needed by actions
Use this to suggest minimal set of nedded permissions
2025-03-31 16:48:37 +02:00
Arthur Baars
92cfb6ea15 Merge pull request #19161 from github/aibaars/merge-3.17
Merge rc/3.17 into main
2025-03-31 16:09:44 +02:00
Asger F
149ec20758 JS: Add comment about internal edge 2025-03-31 15:39:09 +02:00
Asger F
f64bdccd6d Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2025-03-31 15:30:59 +02:00
Chris Smowton
aaaa7f4582 Merge pull request #19135 from smowton/smowton/admin/test-gradle-bom-downloads
Java: add test exercising Gradle download pruning
2025-03-31 14:13:30 +01:00
Chris Smowton
d8f7f182a9 Change note 2025-03-31 13:36:23 +01:00
Chris Smowton
bc7bed42bd Java: add test exercising Gradle download pruning 2025-03-31 13:36:22 +01:00
Arthur Baars
e80441051f Merge remote-tracking branch 'upstream/rc/3.17' into 'main' 2025-03-31 14:16:02 +02:00
Paolo Tranquilli
279e9e2d70 Merge pull request #19137 from github/redsun82/rust-renames
Rust: rename several entities to their more natural names
2025-03-31 14:03:34 +02:00
Michael Nebel
8e1282bfde C#: Improve downgrade script. 2025-03-31 13:53:51 +02:00
Anders Schack-Mulligen
01275aa073 Merge pull request #19158 from aschackmull/misc/accept-expected-swift
Misc: Add another path prefix to accept-expected-changes-from-ci.py
2025-03-31 13:28:00 +02:00
Paolo Tranquilli
87dc4cd101 Rust: accept test changes 2025-03-31 13:19:23 +02:00
Michael Nebel
e30fed6eec C#: Improve upgrade script. 2025-03-31 13:17:10 +02:00
Chris Smowton
31ccd658d2 Merge pull request #19152 from smowton/smowton/admin/test-mirrorof-rewriting
Java buildless: add buildless-maven variant with a wildcard mirrorOf spec
2025-03-31 12:14:08 +01:00
Paolo Tranquilli
80707678b6 Rust: accept test changes 2025-03-31 13:11:46 +02:00
Paolo Tranquilli
ece2f03f0f Rust: fix QL compilation errors after renames 2025-03-31 13:11:46 +02:00
Paolo Tranquilli
394f3eb1be Rust: fix ast generator handling renamed enum variants 2025-03-31 13:11:46 +02:00
Paolo Tranquilli
32f6acb985 Rust: fix compilation errors after rename 2025-03-31 13:11:45 +02:00
Paolo Tranquilli
1c89b5185a Rust: rename RecordFieldList to StructFieldList 2025-03-31 13:11:45 +02:00
Paolo Tranquilli
0b1f89a02e Rust: add ast-generator to pre-commit trigger of rust codegen 2025-03-31 13:11:45 +02:00
Paolo Tranquilli
0257b960dc Rust: make property_name work on post-processed class names 2025-03-31 13:11:44 +02:00
Paolo Tranquilli
24f547074f Rust: fix extractor compilation errors after renames 2025-03-31 13:11:44 +02:00
Paolo Tranquilli
b664504534 Rust: remove obsolete expected files 2025-03-31 13:11:41 +02:00
Paolo Tranquilli
8bfc1c424e Rust: rename several entities using more accepted names 2025-03-31 13:07:43 +02:00
Paolo Tranquilli
1eb51c7a2f Merge pull request #19063 from github/redsun82/codegen-rename-dbscheme
Codegen: add `ql.db_table_name` property pragma
2025-03-31 12:01:35 +02:00
Anders Schack-Mulligen
dad2be0286 Misc: Add another path prefix to accept-expected-changes-from-ci.py 2025-03-31 11:58:56 +02:00
Anders Schack-Mulligen
56c46d74f9 Java/Rust/Swift: Accept qltest changes. 2025-03-31 11:44:37 +02:00
Anders Schack-Mulligen
9a8ab2d45b Update misc/scripts/stageoverlap.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-03-31 11:28:29 +02:00
Anders Schack-Mulligen
8a67e4fddc Misc: Add stage overlap script 2025-03-31 11:20:40 +02:00
Anders Schack-Mulligen
a6a694dec6 C++: Use DataFlowIntegration in IteratorFlow. 2025-03-31 10:49:43 +02:00
Anders Schack-Mulligen
aaa7e4cf95 C++: Def is only used in defToNode, which doesn't include phi reads nodes. 2025-03-31 10:49:43 +02:00
Anders Schack-Mulligen
133f08784f C++: Eliminate dead code, uncertain is always false. 2025-03-31 10:49:42 +02:00
Anders Schack-Mulligen
b4daba30a5 SSA: Remove dead code. 2025-03-31 10:49:10 +02:00
Anders Schack-Mulligen
70e53c2f8b SSA: Push includeWriteDefsInFlowStep constraint into newtype. 2025-03-31 10:49:10 +02:00
Anders Schack-Mulligen
ca6444ce98 VariableCapture: Replace phi-read reference with SSA data flow integration module. 2025-03-31 10:49:09 +02:00
Anders Schack-Mulligen
e8e9403b4c Merge pull request #19093 from aschackmull/java/caching
Java: Adjust caching of BasicBlocks, BaseSSA, and CompileTimeConstants
2025-03-31 10:48:12 +02:00
Napalys Klicius
4572376e9a Merge pull request #19143 from Napalys/js/fs-extra-missing
JS: Modeling of `fs-extra` functions
2025-03-31 10:35:45 +02:00
Napalys Klicius
de8a3289e2 Merge pull request #19118 from Napalys/js/hana_db_client
JS: support `hana` db client
2025-03-31 10:35:11 +02:00
Asger F
ee867e99c7 Merge pull request #19117 from lcartey/lcartey/support-sap-json-formats
JavaScript: Add support for indexing additional SAP related JSON files
2025-03-31 10:30:11 +02:00
Anders Schack-Mulligen
a8b19d2b21 Merge pull request #19147 from aschackmull/ssa/writedef-source-refactor
Ssa: Refactor data flow integration to make the input signature simpler
2025-03-31 10:07:09 +02:00
Michael Nebel
1c93e53fb7 Merge pull request #19142 from microsoft/csharp-update-MaD-Uri-upstream
csharp update MaD for System.Uri
2025-03-31 08:32:52 +02:00
Tom Hvitved
4dfe759d23 Merge pull request #19113 from github/aibaars/crate-graph-reexport
Rust: crate_graph: generate 'use' statements for re-exported items
2025-03-30 20:16:22 +02:00
Napalys
32d6ac8da7 Add test case to ensure exec calls without middleware injection into Express are not flagged. 2025-03-30 14:09:15 +02:00
Chris Smowton
d374b24d6f Java buildless: add buildless-maven variant with a wildcard mirrorOf spec
This should get rewritten to exclude the buildless repository.
2025-03-28 21:26:28 +00:00
Arthur Baars
ec9fe8079e Rust: add tests for re-export statements 2025-03-28 17:12:43 +01:00
Arthur Baars
d84baaa0f8 Rust: implement Use::toString 2025-03-28 17:12:42 +01:00
Arthur Baars
c135af2300 Rust: crate_graph: generate 'use' statements for re-exported items 2025-03-28 17:12:32 +01:00
Taus
840abbf5b1 Merge pull request #18956 from github/tausbn/python-more-special-method-query-refactoring
Python: Modernize special method query
2025-03-28 17:11:24 +01:00
Geoffrey White
4a76b5b3db Rust: Accept consistency check failures. 2025-03-28 15:40:18 +00:00
Paolo Tranquilli
4ff06e49a8 Merge branch 'main' into redsun82/codegen-rename-dbscheme 2025-03-28 16:17:25 +01:00
Taus
6674288fd2 Python: Update test cases
Adds a comment explaining why we no longer flag the indirect tuple
example.
Also adds a test case which _would_ be flagged if not for the type
annotation.
2025-03-28 15:12:39 +00:00
Tamas Vajk
32448c14bd Adjust expected test file 2025-03-28 16:04:39 +01:00
Tamas Vajk
72fb6ed078 Restrict name based property lookup to opened component types 2025-03-28 16:04:39 +01:00
Edward Minnix III
d601c26355 [change-note] Blazor parameter passing string literal 2025-03-28 16:04:38 +01:00
Edward Minnix III
3d0a85b3cd Add test case using string literal in property name 2025-03-28 16:04:37 +01:00
Edward Minnix III
52b889f008 Support when a property is specified by a string literal instead of a nameof expression
In earlier versions of the Razor generator, a string literal was used
instead of a `nameof` expression in order to indicate the name of the
property being modified. This means we need to look up the property by
name instead of using a more explicit access.
2025-03-28 16:04:36 +01:00
Tamás Vajk
342d4a6982 Merge pull request #19122 from tamasvajk/tamasvajk/blazor/parameter-passing-jumpnode
C#: Blazor: Add non-local jump node for parameter passing
2025-03-28 16:03:54 +01:00
Joe Farebrother
43567664bf Merge pull request #18845 from joefarebrother/python-qual-file-not-closed
Python: Modernize File Not Always Closed query
2025-03-28 14:47:38 +00:00
Tom Hvitved
605cf35970 Rust: More path resolution improvements 2025-03-28 15:32:20 +01:00
Paolo Tranquilli
01a69bffbe Merge branch 'main' into redsun82/codegen-rename-dbscheme 2025-03-28 15:06:08 +01:00
Paolo Tranquilli
96f7dc7eb4 Merge pull request #19083 from github/redsun82/rust-analyzer-update
Rust: update rust-analyzer from `0.0.266` to `0.0.270`
2025-03-28 15:04:09 +01:00
Napalys
45c8ec96df Added test cases for hana db additional sources. 2025-03-28 15:02:03 +01:00
Napalys
d0e2aa8192 Added sources from hana db as MaD. 2025-03-28 14:55:17 +01:00
Michael Nebel
00753a1fe4 C#: Address review comments. 2025-03-28 14:41:59 +01:00
Napalys
f3af23e855 Refactored hana's DB client to use GuardedRouteHandler, improving precision. 2025-03-28 13:58:37 +01:00
Simon Friis Vindum
884c828452 Merge pull request #19102 from paldepind/rust-ti-refactor
Shared, type inference: Add inference for type parameters with constraints (base type mentions)
2025-03-28 13:58:16 +01:00
Geoffrey White
ed14b37964 Merge branch 'main' into deallocation 2025-03-28 12:44:46 +00:00
Simon Friis Vindum
989c14485d Rust: Minor doc tweaks based on PR comments 2025-03-28 13:39:42 +01:00
Paolo Tranquilli
76b1349068 Merge branch 'main' into redsun82/rust-analyzer-update 2025-03-28 13:36:48 +01:00
Anders Schack-Mulligen
0d1ac7789b SSA/Ruby: Address review comments. 2025-03-28 13:27:56 +01:00
Napalys Klicius
f7264d82d4 Merge branch 'main' into js/hana_db_client 2025-03-28 13:21:15 +01:00
Napalys
75b4d1b771 Applied copilot suggestions. 2025-03-28 13:19:11 +01:00
Napalys
769fe75d82 Added change note. 2025-03-28 13:07:24 +01:00
Napalys
495af56ab5 Added NodeJSFileSystemVectorWrite class for vectored write. 2025-03-28 13:07:23 +01:00
Napalys
e0c6cbb1b7 Added test cases for writev and writevSync. 2025-03-28 13:07:21 +01:00
Napalys
e63e170ac2 Added support for readv and readvSync functions in NodeJSFileSystemAccessRead class . 2025-03-28 13:07:20 +01:00
Napalys
6e7214747c Added test cases for readv and readvSync 2025-03-28 13:07:14 +01:00
Simon Friis Vindum
623bc232bf Rust: Address PR comments 2025-03-28 13:04:55 +01:00
Jeroen Ketema
86ecef6481 Merge pull request #19144 from jketema/dollar-escape
C++: Escape any `$` - specifically in `$@` - coming from error messages
2025-03-28 12:40:08 +01:00
Geoffrey White
ce7a0fd094 Rust: Test for sinks inside sources. 2025-03-28 11:12:10 +00:00
Anders Schack-Mulligen
5a986f5327 SSA: Remove empty predicates and dead code. 2025-03-28 12:00:38 +01:00
Anders Schack-Mulligen
308d15401f C++: Add ssaDefHasSource. 2025-03-28 11:57:30 +01:00
Anders Schack-Mulligen
6e9ebca977 C#: Switch from ssaDefAssigns/ssaDefInitializesParam to ssaDefHasSource. 2025-03-28 11:57:29 +01:00
Anders Schack-Mulligen
d8e14a6b55 JS: Add ssaDefHasSource. 2025-03-28 11:57:29 +01:00
Anders Schack-Mulligen
25297cb2b6 Ruby: Switch from ssaDefAssigns/ssaDefInitializesParam to WriteDefSourceNode. 2025-03-28 11:57:28 +01:00
Anders Schack-Mulligen
8aedd63b9e Rust: Add ssaDefHasSource. 2025-03-28 11:57:28 +01:00
Anders Schack-Mulligen
dafed9f465 Rust: Remove dead code. 2025-03-28 11:57:27 +01:00
Anders Schack-Mulligen
4c420c5bae Java: Switch from ssaDefAssigns/ssaDefInitializesParam to ssaDefHasSource. 2025-03-28 11:57:27 +01:00
Anders Schack-Mulligen
1ded4df3fd SSA: Add an alternative to ssaDefAssigns/ssaDefInitializesParam. 2025-03-28 11:57:26 +01:00
Anders Schack-Mulligen
0c74f21107 Merge pull request #19044 from aschackmull/ssa/useuse-trim
Ssa: Trim the use-use relation to skip irrelevant nodes
2025-03-28 11:55:34 +01:00
Tom Hvitved
f2f5739cc7 Merge pull request #19123 from hvitved/rust/path-resolution-crate-non-source
Rust: Also resolve `crate` paths in non-source files
2025-03-28 11:45:36 +01:00
Idriss Riouak
2a78211dde Merge pull request #19087 from github/idrissrio/preprocessor-multiline
C++: Add QL Tests for Multiline Directive Support
2025-03-28 11:02:19 +01:00
Jeroen Ketema
8dbd81b296 C++: Add test for $` escaping 2025-03-28 10:57:23 +01:00
Anders Schack-Mulligen
c6cee489e4 SSA: Address review comments. 2025-03-28 10:53:03 +01:00
Jeroen Ketema
5727c9137f C++: Escape any $ - specifically in $@ - coming from error messages 2025-03-28 10:51:11 +01:00
Asger F
7904db0f9a Merge pull request #19132 from asgerf/js/guarded-route-handler-token
JS: Add GuardedRouteHandler access path component
2025-03-28 10:47:10 +01:00
Arthur Baars
eceeab1c19 Merge pull request #19139 from github/aibaars/rust-clear-text-logging
Rust: fix CleartextLogging query
2025-03-28 10:23:25 +01:00
Asger F
951b48adfe Revert "JS: Add bogus model for testing"
This reverts commit 2460874f47.
2025-03-28 09:24:49 +01:00
Tom Hvitved
1a75c0506f Merge pull request #19128 from hvitved/csharp/pre-update-unique
C#: Make `getPreUpdateNode` Unique Again
2025-03-28 09:19:27 +01:00
Asger F
b834ffe246 JS: Fix a bad join order 2025-03-28 09:14:40 +01:00
Asger F
1ad471cb32 JS: Track through spread/rest params in API graphs 2025-03-28 09:14:36 +01:00
Asger F
ff99d5c688 JS: Add test for API graph through spread args 2025-03-28 09:13:06 +01:00
Napalys
e1bf054056 Added support for lutimes, opendir, and statfs functions from fs-extra. 2025-03-28 08:37:30 +01:00
Napalys
55c74b2bac Added support for emptydir functions from fs-extra. 2025-03-28 08:37:28 +01:00
Napalys
e386448f60 Added support for missing rm functions from fs-extra 2025-03-28 08:37:22 +01:00
Napalys
7a08f32e16 Added support for cp functions from fs-extra. 2025-03-28 08:36:26 +01:00
Owen Mansel-Chan
f209f53369 Merge pull request #19141 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-03-28 07:26:57 +00:00
Napalys
96a550582b Added test cases for fs-extra missing features. 2025-03-28 08:26:31 +01:00
Lindsay Simpkins
cc76cdb795 rename change note file 2025-03-28 00:27:34 -04:00
Lindsay Simpkins
209f2f0713 csharp update MaD for System.Uri 2025-03-27 23:41:55 -04:00
github-actions[bot]
ed3dc56ea0 Add changed framework coverage reports 2025-03-28 00:22:03 +00:00
Taus
68668b8e22 Python: Fix grammar in change note 2025-03-27 23:23:29 +01:00
Asger F
2460874f47 JS: Add bogus model for testing 2025-03-27 20:13:27 +01:00
Arthur Baars
7fc7b7cc04 Rust: fix CleartextLogging query 2025-03-27 18:38:57 +00:00
Arthur Baars
6dff6826f0 Revert "Rust: accept test changes for now"
This reverts commit bf32acc198.
2025-03-27 18:33:00 +00:00
Owen Mansel-Chan
dc242da4be Merge pull request #19090 from owen-mc/review/egregius313/18902
Go: Add `database` source models for the `squirrel` package (#2)
2025-03-27 15:54:25 +00:00
Joe Farebrother
2fd9b16736 Attempt performance improvement for fileLocalFlow 2025-03-27 15:45:38 +00:00
Napalys Klicius
32369dab7d Merge pull request #19124 from Napalys/js/hapi_upgrade
JS: Support for newer version of `Hapi` - `@hapi/hapi`
2025-03-27 16:42:51 +01:00
Taus
980c7d83da Python: Add change note 2025-03-27 15:33:00 +00:00
Taus
f601f4ad9b Python: Update test expectations
As we're no longer tracking tuples across function boundaries, we lose
the result that related to this setup (which, as the preceding commit
explains, lead to a lot of false positives).
2025-03-27 15:31:28 +00:00
Taus
2dcd7895ec Python: Modernise py/mixed-tuple-returns
Removes the dependence on points-to in favour of an approach based on
(local) data-flow.

I first tried a version that used type tracking, as this more accurately
mimics the behaviour of the old query. However, I soon discovered that
there were _many_ false positives in this setup. The main bad pattern I
saw was a helper function somewhere deep inside the code that both
receives and returns an argument that can be tuples with different sizes
and origins. In this case, global flow produces something akin to a
cartesian product of "n-tuples that flow into the function" and
"m-tuples that flow into the function" where m < n.

To combat this, I decided to instead focus on only flow _within_ a given
function (and so local data-flow was sufficient).

Additionally, another class of false positives I saw was cases where the
return type actually witnessed that the function in question could
return tuples of varying sizes. In this case it seems reasonable to not
flag these instances, since they are already (presumably) being checked
by a type checker.

More generally, if you've annotated the return type of the function with
anything (not just `Tuple[...]`), then there's probably little need to
flag it.
2025-03-27 15:27:42 +00:00
Tamas Vajk
42278eb6cf Add imports for specific jump nodes 2025-03-27 16:07:09 +01:00
Tom Hvitved
f6ac82aff0 Rust: Add more path resolution tests 2025-03-27 15:54:57 +01:00
Paolo Tranquilli
cf63dae608 Merge branch 'main' into redsun82/codegen-rename-dbscheme 2025-03-27 15:12:16 +01:00
Owen Mansel-Chan
8bc70be3c7 Address review comments 2025-03-27 13:53:09 +00:00
Asger F
e52bea630a JS: Add caveat about precision issue 2025-03-27 14:27:00 +01:00
Simon Friis Vindum
e2ed848dbb Merge pull request #19130 from paldepind/rust-type-alias-string
Rust: Implement toString on type aliases and add docs
2025-03-27 14:22:46 +01:00
Asger F
ed50343cc2 Merge pull request #19077 from asgerf/js/jsdoc-name-tokens
JS: Separate JSDoc qualified names into individual identifiers
2025-03-27 14:22:11 +01:00
Asger F
7de6a1e1c5 JS: Add documentation and example 2025-03-27 14:21:06 +01:00
Asger F
13d2453a45 JS: Add GuardedRouteHandler access path component 2025-03-27 13:59:41 +01:00
Geoffrey White
9ae271a7d1 Rust: Fix incidentally affected test merge conflict. 2025-03-27 12:55:36 +00:00
Geoffrey White
4e496fe7b2 Rust: Lets just not model 'drop' incorrectly, for now. 2025-03-27 12:25:08 +00:00
Napalys Klicius
e69929ebc6 Update javascript/ql/lib/change-notes/2025-03-26-hana-db-client.md
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2025-03-27 13:01:09 +01:00
Simon Friis Vindum
533fdcf332 Rust: Remove unnecessary seperator 2025-03-27 12:56:54 +01:00
Napalys Klicius
fdea22fbc3 Merge pull request #19129 from Napalys/js/readfile_async
JS: Add support for `async` `readFile`
2025-03-27 12:34:39 +01:00
Napalys Klicius
261d28a591 Merge pull request #19099 from Napalys/js/axios_missing_methods
JS: Added support for missing `axios` methods
2025-03-27 12:03:11 +01:00
Asger F
441ca1c862 JS: Change compatibility of upgrade script to partial 2025-03-27 11:54:01 +01:00
Asger F
86ae8012be Expand downgrade script 2025-03-27 11:52:11 +01:00
Asger F
cccea919b4 JS: Update stats file 2025-03-27 11:52:10 +01:00
Asger F
ab1f929228 JS: Add downgrade script 2025-03-27 11:52:08 +01:00
Asger F
02ee8cfe2d JS: Add upgrade script 2025-03-27 11:51:27 +01:00
Asger F
da269c6fb1 JS: More test updates 2025-03-27 11:51:25 +01:00
Asger F
50202d574f JS: Update some deprecated calls to getName() 2025-03-27 11:51:24 +01:00
Asger F
c8817d9667 JS: Parse with proper locations 2025-03-27 11:51:23 +01:00
Asger F
cc2bec0808 JS: Ensure correct value is used in parseNameExpression()
The call to expect() below here updates 'token' and 'value' to that of the NEXT token (not the name).

The code happened to work because the 'value' field is only updated if a token with a relevant value is found. E.g. if a name token could be followed by another name, then we would have seen the wrong name here.
2025-03-27 11:51:21 +01:00
Asger F
6868f66108 JS: Restrict size of hasNameParts
Test updates look OK. Some intermediate results are omitted but the
qualified name of the final type names are still present.
2025-03-27 11:51:20 +01:00
Asger F
b1554443d8 JS: Update TRAP output 2025-03-27 11:51:19 +01:00
Asger F
328bf753b4 JS: Benign test updates 2025-03-27 11:51:17 +01:00
Asger F
fa53ff9f3e JS: Update extractor version string 2025-03-27 11:51:16 +01:00
Asger F
3a6089740e JS: Separate JSDoc qualified names into individual identifiers 2025-03-27 11:51:14 +01:00
Asger F
c61454b5ca JS: Remove unused 'spec' field 2025-03-27 11:51:13 +01:00
Simon Friis Vindum
0d75054955 Rust: Implement toString on type aliases and add docs 2025-03-27 11:34:39 +01:00
Michael B. Gale
2aee47b257 Merge pull request #18850 from github/mbg/csharp/inject-proxy-urls
C#: Automatically use configured private registry feeds
2025-03-27 10:11:05 +00:00
Geoffrey White
8598d619f2 Rust: Add a test case involving a Drop method. 2025-03-27 09:39:25 +00:00
Arthur Baars
9dd7b20db7 Merge pull request #18960 from github/aibaars/rust-tainted-path
Rust: TaintedPath query
2025-03-27 10:37:36 +01:00
Tamas Vajk
d824d24c49 Improve code quality 2025-03-27 10:31:48 +01:00
Napalys Klicius
d771a91c9c Update javascript/ql/lib/change-notes/2025-03-26-async-fileRead.md
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2025-03-27 10:21:23 +01:00
Geoffrey White
d1a0237e87 Rust: Correct a few details in the test. 2025-03-27 09:20:25 +00:00
Michael Nebel
0a0ec180ec Merge pull request #19114 from michaelnebel/csharp/modelgenparammodifiers
C#: Correct printing of returns via out/ref parameters in model generation.
2025-03-27 10:03:27 +01:00
Tamás Vajk
3fbfc41814 Merge pull request #18974 from tamasvajk/tamasvajk/rename-ccr-suite-quality
Rename the CCR query suite to code-quality
2025-03-27 10:01:48 +01:00
Tamas Vajk
b5684fd5b2 Change ccr suite name to code-quality in python script 2025-03-27 08:36:53 +01:00
Tamas Vajk
34e8318797 Rename the CCR query suite to code-quality 2025-03-27 08:36:53 +01:00
Paolo Tranquilli
d4b2ec09b6 Merge branch 'main' into redsun82/rust-analyzer-update 2025-03-26 17:30:52 +01:00
Geoffrey White
c84e2cd7cb Rust: Reduce the workaround (fixes duplicate results). 2025-03-26 15:40:45 +00:00
Geoffrey White
0a04191a61 Rust: Effect of merging main (duplicate results). 2025-03-26 15:06:03 +00:00
Geoffrey White
56f330d545 Merge branch 'main' into deallocation 2025-03-26 14:58:32 +00:00
Marco Gario
288fcb6092 Update CWE-829 description for clarity 2025-03-26 15:53:20 +01:00
idrissrio
9d2e0c5f21 Merge branch 'main' into idrissrio/preprocessor-multiline 2025-03-26 15:08:34 +01:00
idrissrio
9af65001b3 C++: accept changes after C++ extractor preprocessor fix 2025-03-26 15:08:04 +01:00
Michael Nebel
8bda7ce6be C#: Update model generator expected test output. 2025-03-26 15:07:44 +01:00
Michael Nebel
8763d18c91 C#: Correct printing of out and ref notes in the model generator. 2025-03-26 15:06:26 +01:00
Michael Nebel
bcefdc8893 C#: Add model generator test cases with in/out parameters. 2025-03-26 15:06:13 +01:00
Tom Hvitved
023ffe22a0 C#: Make getPreUpdateNode Unique Again 2025-03-26 14:42:00 +01:00
Napalys
bf9a21fce2 Added change note 2025-03-26 14:27:13 +01:00
Napalys
200bf391ce Enhance NodeJSLib data flow handling through await. 2025-03-26 14:24:52 +01:00
Napalys
762ca2f8f5 Added test case with async readFile, currently not flagged. 2025-03-26 14:21:44 +01:00
Tamas Vajk
4e37e5add5 Add change note 2025-03-26 13:50:39 +01:00
Marco Gario
b1737858fa UntrustedCheckout: Try and differentiate between two versions of the rule 2025-03-26 12:49:48 +00:00
Arthur Baars
bf76505880 Rust: address comments 2025-03-26 13:28:44 +01:00
Marco Gario
29a23a3d20 Update UseOfKnownVulnerableAction.ql
Name should not end in a `.`
2025-03-26 13:28:34 +01:00
Erik Krogh Kristensen
a0c3176dd6 Merge branch 'main' into lcartey/support-sap-json-formats 2025-03-26 12:15:54 +01:00
Owen Mansel-Chan
c8a1ad6b28 Merge pull request #19120 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-03-26 10:58:19 +00:00
Napalys
a78e0e914f Added change note. 2025-03-26 11:45:25 +01:00
Tamas Vajk
68f96d39d2 Make working directory name the same on all OS 2025-03-26 11:42:59 +01:00
Napalys
ae645e49ba Added support for @hapi/hapi server. 2025-03-26 11:41:11 +01:00
Napalys
649b4e07e2 Added test cases for @hapi/hapi 2025-03-26 11:35:58 +01:00
Tom Hvitved
284df7fcf3 Rust: Also resolve crate paths in non-source files 2025-03-26 11:29:34 +01:00
Tamas Vajk
f6968af3ae Add expected XSS test results 2025-03-26 11:03:32 +01:00
Owen Mansel-Chan
73348f2fd9 Merge branch 'main' into workflow/coverage/update 2025-03-26 09:59:26 +00:00
Joe Farebrother
d23c3b8a74 Revert manual magic
This appeared to cause timeouts on DCA.
2025-03-26 09:23:49 +00:00
Óscar San José
df721f8d1a Merge pull request #19119 from github/oscarsj/deprecate-ubuntu-20
Replace occurences of ubuntu-20 by ubuntu-22 in .github/workflows
2025-03-26 09:42:20 +01:00
idrissrio
6c8cfc666a Merge branch 'main' into idrissrio/preprocessor-multiline 2025-03-26 09:41:40 +01:00
idrissrio
148ffe8519 C++: accept changes after C++ extractor preprocessor fix 2025-03-26 09:41:20 +01:00
Napalys
62ab7f50d6 Added change note. 2025-03-26 09:33:59 +01:00
Tamás Vajk
b21968c495 Merge pull request #18947 from tamasvajk/tamasvajk/java_empty_method
Java: Add new quality query to detect empty methods
2025-03-26 09:33:47 +01:00
Paolo Tranquilli
2a81cc9567 Merge branch 'main' into redsun82/rust-analyzer-update 2025-03-26 09:33:38 +01:00
Tom Hvitved
212884cd9d Merge pull request #19106 from hvitved/rust/reverse-post-update-steps
Rust: Add reverse post-update flow steps
2025-03-26 09:30:26 +01:00
Erik Krogh Kristensen
14989f1cc6 Merge branch 'main' into lcartey/support-sap-json-formats 2025-03-26 09:07:21 +01:00
Tom Hvitved
f45eca77fa Address review comments 2025-03-26 09:03:22 +01:00
Tom Hvitved
72028c034e Rust: Add reverse post-update flow steps 2025-03-26 09:03:18 +01:00
Tom Hvitved
fcb1d9433a Rust: Add more data flow tests 2025-03-26 09:02:23 +01:00
Tom Hvitved
278d251dc1 Merge pull request #19107 from hvitved/rust/mad-argument-source
Rust: Support `Argument[x]` MaD source definitions
2025-03-26 09:02:06 +01:00
Tom Hvitved
b4926475d3 Address review comment 2025-03-26 08:44:03 +01:00
github-actions[bot]
abbd720704 Add changed framework coverage reports 2025-03-26 00:22:12 +00:00
Óscar San José
b6a0a5c6bf Replace occurences of ubuntu-20 by ubuntu-22 in .github/workflows 2025-03-25 18:59:16 +01:00
Geoffrey White
3ad4de400f Merge pull request #19067 from geoffw0/convtest
Rust: Add a couple of test cases for data flow through conversions
2025-03-25 17:44:29 +00:00
Napalys
4cdc40d115 Added SQL injection detection for exec method embeded Express client from hdbext. 2025-03-25 18:39:54 +01:00
Paolo Tranquilli
7cfed3c4a7 Merge branch 'main' into redsun82/rust-analyzer-update 2025-03-25 18:29:39 +01:00
Luke Cartey
8814077c76 Add support for additional SAP JSON formats. 2025-03-25 17:01:37 +00:00
Paolo Tranquilli
9dc9f79172 Merge pull request #19110 from github/redsun82/rust-fix-rc.17
Rust: accept test changes for now
2025-03-25 17:54:47 +01:00
Tamás Vajk
36ed96f8e6 Merge pull request #19070 from tamasvajk/update-complog
C#: Update CompLog dependency to 0.9.8
2025-03-25 16:11:01 +01:00
Aditya Sharad
fe7660f396 Merge pull request #19085 from JarLob/nonpriv
Fix potentially privileged pull request medium query
2025-03-25 20:25:31 +05:30
Nora Dimitrijević
222253f6f5 Merge pull request #19079 from d10c/d10c/rtjo-language-tests
CI: Add RTJO tests for Go and Ruby
2025-03-25 15:51:07 +01:00
Simon Friis Vindum
520e27ccfa Shared: Fix typos in qldoc 2025-03-25 15:49:03 +01:00
Simon Friis Vindum
efcffc55e3 Merge branch 'main' into rust-ti-refactor 2025-03-25 15:44:39 +01:00
Napalys
7cc0634f57 Added createProcStatement as potential sql sink. 2025-03-25 14:50:38 +01:00
Napalys
0285cb6c7a Added @sap/hdbext.loadProccedure as sql sink. 2025-03-25 14:48:40 +01:00
Nora Dimitrijević
659eaf88ff Go: add RTJO language tests CI job
Triggered by adding label "Run: RTJO Language Tests"
2025-03-25 14:46:06 +01:00
Nora Dimitrijević
ed801e7ab4 Ruby: add RTJO language test CI job
Triggered by adding "Run: RTJO Language Tests" label.
2025-03-25 14:46:06 +01:00
Napalys
e595def8b0 Modeled execute as potential hana's sink. 2025-03-25 14:44:37 +01:00
Napalys
d28af9508a Added sink models for hana's client prepare function. 2025-03-25 14:42:27 +01:00
Napalys
9229962096 Add sink model for SQL injection detection in exec clients. 2025-03-25 14:36:13 +01:00
Napalys
032cfc134f Added test cases for hana clients. 2025-03-25 14:29:06 +01:00
Simon Friis Vindum
54e7bb7f1a Rust: Fix a bad join by adding bindingset to resolveTypeMentionRoot 2025-03-25 14:26:24 +01:00
Anders Schack-Mulligen
8749bdb979 C++: Accept test changes. 2025-03-25 13:58:52 +01:00
Anders Schack-Mulligen
d5d0274ce7 Java/SSA: Keep proper distinction between cached stages. 2025-03-25 13:43:55 +01:00
Michael B. Gale
fe1c098624 C#: Accept changes to .expected files 2025-03-25 12:39:37 +00:00
Anders Schack-Mulligen
4d04391b70 C++: Keep all phi input back edges. 2025-03-25 13:21:13 +01:00
Paolo Tranquilli
3d405f6d61 Rust: accept test changes for now 2025-03-25 12:44:22 +01:00
Anders Schack-Mulligen
ae47339d1a Rust: Accept test changes. 2025-03-25 12:31:05 +01:00
Anders Schack-Mulligen
e7e5f75949 Ruby: Accept test changes. 2025-03-25 12:31:04 +01:00
Anders Schack-Mulligen
f27e8199a1 Java: Accept test changes. 2025-03-25 12:31:04 +01:00
Anders Schack-Mulligen
b3bea97320 C#: Accept test changes. 2025-03-25 12:31:03 +01:00
Anders Schack-Mulligen
0162b84d20 SSA: Fix a poor join-order and avoid SSA recomputation. 2025-03-25 12:31:03 +01:00
Anders Schack-Mulligen
36532bc58c SSA: Skip identity steps. 2025-03-25 12:31:02 +01:00
Anders Schack-Mulligen
4e2ad9712c SSA: Skip phi nodes with unique successor. 2025-03-25 12:31:02 +01:00
Anders Schack-Mulligen
669f9261f1 SSA: Skip irrelevant phi input nodes. 2025-03-25 12:31:01 +01:00
Anders Schack-Mulligen
c778bf6343 SSA: Rename SsaInputDefinitionExt 2025-03-25 12:31:01 +01:00
Anders Schack-Mulligen
7c82f51381 Java: Skip SSA definition nodes in data flow. 2025-03-25 12:31:01 +01:00
Anders Schack-Mulligen
5aa7029934 SSA: Add support for skipping WriteDefinitions in use-use. 2025-03-25 12:31:00 +01:00
Michael B. Gale
be95d335b7 C#: Obtain all feeds from source directory if there are no nuget.config files anywhere 2025-03-25 11:29:06 +00:00
Owen Mansel-Chan
c3bc6519fb Merge pull request #19053 from owen-mc/go/fp/log-type
Go: Fix false positives when logging using `%T`
2025-03-25 10:49:51 +00:00
Michael B. Gale
73ca2eb2c5 C#: Use allFeeds rather than explicitFeeds for RestoreProjects 2025-03-25 10:44:29 +00:00
Owen Mansel-Chan
0fbeef8f41 Remove model for method that doesn't exist 2025-03-25 10:33:23 +00:00
Owen Mansel-Chan
bf82a87a68 Rename model file to fix typo 2025-03-25 10:33:23 +00:00
Owen Mansel-Chan
bbed79cf58 Add squirrel to go.mod 2025-03-25 10:33:23 +00:00
Owen Mansel-Chan
09d69293b5 Fix package name in stub 2025-03-25 10:33:23 +00:00
Owen Mansel-Chan
1de15ec66d Fix signatures in comments 2025-03-25 10:33:23 +00:00
Ed Minnix
59ad30dea7 Change note 2025-03-25 10:33:23 +00:00
Ed Minnix
c5f5427d72 Add test for squirrel package 2025-03-25 10:33:23 +00:00
Ed Minnix
4ab5d3405c Add fake Source function and models 2025-03-25 10:33:23 +00:00
Ed Minnix
a8c3ef9500 Add squirrel models 2025-03-25 10:33:23 +00:00
Owen Mansel-Chan
6d61820c92 Merge pull request #19088 from owen-mc/review/egregius313/18913
Go: Add database source models for the github.com/couchbase/gocb package (#2)
2025-03-25 10:31:44 +00:00
Michael B. Gale
4d3b0246b5 C#: Do not manually add public feed when private registries are used 2025-03-25 10:14:03 +00:00
Michael B. Gale
d2b88ae5a8 C#: Rename overloaded CheckFeeds method and fix comment 2025-03-25 10:07:08 +00:00
Michael B. Gale
7cea2addda Apply suggestions from code review
Co-authored-by: Michael Nebel <michaelnebel@github.com>
2025-03-25 10:02:29 +00:00
Napalys Klicius
0689cf7f5e Update javascript/ql/lib/ext/axios.model.yml
Co-authored-by: Asger F <asgerf@github.com>
2025-03-25 10:56:01 +01:00
Napalys
9dcfe0e709 Added change note. 2025-03-25 10:55:44 +01:00
Napalys
1ee3fde214 Added support for axios.interceptors.response. 2025-03-25 10:55:34 +01:00
Napalys
20bb831ce9 Added test case for axios.interceptors.response with missing alert. 2025-03-25 10:55:14 +01:00
Napalys
10498bbaa4 Added support for axios.interceptors.request. 2025-03-25 10:54:56 +01:00
Napalys
ea181e4173 Added test case for axios.interceptors.request 2025-03-25 10:54:17 +01:00
Napalys
a3c84d9feb Added support for axios.create. 2025-03-25 10:45:09 +01:00
Napalys
8f2adb6543 Added test case for create. 2025-03-25 10:44:15 +01:00
Napalys
c0d848cdf1 Added support for getUri. 2025-03-25 10:43:54 +01:00
Napalys
f48a362d71 Added support for patchForm. 2025-03-25 10:42:57 +01:00
Napalys
7fe943d8b2 Added support for putForm. 2025-03-25 10:42:04 +01:00
Napalys
69fe251eac Add support for axios.postForm in ClientRequest. 2025-03-25 10:41:08 +01:00
Napalys
e79f4602b5 Added test for axios methods.
In particular for `postForm` `putForm` `patchForm` `getUri`.
2025-03-25 10:40:00 +01:00
Joe Farebrother
0fa70db4c2 Review suggestions - update comment and introduce manual magic to filelocalflow 2025-03-25 08:55:55 +00:00
Erik Krogh Kristensen
9d3d3deffa Merge pull request #19104 from michaelnebel/ql4ql/excludeprintastinlineexpect
QL4QL: Exclude PrintAst like tests from being reported as having missing InlineExpectations.
2025-03-25 09:42:22 +01:00
Napalys Klicius
f7026c29cc Merge pull request #19091 from Napalys/js/package_got
JS: `got` package modeling
2025-03-25 09:25:39 +01:00
Tom Hvitved
d6d3028e5a Rust: Support Argument[x] MaD source definitions 2025-03-25 09:08:40 +01:00
Tom Hvitved
cf1b19f7c4 Rust: Add test for MaD argument source 2025-03-25 09:06:56 +01:00
Simon Friis Vindum
06c8963f70 Shared: Infer types for type parameters with contraints 2025-03-25 09:03:44 +01:00
Simon Friis Vindum
831413b5ec Rust: Expand on type parameter bounds type inference test 2025-03-25 08:41:05 +01:00
Simon Friis Vindum
ba9edf8d25 Shared: Refactor type inference 2025-03-25 06:32:36 +01:00
Michael B. Gale
4448369323 C#: Check that private package registry feeds are reachable 2025-03-24 17:27:22 +00:00
Jami
7208604880 Merge pull request #19097 from jcogs33/jcogs33/metatdata-previous-id
Docs: add guidance for `previous-id` metadata
2025-03-24 13:19:29 -04:00
Michael B. Gale
92eab47def C#: Refactor CheckFeeds to have an overloaded variant that accepts a given set of feeds. 2025-03-24 17:15:49 +00:00
Michael B. Gale
d564529f3c C#: Change RestoreSettings to have general extraArgs parameter
This allows the string of package feeds to be constructed once and used repeatedly in the parallel restore loop as well.
2025-03-24 17:08:05 +00:00
Michael Nebel
be4c9d8815 Ql4Ql: Update test expected file. 2025-03-24 16:23:55 +01:00
Michael Nebel
7dda951a51 Ql4Ql: Exclude files named PrintAst.qlref and qlref files that uses a query with a PrintAst name from QlRefInlineExpectations. 2025-03-24 16:23:04 +01:00
Michael Nebel
2a8a8224f1 Ql4Ql: Add PrintAst test case for QlRefInlineExpectations. 2025-03-24 16:22:46 +01:00
Paolo Tranquilli
29b7acfddd Merge pull request #19101 from github/redsun82/rust-fix-main
Rust: accept test changes for now
2025-03-24 16:22:04 +01:00
Jami Cogswell
bea8ce3934 Docs: add previous-id property to metadata-for-codeql-queries.rst 2025-03-24 10:23:43 -04:00
idrissrio
9773652c9e Merge branch 'main' into idrissrio/preprocessor-multiline 2025-03-24 15:17:00 +01:00
idrissrio
13f4f48d27 C++: Accept changes after C++ extractor preprocessor fix 2025-03-24 15:16:26 +01:00
Tom Hvitved
0f1aee025c Merge pull request #19051 from hvitved/rust/path-resolution-cross-crate
Rust: Path resolution improvements
2025-03-24 14:14:12 +01:00
Napalys
cb14b4381e Applied copilot suggestions. 2025-03-24 14:05:28 +01:00
Paolo Tranquilli
bf32acc198 Rust: accept test changes for now 2025-03-24 13:43:27 +01:00
Jami Cogswell
0931ca473d Docs: switch to previous-id property instead of tag 2025-03-24 08:37:48 -04:00
Anders Schack-Mulligen
dc0ca1ac18 Java: Fix TC magic in SystemProperty. 2025-03-24 13:31:23 +01:00
Napalys
240b42bb76 Added change note. 2025-03-24 13:24:40 +01:00
Geoffrey White
82068a262d Rust: Further rephrasing. 2025-03-24 12:23:48 +00:00
Geoffrey White
363128f4ec Apply suggestions from code review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-03-24 12:21:51 +00:00
Napalys
2d6f5d1da4 Refactor ClientRequest to introduce GotInstance classes for improved handling of got instances and options retrieval. 2025-03-24 13:20:09 +01:00
Geoffrey White
e4cadf09ce Rust: Don't report excessive results for the same source. 2025-03-24 12:12:42 +00:00
Geoffrey White
b7044bdcde Rust: Add a test of repeat sinks. 2025-03-24 12:04:43 +00:00
Simon Friis Vindum
860ba2e120 Merge pull request #19081 from paldepind/rust-ti-tw
Rust: Adjustments to type inference
2025-03-24 13:00:27 +01:00
Geoffrey White
f582054ca4 Rust: Refactor the tests that have multiple control flow paths. 2025-03-24 11:56:32 +00:00
Michael Nebel
d9fb137909 C#: Add upgrade- and downgrade scripts. 2025-03-24 12:00:15 +01:00
Simon Friis Vindum
7dc49da6b0 Shared: Fix path in qldoc
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2025-03-24 11:38:15 +01:00
Tamás Vajk
a5fd2e923a Improve query documentation
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-03-24 11:03:43 +01:00
Tom Hvitved
3f1f37fd5f Address review comments 2025-03-24 10:53:38 +01:00
Tamás Vajk
03f93ddef5 Merge pull request #19050 from tamasvajk/tamasvajk/fix-fallback-restore
C#: Fix buildless fallback restore logic
2025-03-24 09:31:52 +01:00
Jami Cogswell
cb4e21d0e6 Docs: add guidance for previous-id tag 2025-03-23 19:29:20 -04:00
Geoffrey White
d1ef2b50fb Rust: Model futures::executor::block_on. 2025-03-21 16:51:10 +00:00
idrissrio
7a50ec157d Merge branch 'main' into idrissrio/preprocessor-multiline 2025-03-21 17:33:43 +01:00
idrissrio
3c54722a74 C++: Accept changes after C++ extractor preprocessor fix 2025-03-21 17:33:23 +01:00
Nick Rolfe
631ccdf380 Merge pull request #19092 from github/nickrolfe/comma-splice
Java: fix comma splice in alert message
2025-03-21 16:04:28 +00:00
Anders Schack-Mulligen
3c6db09039 Java: Cache the other compiletimeconstant value predicates 2025-03-21 15:53:26 +01:00
Anders Schack-Mulligen
e75ed5a085 Java: Merge BaseSSA cached stages. 2025-03-21 15:45:50 +01:00
idrissrio
5eda853de4 C++: Accept changes after C++ extractor preprocessor fix 2025-03-21 15:25:41 +01:00
Nick Rolfe
361fbba39b Java: fix comma splice in alert message 2025-03-21 14:23:32 +00:00
Anders Schack-Mulligen
33135330fd Java: Merge cached stages for BasicBlocks. 2025-03-21 15:21:25 +01:00
Napalys
f43510c9aa Added support for paginate. 2025-03-21 15:03:23 +01:00
Napalys
63193fa91c Improve URL handling in ClientRequest for extend() and Options 2025-03-21 15:02:34 +01:00
Napalys
99efb610d4 Enhance URL handling in ClientRequest for got Options 2025-03-21 15:01:43 +01:00
Napalys
b33f760765 Manage chain calls of extend. 2025-03-21 15:00:39 +01:00
Napalys
a58c4eb652 Added additional test cases for got package. 2025-03-21 15:00:35 +01:00
Michael Nebel
acec97db94 C#: Add change-note. 2025-03-21 13:32:44 +01:00
Michael Nebel
5ae7e5ddb3 C#: Update other test expected output files. 2025-03-21 13:23:11 +01:00
Michael Nebel
a73a61b8fa C#: Add PrintAst test for string interpolation expressions. 2025-03-21 13:04:43 +01:00
Michael Nebel
2ca5ec0032 C#: Add some string interpolation tests with alignment and formatting. 2025-03-21 13:04:40 +01:00
Michael Nebel
af6e1bda4c C#: Extract alignment and format clauses of string interpolation expressions. 2025-03-21 13:04:39 +01:00
Owen Mansel-Chan
f677ddda26 Update wording of change note (accepting review suggestion)
Co-authored-by: Michael B. Gale <mbg@github.com>
2025-03-21 11:26:50 +00:00
Owen Mansel-Chan
2790415772 Remove imports that aren't used 2025-03-21 11:16:46 +00:00
Owen Mansel-Chan
84872c8c7f Use depstubber for stubs (with manual edits)
I had to remove quite a few incorrect method declarations for promoted
methods.
2025-03-21 10:15:08 +00:00
mc
1f76793863 Merge branch 'main' into tamasvajk/java_empty_method 2025-03-21 10:01:10 +00:00
Paolo Tranquilli
bd201afa8e Rust: apply formatting and linting 2025-03-21 11:00:30 +01:00
Paolo Tranquilli
8f8fe2f8b6 Rust: silence warning by removing unused generated function 2025-03-21 10:59:39 +01:00
Owen Mansel-Chan
e44f7f946f Sort package paths in vendor/modules.txt 2025-03-21 09:45:50 +00:00
idrissrio
99d9b87b33 Merge branch 'main' into idrissrio/preprocessor-multiline 2025-03-21 10:28:24 +01:00
Joe Farebrother
a46c157e46 Add quality tag + tweak description 2025-03-21 09:24:54 +00:00
Napalys Klicius
7bd1c4d2ae Merge pull request #19060 from Napalys/js/apollo-server
JS: model `ApolloServer`
2025-03-21 10:00:31 +01:00
Paolo Tranquilli
7d312feffe Rust: add local copy of rust.ungrammar
This copy is injected by the existing `//rust/ast-generator:inject-sources`
target, and is useful for development.
2025-03-21 09:48:29 +01:00
Paolo Tranquilli
04f9694f89 Rust: drop extraction of anonymous canonical paths 2025-03-21 09:47:02 +01:00
idrissrio
878e621a38 Improved source location extraction for directive. 2025-03-21 09:46:54 +01:00
Napalys Klicius
803aacf9f0 Merge pull request #19068 from Napalys/js/superagent
JS: `superagent` modeling
2025-03-21 09:15:31 +01:00
Napalys Klicius
57f6225140 Update javascript/ql/lib/change-notes/2025-03-20-apollo-server.md
Co-authored-by: Asger F <asgerf@github.com>
2025-03-21 09:11:25 +01:00
Simon Friis Vindum
e0ef24154a Rust: Small tweaks to doc comments based on PR feedback 2025-03-21 08:30:14 +01:00
Paolo Tranquilli
fd84b67568 Merge pull request #19084 from github/aibaars/rust-analyzer-update
Rust: fix crate_graph.rs
2025-03-21 08:26:49 +01:00
Tamas Vajk
e20c46a14a Add change note 2025-03-21 08:24:22 +01:00
Aditya Sharad
b4524798b8 Merge pull request #19082 from smowton/smowton/admin/fix-codeql-alert
Avoid CodeQL alert against integration test
2025-03-21 02:33:54 +05:30
Jaroslav Lobačevski
fe7d9eeb23 Update actions/ql/lib/change-notes/2025-03-20.md
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-03-20 22:01:11 +01:00
Jaroslav Lobačevski
b85d4b590d move the change note to the correct directory 2025-03-20 20:29:35 +00:00
Jaroslav Lobačevski
5f63fc2048 Fix potentially privileged pull request medium query 2025-03-20 20:23:07 +00:00
Napalys Klicius
730580a59b Merge pull request #19049 from Napalys/js/underscore-string
JS: Modeling of `underscore.string` package
2025-03-20 19:11:24 +01:00
Napalys
7d40e449db Added change note. 2025-03-20 19:08:24 +01:00
Arthur Baars
cf8e270384 Rust: fix crate_graph.rs 2025-03-20 19:08:10 +01:00
Napalys
d61d038b9b Refactored SuperAgentUrlRequest to use API graph. 2025-03-20 18:17:28 +01:00
Napalys
401c6ea0f6 Added test case which is not detected by dataflow. 2025-03-20 18:17:27 +01:00
Paolo Tranquilli
fe7e1c0a6c Rust: solve all compilation errors but the ones related to the crate graph 2025-03-20 17:49:35 +01:00
Paolo Tranquilli
7cf3cac24a Rust: reinstate Variant as Addressable 2025-03-20 16:55:37 +01:00
Geoffrey White
91d273ad76 Rust: I think these generated models are correct. Accept them. 2025-03-20 15:52:08 +00:00
Paolo Tranquilli
ea11b08f28 Rust: rerun code generation 2025-03-20 16:51:35 +01:00
Chris Smowton
5892cdf456 Avoid CodeQL alert against integration test
This doesn't really matter since it's a dummy test server, but it's simpler to fix than to dismiss.
2025-03-20 15:49:21 +00:00
Owen Mansel-Chan
662af6e248 Update test expectations 2025-03-20 15:49:20 +00:00
Paolo Tranquilli
13370200cc Cargo: upgrade dependencies 2025-03-20 16:48:29 +01:00
Geoffrey White
98690f924a Rust: Incidental changes to other .expected files. 2025-03-20 15:39:03 +00:00
Simon Friis Vindum
b2fc4f80fb Rust: Adjustments to type inference 2025-03-20 16:38:06 +01:00
Paolo Tranquilli
12214b65a4 Rust: add forgotten expected file 2025-03-20 16:35:56 +01:00
Arthur Baars
b10a296a93 Rust: add more path-injection sinks 2025-03-20 16:30:47 +01:00
Paolo Tranquilli
b48d9a255e Rust: undo rename of Path::segment to Path::part 2025-03-20 16:30:35 +01:00
Asger F
d9c158923a Merge pull request #19069 from asgerf/js/jsdoc-parser
JS: Use StringBuilder when building up type name in JSDoc
2025-03-20 16:17:58 +01:00
Geoffrey White
c6c4e3cf16 Rust: Add another reference. 2025-03-20 15:16:17 +00:00
Owen Mansel-Chan
da8ae84422 Change change note to query change note 2025-03-20 15:08:09 +00:00
Owen Mansel-Chan
bc40a4289c Do not use full regex match for %T 2025-03-20 15:08:07 +00:00
Owen Mansel-Chan
f944ff4d78 Create getAValueFormattedMessageComponent 2025-03-20 15:08:06 +00:00
Owen Mansel-Chan
05a94807e1 Make comment clearer 2025-03-20 15:08:05 +00:00
Owen Mansel-Chan
bf78160830 Add change note 2025-03-20 15:08:03 +00:00
Owen Mansel-Chan
11ff0a08f3 Add log injection and cleartext logging tests for %T 2025-03-20 15:08:02 +00:00
Owen Mansel-Chan
646d28feeb Make cleartext logging tests more realistic 2025-03-20 15:08:00 +00:00
Owen Mansel-Chan
94c812cbe6 Convert cleartext logging tests to inline expectations 2025-03-20 15:07:59 +00:00
Owen Mansel-Chan
59d82b3b62 Make log injection tests more realistic 2025-03-20 15:07:57 +00:00
Owen Mansel-Chan
009e0e17b2 Don't consider arguments with %T as logger call components 2025-03-20 15:07:26 +00:00
Owen Mansel-Chan
f173305629 Add tests for %T (passing but marked SPURIOUS) 2025-03-20 15:05:55 +00:00
Geoffrey White
5e18e1be11 Rust: Autofix and US spelling. 2025-03-20 15:03:55 +00:00
Paolo Tranquilli
a762e518c6 Merge branch 'main' into redsun82/codegen-rename-dbscheme 2025-03-20 15:52:49 +01:00
Paolo Tranquilli
cd15fb3611 Merge pull request #19071 from github/redsun82/codegen-rust-ancestor-order
Rust: preserve ordering in rust generated code
2025-03-20 15:50:48 +01:00
Joe Farebrother
bdbdcf8bd8 Clean up charpred of WithStatement + fix a comment 2025-03-20 14:28:57 +00:00
Geoffrey White
5831c446d3 Rust: Add test cases for another situation I came across. 2025-03-20 14:26:15 +00:00
Geoffrey White
7ecba71166 Rust: Add .qhelp. 2025-03-20 14:26:14 +00:00
Geoffrey White
019fcbfbf9 Rust: Add qhelp examples, and add them as tests. 2025-03-20 14:26:13 +00:00
Geoffrey White
671f7dff94 Rust: Query metadata. 2025-03-20 14:26:11 +00:00
Geoffrey White
7ceb76441a Rust: Improve the source to account for conversions. 2025-03-20 14:26:10 +00:00
Geoffrey White
be6d0d1f86 Rust: Work around data flow source issue. 2025-03-20 14:26:09 +00:00
Geoffrey White
c2ee4211e5 Rust: Add more models. 2025-03-20 14:26:08 +00:00
Geoffrey White
dcd016f5be Rust: Initial version of the query. 2025-03-20 14:26:06 +00:00
Geoffrey White
a139b3734c Rust: Split lang-core.model.yml into lang-core and lang-alloc. 2025-03-20 14:26:05 +00:00
Geoffrey White
19f009ae08 Rust: Add tests for various kinds of dangling pointers. 2025-03-20 14:26:04 +00:00
Taus
074af6f548 Python: Add change note 2025-03-20 13:57:32 +00:00
Simon Friis Vindum
659077769b Merge pull request #19062 from paldepind/rust-ti-1
Rust: Improve handling of trait bounds
2025-03-20 14:38:03 +01:00
Tom Hvitved
3142dbb040 Rust: Rework visibility handling in path resolution 2025-03-20 14:14:53 +01:00
Tom Hvitved
b2fc7e771f Rust: Handle super in use statements 2025-03-20 14:14:33 +01:00
Tom Hvitved
57dfbf4faa Rust: Add path resolution test for super in use statement 2025-03-20 14:14:29 +01:00
Tom Hvitved
8044b0d03c Rust: Exclude macro call paths from resolvePath 2025-03-20 14:13:13 +01:00
Tom Hvitved
7c2bafeb17 Rust: Handle self in use statements 2025-03-20 14:13:12 +01:00
Tom Hvitved
8f8f6f74bc Rust: Add use+self path resolution test 2025-03-20 14:13:11 +01:00
Tom Hvitved
c91176116f Rust: Cross-crate path resolution 2025-03-20 14:13:06 +01:00
Tom Hvitved
bd4c85a5bc Rust: Add cross-crate path resolution test 2025-03-20 13:50:20 +01:00
Tom Hvitved
c5106f78ac Rust: Handle pub use reexports in path resolution 2025-03-20 13:50:18 +01:00
Tom Hvitved
6cf83d3a68 Rust: Add path resolution test for reexported items 2025-03-20 13:50:16 +01:00
Tom Hvitved
92528f2b49 Rust: Add debug predicate 2025-03-20 13:50:15 +01:00
Napalys Klicius
13e90c1606 Update javascript/ql/lib/change-notes/2025-03-20-superagent.md
Co-authored-by: Asger F <asgerf@github.com>
2025-03-20 13:48:40 +01:00
Paolo Tranquilli
e2d6643600 Merge pull request #19072 from github/redsun82/rust-fix-canonical-paths-after-rename
Rust: fix canonical paths broken on `StructExpr` and `StructPath`
2025-03-20 13:40:24 +01:00
Owen Mansel-Chan
7e04a9f6c0 Improve stubs (made by old version of depstubber?) 2025-03-20 12:33:39 +00:00
Owen Mansel-Chan
6147f0a873 Fix outdated depstubber command 2025-03-20 12:32:56 +00:00
Owen Mansel-Chan
40768332d8 Remove empty imports from stubs 2025-03-20 12:32:12 +00:00
Owen Mansel-Chan
81e85010f9 List subpackages in vendor/modules.txt
These were all generated by running depstubber.
2025-03-20 12:30:57 +00:00
Napalys
9e787555df Fixed typo in the test cases. 2025-03-20 13:25:36 +01:00
Paolo Tranquilli
022785aa40 Merge pull request #19048 from github/redsun82/swift-count-nodes
Swift: add summary about total extracted nodes
2025-03-20 13:15:02 +01:00
Paolo Tranquilli
8757d2f0e4 Merge pull request #19013 from github/redsun82/rules_rust
Bazel: upgrade `rules_rust` to `0.58.0`
2025-03-20 13:14:24 +01:00
Paolo Tranquilli
e9b931e2aa Merge branch 'main' into redsun82/codegen-rust-ancestor-order 2025-03-20 13:13:10 +01:00
Arthur Baars
efedfa1fe2 Rust: move optionalStep/Barrier predicates into Cached module 2025-03-20 13:10:38 +01:00
Napalys
3a243d221d Added aliases for @apollo/server. 2025-03-20 13:09:42 +01:00
Napalys
056bf4fde7 Added test case with inheretence. 2025-03-20 13:08:56 +01:00
Tom Hvitved
9b58da7e84 Merge pull request #19057 from hvitved/rust/dependency-renaming
Rust: Take dependency renaming into account when extracting the crate graph
2025-03-20 12:51:24 +01:00
Napalys
ca53e97de4 Adressed comments. 2025-03-20 12:37:06 +01:00
Joe Farebrother
3707f107bf Fix tests + add more tests 2025-03-20 11:35:38 +00:00
Joe Farebrother
2c74ddb853 Add django FileRsponse as a wrapper 2025-03-20 11:35:29 +00:00
Joe Farebrother
b2acfbcf87 Simplify handling of wrapper classes and exception flow + improve qldoc and annotate tests. 2025-03-20 11:35:18 +00:00
Joe Farebrother
f8a0b1c5f9 Update docs, precision, and deprecate old library 2025-03-20 11:35:12 +00:00
Joe Farebrother
f750e22d91 Add case for exception flow 2025-03-20 11:35:01 +00:00
Joe Farebrother
c8fc56560d Check for wrapper classes 2025-03-20 11:34:51 +00:00
Joe Farebrother
ecb3050780 Update tests 2025-03-20 11:34:42 +00:00
Joe Farebrother
09694c448d Rewrite file not closed simple case using dataflow 2025-03-20 11:34:33 +00:00
Paolo Tranquilli
f06aa38746 Merge branch 'main' into redsun82/swift-count-nodes 2025-03-20 12:32:49 +01:00
Chris Smowton
d362c030b7 Merge pull request #19065 from smowton/smowton/admin/merge-rc317-into-main
Merge rc/3.17 into main
2025-03-20 11:31:03 +00:00
Paolo Tranquilli
15bc6fc496 Merge branch 'main' into redsun82/rules_rust 2025-03-20 12:28:52 +01:00
Napalys Klicius
221cc1977d Merge branch 'main' into js/underscore-string 2025-03-20 12:26:00 +01:00
Napalys
f4ca2dc1f3 Restricted taint to array elements. 2025-03-20 12:24:49 +01:00
Napalys
752f02f04d Fixed map modeling and added test cases. 2025-03-20 12:18:28 +01:00
Paolo Tranquilli
b77c13802b Rust: fix canonical paths broken on StructExpr and StructPath
After the rename done in https://github.com/github/codeql/pull/19059,
canonical path extraction was lost on `StructExpr` and `StructPath` as
the identifiers used for the type in the `emit_detached!` macro were not
updated. This fixes that.
2025-03-20 12:16:47 +01:00
Arthur Baars
f5fe531ab6 Rust: remove Stage::ref() trick 2025-03-20 12:15:41 +01:00
Napalys
38624a0d78 Added change note 2025-03-20 12:13:32 +01:00
Paolo Tranquilli
4110636032 Rust: preserve ordering in rust generated code
This is a small devex improvement to the rust code generator.

Usage of `sorted` in `rustgen.py` was causing the generated code to be
completely reshuffled on renames, which made diffs hard to follow. As an
example see [this generated file diff](https://github.com/github/codeql/pull/19059/files#diff-c938ba77a3398dd4c633ada5702a03477705c24740a2f7d1e40d4b270d8c3f86).

This will make the order deterministically based on the order of
definitions in the schema file. This means that renames will find the
same place in the generated file, and the place in the generated file
will generally be more predictable with respect to the schema.

However, that does mean this change is heavily reshuffling the generated
code.
2025-03-20 12:12:52 +01:00
Napalys
af567b49fb Simplified SuperAgentUrlRequest. 2025-03-20 12:10:37 +01:00
Napalys
539e2ef558 Added support for superagent.agent(). 2025-03-20 12:09:31 +01:00
Napalys
cdf4f5395f Enhance SuperAgent URL request handling for both method calls and direct calls 2025-03-20 12:09:26 +01:00
Napalys
2e1734eeba Added support for del function in superagent 2025-03-20 12:01:18 +01:00
Simon Friis Vindum
b02a249fbd Merge branch 'main' into rust-ti-1 2025-03-20 11:49:58 +01:00
Tom Hvitved
cbb9987a20 Merge remote-tracking branch 'upstream/main' into rust/dependency-renaming 2025-03-20 11:45:03 +01:00
Tom Hvitved
d19188db8f Address review comment 2025-03-20 11:39:52 +01:00
Arthur Baars
2804c13027 Rust: use optionalBarrier 2025-03-20 11:37:05 +01:00
Arthur Baars
5a91b94395 Refactor using OptionalStep 2025-03-20 11:37:04 +01:00
Simon Friis Vindum
b09669646d Merge pull request #19059 from paldepind/rust-record-to-struct
Rust: Rename classes with `Record` to `Struct`
2025-03-20 11:34:06 +01:00
Arthur Baars
d3e28772ae Rust/Python improve qldoc of SafeAccessCheck 2025-03-20 11:16:45 +01:00
Tamas Vajk
aa1ecc5cd9 C#: Update CompLog dependency to 0.9.8 2025-03-20 10:14:51 +01:00
Asger F
bf9d7484e4 JS: Use StringBuilder when building up type name
This code was a bit of a performance cringe. It copied every character
into a temporary array, copied that into a String, and slow-appended
that onto another String.

Note that the call to Characters.toChars is redundant here as advance()
doesn't return a code point; it returns -1 or a UTF-16 char. The -1 case
is checked for before reaching the call, so we can just cast it to
a char and use it directly.

We use a StringBuilder to accumulate the string. Normally it's faster
to track the start/end indices and do a substring(), but that won't
work in the JSDoc extractor because of the star-skipping logic in
advance().
2025-03-20 09:43:10 +01:00
Tamas Vajk
9bdec217e4 Clean test files and add new test cases 2025-03-20 09:32:27 +01:00
Tamás Vajk
246c8276e0 Update java/ql/lib/semmle/code/java/UnitTests.qll
Co-authored-by: Jami <57204504+jcogs33@users.noreply.github.com>
2025-03-20 09:22:13 +01:00
Jon Janego
f698d0a060 Update query-metadata-style-guide.md 2025-03-19 16:58:30 -05:00
Jon Janego
14d178f817 Update query-metadata-style-guide.md
minor tag changes to align with existing tags
2025-03-19 16:56:37 -05:00
Geoffrey White
0f622b38ab Rust: Update test results. 2025-03-19 18:42:50 +00:00
Geoffrey White
b609bbb4d8 Merge branch 'main' into convtest 2025-03-19 18:41:56 +00:00
Geoffrey White
bbef3fe7fa Rust: Test dataflow through conversions. 2025-03-19 18:13:23 +00:00
Napalys
e5c179d5a4 Added test cases for superagent 2025-03-19 17:44:22 +01:00
Chris Smowton
9a2a13ed55 Merge remote-tracking branch 'origin/main' into smowton/admin/merge-rc317-into-main 2025-03-19 16:01:29 +00:00
Simon Friis Vindum
0d770c8c91 Rust: Improve handling of type parameters with trait bounds 2025-03-19 16:34:23 +01:00
idrissrio
11c71f03f3 C++: Accept changes after C++ extractor preprocessor fix 2025-03-19 16:34:00 +01:00
Paolo Tranquilli
7c8eb9ea0d Codegen: implement db_table_name in cppgen 2025-03-19 15:14:15 +01:00
Paolo Tranquilli
9639d6c8bb Codegen: implement db_table_name in rustgen 2025-03-19 15:14:15 +01:00
Paolo Tranquilli
f48aa79927 Codegen: implement db_table_name in qlgen 2025-03-19 15:14:15 +01:00
Paolo Tranquilli
fc9e066ecd Codegen: implement db_table_name in dbschemegen 2025-03-19 15:14:14 +01:00
Paolo Tranquilli
841214f0f4 Codegen: introduce property-only pragmas 2025-03-19 15:14:14 +01:00
Paolo Tranquilli
91b7329652 Codegen: update dependencies 2025-03-19 15:14:13 +01:00
Paolo Tranquilli
53c235dfd5 Bazel: bump python version to 3.12 2025-03-19 15:14:13 +01:00
Napalys
cb18408502 Added data as model for ApolloServer. 2025-03-19 13:36:06 +01:00
Napalys
23fdc3534f Added test case @apollo/server with SSRF. 2025-03-19 13:34:27 +01:00
Simon Friis Vindum
aa97bf932a Rust: Add type inference tests 2025-03-19 13:26:06 +01:00
Paolo Tranquilli
06b349e307 Codegen: introduce name conflict error in dbschemegen 2025-03-19 12:15:45 +01:00
Simon Friis Vindum
b2b650ddd3 Rust: Rename classes with Record to Struct 2025-03-19 12:05:39 +01:00
Owen Mansel-Chan
fee380f970 Update go.mod 2025-03-19 10:26:31 +00:00
Owen Mansel-Chan
820aa90a0f Add missing model to make tests pass 2025-03-19 10:26:11 +00:00
Tom Hvitved
179bae8791 Merge pull request #19025 from hvitved/rust/rust-analyzer-comparison
Rust: Add telemetry for comparing against `rust-analyzer`
2025-03-19 11:06:27 +01:00
Tom Hvitved
0bf2bfa2f1 Rust: Take depdency renaming into account when extracting the crate graph 2025-03-19 08:39:22 +01:00
Arthur Baars
81f954a42e Rust: add missing QLDocs 2025-03-18 19:16:19 +01:00
Arthur Baars
a3cc695da4 Rust: update integration test output 2025-03-18 19:16:17 +01:00
Arthur Baars
f08d1d10f1 Rust: tainted path implement basic sanitizers 2025-03-18 19:16:13 +01:00
Arthur Baars
ecca805c34 Rust: add Dataflow::BarrierGuard module 2025-03-18 19:13:37 +01:00
Arthur Baars
0fd69eaa43 Add QL test 2025-03-18 19:13:30 +01:00
Arthur Baars
4b5883ab79 Add a bit of modelling 2025-03-18 19:10:05 +01:00
Arthur Baars
8223dded99 Rust: TaintedPath query 2025-03-18 19:10:03 +01:00
Jami
2750d1d889 Merge pull request #18646 from jcogs33/jcogs33/java/directory-chars-path-sanitizer
Java: path sanitizer for `replace`, `replaceAll`, and `matches`
2025-03-18 13:26:01 -04:00
Asger F
1324c11044 Merge pull request #19012 from asgerf/js/api-graph-array-element
JS: Make API graphs use steps from summaries
2025-03-18 18:03:43 +01:00
Michael B. Gale
7a92a72a9a C#: Change RegistryConfig to a record class 2025-03-18 16:45:41 +00:00
Chris Smowton
80d8018d3c Merge pull request #19054 from smowton/smowton/admin/java-change-notes
Add change notes for recent Java changes
2025-03-18 16:17:22 +00:00
Chris Smowton
839e4b2c34 Merge pull request #19047 from smowton/smowton/admin/add-gradle-download-failure-test
Java: add integration test for failed Gradle download
2025-03-18 15:58:11 +00:00
Arthur Baars
f53de135e6 Merge pull request #19024 from github/aibaars/mut-borrow
Rust: SSA: restrict mutablyBorrowed to variables with a 'mut' modifier
2025-03-18 16:57:32 +01:00
Chris Smowton
b507a0d766 Add change notes for recent Java changes 2025-03-18 15:43:46 +00:00
Chris Smowton
834594fe98 Java: add integration test for failed Gradle download 2025-03-18 15:21:08 +00:00
Chris Smowton
f8d1e3f7fe Merge pull request #19019 from smowton/smowton/feature/test-maven-enforcer
Java: Add tests checking the expected Maven version is fetched
2025-03-18 15:08:05 +00:00
Chris Smowton
025c2b82c4 Update test ref autobuilder using '-B' 2025-03-18 14:04:01 +00:00
Chris Smowton
ee82b00d31 Add tests checking the expected Maven version is fetched 2025-03-18 12:33:35 +00:00
Napalys
922a07d01e Added underscore.string clearsContent.
Co-authored-by: Asgerf <asgerf@github.com>
2025-03-18 12:58:19 +01:00
Michael Nebel
2257264d8e Merge pull request #19016 from michaelnebel/csharp/ccr-non-short-circuit
C#: Add `cs/non-short-circuit` to the CCR suite.
2025-03-18 11:25:18 +01:00
Tamas Vajk
2054c869fb C#: Fix buildless fallback restore logic
When dotnet core projects are restored, the dependency manager precisely tracks the referenced package folders. The fallback restore logic ignored the precise usage list and instead considered all subfolders in the restore location to be referenced, even though not all subfolders were added to the dependency list. This meant that packages downloaded in partially successful restores were available on disk, but not added to the dependency list by the normal restore process, and skipped by the fallback restore process. This commit fixes this problem by ensuring that the fallback restore logic doesn't consider all subfolders in the restore location to be referenced, but only those that were added to the dependency list by the normal restore process.
2025-03-18 09:51:39 +01:00
Geoffrey White
37aa479308 Merge pull request #18967 from geoffw0/experimental
Correct modelgenerator exclusion in suite helper
2025-03-18 08:50:32 +00:00
Asger F
53ba588993 JS: Use ArrayElement instead of AnyMember
The use of AnyMember was a workaround until the bugfix in this PR landed.
2025-03-18 09:26:02 +01:00
Paolo Tranquilli
ce0006fd19 Merge branch 'main' into redsun82/swift-count-nodes 2025-03-18 08:50:51 +01:00
Paolo Tranquilli
bed7ab51d4 Merge pull request #19029 from github/reddsun82/swift-ql-test-to-internal
Swift: simplify `codeql` workflow
2025-03-18 08:50:34 +01:00
Paolo Tranquilli
a034444f91 Swift: add change note 2025-03-18 08:36:04 +01:00
Paolo Tranquilli
6e507a5e00 Swift: add summary about total extracted nodes 2025-03-18 08:27:14 +01:00
Jami Cogswell
0d2e9ae469 Java: fix 'matches' false branch 2025-03-17 18:48:44 -04:00
Jami Cogswell
49d37c517d Java: fix replacement char check and add tests 2025-03-17 16:02:13 -04:00
Jami Cogswell
3083360032 Java: remove 'complementary' from qldocs 2025-03-17 15:24:31 -04:00
Jami Cogswell
b9f642f4aa Java: condense '.' matching 2025-03-17 15:20:14 -04:00
Jami Cogswell
2f6696e8a8 Java: add test 2025-03-17 15:13:33 -04:00
Jami Cogswell
9d6a10b601 Java: rename 'isSingleReplaceAll' and 'isDoubleReplaceOrReplaceAll' 2025-03-17 15:07:10 -04:00
Napalys
8b431dc0e7 Added change note. 2025-03-17 19:10:12 +01:00
Napalys
2c7562d875 Removed value from modeling its return value as Wrapper class, since it return simple string. 2025-03-17 19:08:43 +01:00
Napalys
d8e6d76b0e Added modeling for tap function. 2025-03-17 19:07:02 +01:00
Napalys
eb18c3ce24 Added test case for tap. 2025-03-17 18:36:23 +01:00
Napalys
fc6b779a4b Added modeling for aliases. 2025-03-17 18:33:14 +01:00
Napalys
dcc1e88d08 Added test cases for aliases. 2025-03-17 18:23:46 +01:00
Napalys
3a83c8d1fd Added modeling for extra chaining function from underscore.string. 2025-03-17 18:06:26 +01:00
Napalys
cccd863a96 Added test for extra chaining function for underscore.string. 2025-03-17 18:05:49 +01:00
Chris Smowton
36869efeb5 Merge pull request #19043 from github/post-release-prep/codeql-cli-2.20.7
Post-release preparation for codeql-cli-2.20.7
2025-03-17 15:32:23 +00:00
Esben Sparre Andreasen
f38cc7c33b Merge pull request #19041 from github/oscarsj/update-codespaces-python
Add python and npm to Dockerfile.codespaces
2025-03-17 16:16:34 +01:00
Óscar San José
319b781ce3 Add reference to official codeql system requirements doc 2025-03-17 15:57:32 +01:00
Michael B. Gale
51874b8ef0 Apply suggestions from code review
Co-authored-by: Michael Nebel <michaelnebel@github.com>
2025-03-17 14:24:04 +00:00
Simon Friis Vindum
7a18da82fa Merge pull request #19000 from paldepind/rust-cleartext-transmission
Rust: Add cleartext transmission query
2025-03-17 14:56:57 +01:00
Napalys
ca9ae8a58d Added chaining modeling for underscore.string package. 2025-03-17 14:46:07 +01:00
Napalys
25c6fb59df Added chaining tests for underscore.string package. 2025-03-17 14:46:06 +01:00
Napalys
b59b9c86e4 Added modeling underscore.string of function which contain multiple sources points. 2025-03-17 14:46:01 +01:00
Simon Friis Vindum
f90d53ac46 Merge pull request #19038 from paldepind/rust-type-inference-tweaks
Rust: Small type inference tweaks
2025-03-17 14:09:08 +01:00
github-actions[bot]
51cdeefafb Post-release preparation for codeql-cli-2.20.7 2025-03-17 13:00:41 +00:00
Asger F
1516029cf5 JS: Avoid generating ArrayElement edges for extend-like patterns 2025-03-17 13:48:27 +01:00
Asger F
125e732c4c JS: Fix bad join order 2025-03-17 13:44:33 +01:00
Chris Smowton
0ac0dad49d Merge pull request #19042 from github/release-prep/2.20.7
Release preparation for version 2.20.7
2025-03-17 12:21:27 +00:00
Simon Friis Vindum
81b28df089 Merge branch 'main' into rust-type-inference-tweaks 2025-03-17 13:18:45 +01:00
github-actions[bot]
2d64a618e6 Release preparation for version 2.20.7 2025-03-17 12:15:54 +00:00
Napalys
77e1e171e1 Added test cases underscore.string with multiple sources. 2025-03-17 12:58:53 +01:00
Napalys
6b105b2f49 Added modeling underscore.string array to string functions. 2025-03-17 12:55:53 +01:00
Napalys
cd40b6f125 Added test cases underscore.string array to string. 2025-03-17 12:53:53 +01:00
Napalys
30623cd953 Added modeling of underscore.string for str to array. 2025-03-17 12:52:56 +01:00
Napalys
c256b9c336 Added underscore.string test cases for str to array. 2025-03-17 12:51:48 +01:00
Napalys
9bca863e38 Added modeling of underscore.string string to string functions. 2025-03-17 12:50:41 +01:00
Napalys
e8b233f086 Added test cases underscore.string string to string. 2025-03-17 12:48:41 +01:00
Simon Friis Vindum
e9ca43ae94 Merge pull request #19039 from paldepind/rust-cfg-uppercase
Rust: Assume in the CFG that lowercase identifiers are in fact identifiers
2025-03-17 12:40:56 +01:00
Óscar San José
258794a57e Add python and npm to Dockerfile.codespaces 2025-03-17 12:37:47 +01:00
Paolo Tranquilli
a2851f753c Merge pull request #18968 from hvitved/rust/cache-to-string
Rust/Swift: Cache `Element.toString`
2025-03-17 12:08:27 +01:00
Tom Hvitved
0e3907b2a8 Merge pull request #19035 from hvitved/rust/type-inference-path-limit
Rust: Limit `TypePath`s to at most length 10
2025-03-17 12:01:31 +01:00
Jeroen Ketema
43a03de195 Merge pull request #19030 from MathiasVP/atl-namespace-fix
C++: Fix ATL models' namespace column
2025-03-17 11:28:16 +01:00
Napalys Klicius
749a0560b4 Merge pull request #19027 from Napalys/js/escape
JS: Add support for `escape`
2025-03-17 10:48:44 +01:00
Paolo Tranquilli
8ca33a907c Merge branch 'main' into reddsun82/swift-ql-test-to-internal 2025-03-17 10:42:39 +01:00
Napalys Klicius
478e32cbe5 Update javascript/ql/lib/semmle/javascript/security/dataflow/TaintedPathCustomizations.qll
Co-authored-by: Asger F <asgerf@github.com>
2025-03-17 10:17:39 +01:00
Napalys Klicius
9134f79fd2 Merge pull request #18984 from Napalys/js/extractor_error_handler
JS: Extractor handle error instead of exiting.
2025-03-17 10:11:26 +01:00
Simon Friis Vindum
17d6cb626d Rust: Assume in the CFG that lowercase identifiers are in fact identifiers 2025-03-17 08:40:02 +01:00
Simon Friis Vindum
0bf826559c Rust: Apply qhelp suggestions from review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-03-17 07:56:37 +01:00
Simon Friis Vindum
75355e9e53 Rust: Revert conjunct reorder 2025-03-17 07:46:54 +01:00
Simon Friis Vindum
1b7f4e4d4b Rust: Add type inference tests and rename modules 2025-03-17 07:41:47 +01:00
Simon Friis Vindum
72346cc392 Merge pull request #19004 from paldepind/rust-data-flow-split
Rust: Extract data flow node and content into separate files
2025-03-17 07:02:35 +01:00
Tom Hvitved
dfc39272b4 Rust: Limit TypePaths to at most length 10 2025-03-16 20:35:16 +01:00
Simon Friis Vindum
4c3768f771 Rust: Add comments for type inference 2025-03-15 13:51:15 +01:00
Simon Friis Vindum
422d9e1f93 Rust: Minor refactoring of type inference 2025-03-15 13:47:08 +01:00
Simon Friis Vindum
210b4db908 Rust: Encapsulate type parameter decoding/encoding 2025-03-15 13:41:46 +01:00
Aditya Sharad
996bc47ae8 Merge pull request #19032 from adityasharad/docs/remove-semmle-training-slide-template
Docs: Remove old CodeQL training slide template
2025-03-15 06:17:42 +05:30
Aditya Sharad
9e8a3145ac Docs: Remove old CodeQL training slide template
The slide contents (images and RST) remain.
Remove the HTML/JS/CSS templates since we're not maintaining them,
and this creates unnecessary burden keeping the JS libraries up to date
with security patches.
2025-03-14 15:16:59 -07:00
Asger F
cd3909245d JS: Bugfix in Array constructor summary 2025-03-14 23:08:22 +01:00
Asger F
fe1bdf2468 JS: Update a test 2025-03-14 23:08:20 +01:00
Asger F
ab74898bbb JS: Deprecate getUnknownMember() and replace its uses with getArrayElement()
Although they mean slightly different things, every single call site
of getUnknownMember() just used it as a way to get array elements.

Since there is no known use-case for the original meaning of
getUnknownMember() I am deprecating it for now.
2025-03-14 23:08:19 +01:00
Asger F
4c1c0b79a6 JS: Make API-graphs use Content internally, and use steps from flow summaries 2025-03-14 23:08:16 +01:00
Asger F
cc95c77cbc JS: Add failing test 2025-03-14 23:04:10 +01:00
Owen Mansel-Chan
f0af5af015 Merge pull request #19015 from owen-mc/java/toctou-sync-methods
Java: Fix FP in "Time-of-check time-of-use race condition" (`java/toctou-race-condition`)
2025-03-14 21:35:51 +00:00
Mathias Vorreiter Pedersen
a035c9b4d1 C++: Also update source-sink tests. 2025-03-14 20:04:45 +00:00
Tom Hvitved
a56493cbbc Merge pull request #19028 from hvitved/rust/crate-locatable 2025-03-14 20:27:33 +01:00
Mathias Vorreiter Pedersen
b7d1c56372 C++: Add change note. 2025-03-14 18:53:09 +00:00
Mathias Vorreiter Pedersen
636150ea4f C++: Adjust tests and accept test changes. 2025-03-14 18:43:33 +00:00
Mathias Vorreiter Pedersen
78697903fc C++: Move ATL models to ATL namespace. 2025-03-14 18:43:06 +00:00
Aditya Sharad
c5b35b0976 Merge pull request #19022 from adityasharad/actions/paths-ignore-test-dir
Code scanning config: Exclude actions test directory
2025-03-14 23:44:16 +05:30
Taus
ef9b229023 Python: Actually get rid of points-to
Also adds `quality` to the list of tags for the query.
2025-03-14 16:51:48 +00:00
Taus
c9e9deb41e Python: Adapt to a points-to-less world
Technically we still depend on points-to in that we still mention
`PythonFunctionValue` and `ClassValue` in the query. However, we
immediately move to working with the corresponding `Function` and
`Class` AST nodes, and so we're not really using points-to. (The reason
for doing things this way is that otherwise the `.toString()` for all of
the alerts would change, which would make the diff hard to interpret.
This way, it should be fairly simple to see which changes are actually
relevant.)

We do lose some precision when moving away from points-to, and this is
reflected in the changes in the `.expected` file. In particular we no
longer do complicated tracking of values, but rather look at the
syntactic structure of the classes in question. This causes us to lose
out on some results where a special method is defined elsewhere, and
causes a single FP where a special method initially has the wrong
signature, but is subsequently overwritten with a function with the
correct signature.

We also lose out on results having to do with default values, as these
are now disabled.

Finally, it was necessary to add special handling of methods marked with
the `staticmethod` decorator, as these expect to receive fewer
arguments. This was motivated by a MRVA run, where e.g. sympy showed a
lot of examples along the lines of
```
@staticmethod
def __abs__():
   return ...
```
2025-03-14 16:49:33 +00:00
Taus
bf688b88a9 Python: Add missing special methods 2025-03-14 16:29:54 +00:00
Paolo Tranquilli
622aa7c170 Swift: simplify codeql workflow
* remove ql test running and upgrade/downgrade scripts checking (now
  done internally)
* removed all the bazel caching stuff, that never really worked any way
* moved `misc/codegen` generic testing to a separate workflow, as it's
  not swift specific any more
* reinstanted checking that the extractor can be built locally from
  the `codeql` repo.
2025-03-14 16:13:58 +01:00
Michael B. Gale
284f612965 C#: Use StringBuilder for feed arguments in GetRestoreArgs 2025-03-14 14:06:48 +00:00
Michael B. Gale
b6c74fe306 C#: Narrow Exception to JsonException 2025-03-14 14:05:27 +00:00
Michael B. Gale
95605935fa C#: Fix .ToList() being called on null 2025-03-14 14:02:38 +00:00
Napalys
c93be70053 Rename validation methods for type expressions and added recursive call for type validation.
Co-authored-by: Asgerf <asgerf@github.com>
2025-03-14 14:58:27 +01:00
Napalys
4a691b778b Added escape as UriEncodingSanitizer 2025-03-14 14:53:21 +01:00
Napalys
37e02e4261 Added escape as StringManipulationTaintStep. 2025-03-14 14:49:45 +01:00
Tom Hvitved
89f6245772 Rust: Add telemetry for comparing against rust-analyzer 2025-03-14 14:48:15 +01:00
Michael B. Gale
a8dde15a87 C#: Only provide feeds on command line if Dependabot proxy is enabled 2025-03-14 13:47:05 +00:00
Aditya Sharad
28f40f1d45 Merge pull request #19023 from adityasharad/actions/env-var-query-names
Actions: Fix typos in query names for env var injection
2025-03-14 19:11:11 +05:30
Michael B. Gale
6b15f77168 C#: Fix test failures 2025-03-14 13:39:28 +00:00
Michael B. Gale
0db6a269e4 C#: Propagate explicit feeds to RestoreProjects 2025-03-14 13:39:27 +00:00
Michael B. Gale
726123c0cb C#: Allow specifying package feeds for dotnet restore as command line arguments 2025-03-14 13:39:26 +00:00
Michael B. Gale
11efb55aa1 C#: Parse environment variables to obtain list of registry URLs 2025-03-14 13:39:26 +00:00
Michael B. Gale
63d5517d7c C#: Add list of registries to DependabotProxy 2025-03-14 13:39:25 +00:00
Michael B. Gale
6b2f348c4c C#: Add CODEQL_PROXY_URLS environment variable 2025-03-14 13:39:23 +00:00
Napalys Klicius
70232a34f3 Merge pull request #19006 from Napalys/js/vue_tanstack_model
Js: Added support for `@tanstack/vue-query`
2025-03-14 14:36:35 +01:00
Napalys
4c77ee2f4f Added change note. 2025-03-14 14:27:14 +01:00
Napalys
933f3c6f77 Refactor Tanstack integration: remove Tanstack framework and added model as data for it instead. 2025-03-14 13:52:05 +01:00
Napalys
d40ef0ddae Changed from taint to value steps.
Co-authored-by: Asgerf <asgerf@github.com>
2025-03-14 13:48:15 +01:00
Napalys
1468e81c55 Ensure interface extends valid expr. 2025-03-14 13:41:37 +01:00
Anders Schack-Mulligen
474b8a5a31 Merge pull request #18942 from aschackmull/cpp/refactor-ssa
C++: Refactor SSA usage in data flow.
2025-03-14 13:31:32 +01:00
Simon Friis Vindum
5a3bf90b1f Rust: Add qldoc comments 2025-03-14 13:31:03 +01:00
Simon Friis Vindum
a96a5fc737 Rust: Address PR comments 2025-03-14 13:24:16 +01:00
Tom Hvitved
0dd59cbb25 Rust: Make Crate a sub class of Locatable 2025-03-14 13:18:02 +01:00
Simon Friis Vindum
60f96eee7e Merge pull request #19026 from paldepind/rust-expr-type-eq
Rust: Handle type equality for a few more expression types
2025-03-14 13:14:52 +01:00
Tamas Vajk
d4955a0747 Fix failing test and add new test case 2025-03-14 13:07:56 +01:00
Owen Mansel-Chan
7702e9da7d Address review comments 2025-03-14 11:44:01 +00:00
Owen Mansel-Chan
5c7588822d Fix test output 2025-03-14 11:44:00 +00:00
Simon Friis Vindum
c17c0458dd Rust: Handle type equality for a few more expression types 2025-03-14 11:59:34 +01:00
Tom Hvitved
dcd01befc2 Swift: Cache Element.toString 2025-03-14 11:58:42 +01:00
Tom Hvitved
d1ad65ae09 Rust: Cache Element.toString 2025-03-14 11:58:38 +01:00
Napalys
dc262236f4 Enhance taint tracking by including escape and unescape in TaintedPath customizations. 2025-03-14 11:43:22 +01:00
Napalys
c4b717b86c Added test case for escape. 2025-03-14 11:40:23 +01:00
Tamas Vajk
9662b47464 Move likely test method logic to library 2025-03-14 11:36:15 +01:00
Tamas Vajk
05502bc74e Change severity and precision 2025-03-14 11:36:14 +01:00
Tamás Vajk
30ff68dc71 Update java/ql/src/Language Abuse/EmptyMethod.md
Co-authored-by: Jami <57204504+jcogs33@users.noreply.github.com>
2025-03-14 11:36:14 +01:00
Tamas Vajk
2538ba82cc Revert message 2025-03-14 11:36:13 +01:00
Tamás Vajk
050ef405c1 Improve query help
Co-authored-by: Jami <57204504+jcogs33@users.noreply.github.com>
2025-03-14 11:36:12 +01:00
Tamas Vajk
24f129c12c Fix typo in QL help 2025-03-14 11:36:12 +01:00
Tamas Vajk
17aa3fc428 Add compliant/non-compliant comments back to the test file 2025-03-14 11:36:11 +01:00
Tamas Vajk
dea081b385 Add quality and cwe tag 2025-03-14 11:36:10 +01:00
Tamas Vajk
3be7044c6e Fix references in query help file 2025-03-14 11:36:10 +01:00
Tamas Vajk
3d4fcefe70 Do not accept empty default methods 2025-03-14 11:36:09 +01:00
Tamas Vajk
77400778ea Add change note 2025-03-14 11:36:08 +01:00
Tamas Vajk
3d2a72341b Improve ql code quality 2025-03-14 11:36:08 +01:00
Tamas Vajk
6512ed9429 Adjust alert message 2025-03-14 11:36:07 +01:00
Tamas Vajk
7476f19b09 Adjust query help 2025-03-14 11:36:06 +01:00
Tamas Vajk
349f48982a Make query more accepting 2025-03-14 11:36:06 +01:00
Tamas Vajk
4bf26afca0 Add more test cases 2025-03-14 11:36:05 +01:00
Tamas Vajk
614bee9e20 Use inline test expectations 2025-03-14 11:36:04 +01:00
Tamas Vajk
a8063e1cd2 Adjust query name 2025-03-14 11:36:03 +01:00
Tamas Vajk
f7f8b47f12 Java: Add initial version of empty method query 2025-03-14 11:36:03 +01:00
Arthur Baars
1e94245332 Rust: update expected output 2025-03-14 11:25:41 +01:00
Arthur Baars
56574a15b7 Rust: SSA: restrict mutablyBorrowed to variables with a 'mut' modifier 2025-03-14 11:25:35 +01:00
Paolo Tranquilli
87f29ad3a8 Merge branch 'main' into redsun82/rules_rust 2025-03-14 11:25:12 +01:00
Simon Friis Vindum
82304832e8 Rust: Add type inference examples 2025-03-14 11:13:16 +01:00
Michael Nebel
b3a1ff1fc3 C#: Add cs/non-short-circuit to the CCR suite. 2025-03-14 10:52:25 +01:00
Anders Schack-Mulligen
c2309442d5 C++: Accept qltest changes. 2025-03-14 10:51:28 +01:00
Mathias Vorreiter Pedersen
90774c03be C++: Remove yet another DefinitionExt reference. 2025-03-14 10:51:27 +01:00
Anders Schack-Mulligen
35687ea698 C++: Merge two cached stages. 2025-03-14 10:51:27 +01:00
Anders Schack-Mulligen
7bfd47a924 C++: Fix bad join order.
Before:

[2025-03-12 10:27:53] Evaluated non-recursive predicate SsaInternals::UseImpl.hasIndexInBlock/2#dispred#1e34a5af@e87543ui in 935ms (size: 8905695).
Evaluated relational algebra for predicate SsaInternals::UseImpl.hasIndexInBlock/2#dispred#1e34a5af@e87543ui with tuple counts:
                          {3} r1 = SsaInternals::DirectUseImpl#a58aae88 AND NOT `_ArithmeticOperation::PostfixCrementOperation#17623ada_Expr::UnaryOperation.getOperand/0#dispred#990__#antijoin_rhs`(FIRST 3)
         8579337   ~4%    {2}    | SCAN OUTPUT In.1, In.0
         8579337   ~0%    {2}    | JOIN WITH `Operand::Operand.getUse/0#dispred#427b49d0` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
         8579337   ~0%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2

           48215   ~2%    {2} r2 = SCAN SsaInternals::GlobalUse#9cd323b4 OUTPUT In.2, In.0
        35467318   ~3%    {2}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#5443f355_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1

           48189   ~0%    {2} r3 = JOIN r2 WITH Instruction::ReturnInstruction#28bfb7eb ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           12332   ~0%    {2} r4 = JOIN r2 WITH Instruction::UnreachedInstruction#774c7a34 ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           60521   ~0%    {2} r5 = r3 UNION r4
           60521   ~2%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2

           39316   ~0%    {2} r6 = JOIN SsaInternals::FinalParameterUse#c1f84700_10#join_rhs WITH `Parameter::Parameter.getFunction/0#dispred#803faca2` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        43821265   ~0%    {2}    | JOIN WITH `Instruction::Instruction.getEnclosingFunction/0#dispred#cb8ccc56_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1

           39194   ~0%    {2} r7 = JOIN r6 WITH Instruction::ReturnInstruction#28bfb7eb ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           21255   ~2%    {2} r8 = JOIN r6 WITH Instruction::UnreachedInstruction#774c7a34 ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           60449   ~0%    {2} r9 = r7 UNION r8
           60449   ~3%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2

         8784725   ~1%    {5} r10 = JOIN `_SsaInternals::DirectUseImpl#a58aae88_SsaInternals::DirectUseImpl.getBase/0#dispred#4b8c43d0_SsaInte__#shared` WITH `SsaInternals::DirectUseImpl.getBase/0#dispred#4b8c43d0` ON FIRST 1 OUTPUT Rhs.1, Lhs.0, Lhs.1, Lhs.2, Lhs.3
         8784725   ~0%    {5}    | JOIN WITH `cached_SSAConstruction::getInstructionAst/1#d0d95b50` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
          210435   ~4%    {5}    | JOIN WITH `Expr::UnaryOperation.getOperand/0#dispred#990de484#bf_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
          205388   ~0%    {4}    | JOIN WITH ArithmeticOperation::PostfixCrementOperation#17623ada ON FIRST 1 OUTPUT Lhs.4, Lhs.3, Lhs.2, Lhs.1
          205388   ~4%    {3}    | JOIN WITH `__IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs__ArithmeticOperation::PostfixCrementOperat__#join_rhs` ON FIRST 3 OUTPUT Rhs.4, Lhs.3, Rhs.3
          205388   ~0%    {3}    | JOIN WITH `Operand::Operand.getUse/0#dispred#427b49d0` ON FIRST 1 OUTPUT Lhs.2, Rhs.1, Lhs.1
          205388   ~1%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_021#join_rhs` ON FIRST 2 OUTPUT Lhs.2, Lhs.0, Rhs.2

         8905695   ~0%    {3} r11 = r1 UNION r5 UNION r9 UNION r10
                          return r11

After:

[2025-03-12 11:12:48] Evaluated non-recursive predicate SsaInternals::hasReturnPosition/3#02f7eab8@bc405c4l in 3ms (size: 49368).
Evaluated relational algebra for predicate SsaInternals::hasReturnPosition/3#02f7eab8@bc405c4l with tuple counts:
        49368  ~3%    {1} r1 = Instruction::ReturnInstruction#28bfb7eb UNION Instruction::UnreachedInstruction#774c7a34
        49368  ~0%    {2}    | JOIN WITH `cached_SSAConstruction::getInstructionEnclosingIRFunction/1#5443f355` ON FIRST 1 OUTPUT Lhs.0, Rhs.1
        49368  ~2%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2
                      return r1

[2025-03-12 11:12:54] Evaluated non-recursive predicate SsaInternals::UseImpl.hasIndexInBlock/2#dispred#1e34a5af@6e30cduo in 549ms (size: 8905695).
Evaluated relational algebra for predicate SsaInternals::UseImpl.hasIndexInBlock/2#dispred#1e34a5af@6e30cduo with tuple counts:
          48215   ~2%    {2} r1 = SCAN SsaInternals::GlobalUse#9cd323b4 OUTPUT In.2, In.0
          60521   ~2%    {3}    | JOIN WITH `SsaInternals::hasReturnPosition/3#02f7eab8` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2

          50725   ~0%    {2} r2 = JOIN `IRFunctionBase::IRFunctionBase.getFunction/0#dispred#b024672e_10#join_rhs` WITH `Parameter::Parameter.getFunction/0#dispred#803faca2_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
          39231   ~2%    {2}    | JOIN WITH SsaInternals::FinalParameterUse#c1f84700_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1
          60449   ~3%    {3}    | JOIN WITH `SsaInternals::hasReturnPosition/3#02f7eab8` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2

                         {3} r3 = SsaInternals::DirectUseImpl#a58aae88 AND NOT `_ArithmeticOperation::PostfixCrementOperation#17623ada_Expr::UnaryOperation.getOperand/0#dispred#990__#antijoin_rhs`(FIRST 3)
        8579337   ~1%    {2}    | SCAN OUTPUT In.1, In.0
        8579337   ~0%    {2}    | JOIN WITH `Operand::Operand.getUse/0#dispred#427b49d0` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        8579337   ~1%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2

        8784725   ~0%    {5} r4 = JOIN `_SsaInternals::DirectUseImpl#a58aae88_SsaInternals::DirectUseImpl.getBase/0#dispred#4b8c43d0_SsaInte__#shared` WITH `SsaInternals::DirectUseImpl.getBase/0#dispred#4b8c43d0` ON FIRST 1 OUTPUT Rhs.1, Lhs.0, Lhs.1, Lhs.2, Lhs.3
        8784725   ~0%    {5}    | JOIN WITH `cached_SSAConstruction::getInstructionAst/1#d0d95b50` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
         210435   ~0%    {5}    | JOIN WITH `Expr::UnaryOperation.getOperand/0#dispred#990de484#bf_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
         205388   ~2%    {4}    | JOIN WITH ArithmeticOperation::PostfixCrementOperation#17623ada ON FIRST 1 OUTPUT Lhs.4, Lhs.3, Lhs.2, Lhs.1
         205388   ~0%    {3}    | JOIN WITH `__IRBlock::Cached::getInstruction/2#627f9c61_201#join_rhs__ArithmeticOperation::PostfixCrementOperat__#join_rhs` ON FIRST 3 OUTPUT Rhs.4, Lhs.3, Rhs.3
         205388   ~0%    {3}    | JOIN WITH `Operand::Operand.getUse/0#dispred#427b49d0` ON FIRST 1 OUTPUT Lhs.2, Rhs.1, Lhs.1
         205388   ~0%    {3}    | JOIN WITH `IRBlock::Cached::getInstruction/2#627f9c61_021#join_rhs` ON FIRST 2 OUTPUT Lhs.2, Lhs.0, Rhs.2

        8905695   ~0%    {3} r5 = r1 UNION r2 UNION r3 UNION r4
                         return r5
2025-03-14 10:51:27 +01:00
Anders Schack-Mulligen
ba13d7fffe C++: Remove superfluous disjunct. 2025-03-14 10:51:26 +01:00
Anders Schack-Mulligen
ecb5e7ad07 C++: Fix spurious ExprNode fanout in DataFlowIntegration. 2025-03-14 10:51:26 +01:00
Anders Schack-Mulligen
b5a2f5d3ff C++: Remove useless ipa wrapper. 2025-03-14 10:51:25 +01:00
Anders Schack-Mulligen
4bd35b10fc C++: Delete dead code. 2025-03-14 10:51:25 +01:00
Anders Schack-Mulligen
6ba1d2ef14 C++: Replace DefinitionExt usage with Definition. 2025-03-14 10:51:24 +01:00
Anders Schack-Mulligen
9375e571b1 C++: Use SSA data flow integration module. 2025-03-14 10:51:24 +01:00
Anders Schack-Mulligen
c7ff2f55b5 C++: Remove yet another DefinitionExt reference. 2025-03-14 10:51:23 +01:00
Anders Schack-Mulligen
e01552c3f0 C++: Remove another DefinitionExt reference. 2025-03-14 10:51:23 +01:00
Anders Schack-Mulligen
c5755ba8d4 C++: Remove a DefinitionExt reference. 2025-03-14 10:51:23 +01:00
Anders Schack-Mulligen
0c17786ed0 C++: Delete unused predicate 2025-03-14 10:51:22 +01:00
Napalys
66737402c2 Updated test ouput with fixes from main. 2025-03-14 10:50:10 +01:00
Napalys Klicius
908f48a22f Merge branch 'main' into js/vue_tanstack_model 2025-03-14 10:45:42 +01:00
Asger F
9a8cb1a55b Merge pull request #19007 from asgerf/js/api-graph-awaited-return
JS: Fix bug in API graphs getPromised() missing async function returns
2025-03-14 10:36:16 +01:00
Simon Friis Vindum
4dbfda59cf Merge branch 'main' into rust-data-flow-split 2025-03-14 09:58:46 +01:00
Tom Hvitved
cf0b3b5727 Merge pull request #18632 from hvitved/rust/type-inference
Rust: Implement basic type inference in QL
2025-03-14 09:43:04 +01:00
Michael Nebel
a3ef137a8e Merge pull request #19014 from michaelnebel/csharp/ccr-useless-gethashcode-all
C#: Add `cs/useless-gethashcode-call` to the CCR suite.
2025-03-14 08:45:31 +01:00
Michael Nebel
563ffb8c27 Merge pull request #19010 from michaelnebel/csharp/useless-gethashcode-call
C#: Increase precision of `cs/useless-gethashcode-call`.
2025-03-14 08:44:38 +01:00
Jeroen Ketema
de2fb037d0 Merge pull request #18980 from LeStarch/jpl-c-basic-integral-types-fix
Fixing BasicIntTypes to allow C Standard Integers and 'bool'
2025-03-14 08:06:55 +01:00
Aditya Sharad
956b5bf6d6 Actions: Fix typos in query names for env var injection
This will reflect in the UI titles of existing and new alerts
once shipped but should not churn any existing alerts.
2025-03-13 17:02:04 -07:00
M Starch
7b5d604607 Updating tests to allow new typedefs 2025-03-13 15:04:37 -07:00
Aditya Sharad
c534f89e93 Code scanning config: Exclude actions test directory
These are test cases for the GitHub Actions analysis.
Exclude them when running code scanning against this repo,
to avoid noisy alerts.

Test workflow files in this directory are safe from
execution, because Actions only executes workflows
that live directly in the .github/workflows
top-level directory.

`action.yml` files in this directory can in theory
be executed as a step in a workflow; for now exclude them.
2025-03-13 13:30:54 -07:00
Tom Hvitved
c3739d4f23 Address review comments 2025-03-13 21:10:48 +01:00
Óscar San José
fba7bcd127 Merge pull request #19021 from github/oscarsj-patch-2
Add paths to codeql-config.yml to avoid codeql analysis errors
2025-03-13 20:26:14 +01:00
M Starch
7f4905987e Addressing review comments
Reduced the category to minorAnalysis.  Handled bools via a instanceof with BoolType.  Formatted the query correctly.
2025-03-13 11:12:35 -07:00
Jon Janego
de5d3b6263 Update query-metadata-style-guide.md 2025-03-13 12:42:51 -05:00
Óscar San José
66a496fa82 Add paths to codeql-config.yml to avoid codeql analysis errors 2025-03-13 18:27:25 +01:00
Paolo Tranquilli
45db4ae7c6 Merge pull request #19018 from github/redsun82/rust-ql-test-log-fix
Rust: fix `qltest.sh` for some versions of macOS
2025-03-13 18:07:50 +01:00
Jon Janego
6c28be9827 Update query-metadata-style-guide.md
initial commit of changes starting to add quality tagging standards
2025-03-13 11:49:48 -05:00
Mathias Vorreiter Pedersen
d23c8fd662 Merge pull request #19001 from MathiasVP/add-uncertain-api-for-dataflow
C++: Refine `Node.asDefinition`
2025-03-13 09:35:53 -07:00
Simon Friis Vindum
fb718660d9 Rust: Generate more sinks and update query description 2025-03-13 17:35:32 +01:00
Mathias Vorreiter Pedersen
6f4e9ed136 Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-03-13 16:00:36 +00:00
Mathias Vorreiter Pedersen
0e5fa1b5eb Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-03-13 16:00:23 +00:00
Mathias Vorreiter Pedersen
470321e8b6 Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-03-13 16:00:15 +00:00
Mathias Vorreiter Pedersen
9cde2bb94d Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-03-13 15:59:57 +00:00
Mathias Vorreiter Pedersen
68b414d169 Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-03-13 15:59:48 +00:00
Napalys Klicius
28d1152250 Merge pull request #19009 from Napalys/js/unescape
JS: Add support for `unescape`
2025-03-13 16:59:01 +01:00
Paolo Tranquilli
8cc39af190 Rust: fix qltest.sh for some versions of macOS
Turns out some version of macOS do not support the way `mktemp` was
being used. In any case it wasn't really necessary, see
https://github.com/github/codeql/pull/18918#discussion_r1979444850
(which I forgot to follow up on at the time after approval).
2025-03-13 16:54:27 +01:00
Taus
3d643c02be Merge pull request #18921 from github/tausbn/python-fix-unused-global-variable-in-forward-annotation-fp
Python: Add support for forward references in unused var query
2025-03-13 16:37:25 +01:00
Owen Mansel-Chan
6ca9a1ff9a Add change note 2025-03-13 15:05:32 +00:00
Owen Mansel-Chan
a8e993c942 Fix FP for always-locked fields 2025-03-13 15:03:32 +00:00
Owen Mansel-Chan
dc2cbf7402 Add tests for always-locked fields 2025-03-13 15:02:26 +00:00
Tom Hvitved
255f06b65a Rust: Update expected test output 2025-03-13 15:51:33 +01:00
Michael Nebel
e2699586db C#: Add cs/useless-gethashcode-call to the CCR suite. 2025-03-13 15:42:28 +01:00
Mathias Vorreiter Pedersen
0fe77154e1 C++: Add library change note. 2025-03-13 14:29:34 +00:00
Tom Hvitved
3bb89ea863 Rust: Move type inference/path resolution out of elements folder 2025-03-13 15:05:00 +01:00
Tom Hvitved
af91152f5c Address review comments 2025-03-13 15:04:59 +01:00
Simon Friis Vindum
1ae28c7907 Merge branch 'main' into rust-cleartext-transmission 2025-03-13 15:01:11 +01:00
Paolo Tranquilli
179021ea69 Upgrade rules_rust to 0.58.0 2025-03-13 14:47:34 +01:00
Michael Nebel
4681f28f92 Merge pull request #19005 from michaelnebel/csharp/local-not-disposed
C#: Revisit `cs/local-not-disposed` tests.
2025-03-13 14:04:48 +01:00
Owen Mansel-Chan
aed51644ba Convert to inline expectations test 2025-03-13 12:55:02 +00:00
Napalys
0df2069575 Added change note. 2025-03-13 13:47:46 +01:00
Napalys
de5c7efd63 Added test case for unescape. 2025-03-13 13:47:42 +01:00
Michael Nebel
dff66c7b28 C#: Add change-note. 2025-03-13 13:42:58 +01:00
Michael Nebel
36a524929f C#: Update tests and test expected output. 2025-03-13 13:38:13 +01:00
Tom Hvitved
78280af570 Rust: Use 'infer' instead of 'resolve' in type inference library 2025-03-13 13:34:43 +01:00
Michael Nebel
4b02198652 C#: Only consider calling GetHashCode on byte, sbyte, short, ushort and int as useless. 2025-03-13 13:32:22 +01:00
Michael Nebel
a6ec8b6a25 C#: Convert tests cs/useless-gethashcode-call to inline tests. 2025-03-13 13:31:20 +01:00
Tom Hvitved
2394f2fab8 Rust: Fix bug in path resolution library 2025-03-13 13:23:18 +01:00
Tom Hvitved
795ba25895 Rust: Add more consistency checks 2025-03-13 13:23:16 +01:00
Tom Hvitved
fcdffc4e73 Rust: Use type inference in path resolution test 2025-03-13 13:23:14 +01:00
Tom Hvitved
e8505ad33d Rust: Use type inference to resolve method calls and field accesses 2025-03-13 13:23:13 +01:00
Tom Hvitved
62d4e6fe3f Rust: Implement basic type inference in QL 2025-03-13 13:23:11 +01:00
Tom Hvitved
3a58611271 Shared: Add shared type inference library 2025-03-13 13:23:09 +01:00
Taus
f3353dc3fb Python: Ignore special methods with placeholder bodies
Instances of this include
- Bodies that contain just a docstring (common in Zope interfaces)
- Bodies that do nothing but raise an exception.
2025-03-13 12:18:43 +00:00
Taus
862b89207d Python: Disable "usused default" logic
Adds a new boolean parameter `is_unused_default` that indicates whether
the given result is one where a parameter to a special method has a
default value (which will never be used when invoked in the normal way).
These results are somewhat less useful (because the special method
_might_ be invoked directly, in which case the default value would still
be relevant), but it seemed like a shame to simply remove the code, so
instead I opted to disable it in this way.
2025-03-13 12:18:43 +00:00
Taus
24b2eb24c1 Python: Refactor special method query
Moves a bunch of `owner.declaredAttribute(name) = f` instances to the
top level, in the process greatly cleaning up the code. The behaviour
should be the unchanged.

Having done this, there's only one place where we depend on points-to,
and that's in the remaining `declaredAttribute` call. This should
greatly simplify the move away from points to.
2025-03-13 12:18:43 +00:00
Taus
f30ebf1571 Merge pull request #18871 from github/tausbn/python-modernise-special-method-signature-query
Python: Move min/maxParameter methods to `Function` class
2025-03-13 13:03:21 +01:00
Asger F
08ee51cbc4 JS: Move some promise-related store steps into PromiseFlow::storeStep
API graphs calls PromiseFlow::storeStep to propagate promises, which means it missed a store steps added elsewhere in the old promise library model.

We want API graphs to rely on type-tracking steps in general, like in Ruby, but for now just fixing the bug.
2025-03-13 12:53:04 +01:00
Tom Hvitved
1636abb81b Merge pull request #18985 from hvitved/rust/immediate-child
Rust/Swift: Add `get(Immediate)Child` predicate
2025-03-13 12:50:53 +01:00
Napalys
5dff23de6b Added change note. 2025-03-13 12:45:27 +01:00
Napalys
3640e5e425 Added model for tanstack-react useQueries 2025-03-13 12:45:26 +01:00
Napalys
03330ef24d Added test cases for tanstack-react useQueries. 2025-03-13 12:45:25 +01:00
Napalys
6c9aa0e872 Added modeling of tanstack-vue useQueries. 2025-03-13 12:45:23 +01:00
Napalys
4917d64ce7 Added test cases for tanstack-vue useQueries. 2025-03-13 12:45:05 +01:00
Napalys
0c0158899e Added tanstack-vue useQuery modeling 2025-03-13 12:25:07 +01:00
Napalys
7712ca368a Added useQuery tanstack-vue test case 2025-03-13 12:25:05 +01:00
Asger F
89410d07b3 JS: Add failing test 2025-03-13 11:59:23 +01:00
Geoffrey White
1aa223652f Merge pull request #18977 from geoffw0/sourcesinkdoc
Rust: Source and sink doc / tidy up
2025-03-13 10:53:44 +00:00
Simon Friis Vindum
3c644144b1 Rust: Extract data flow node and content into separate files 2025-03-13 11:22:04 +01:00
Michael Nebel
b1edd9294b C#: Add some more test cases to cs/local-not-disposed. 2025-03-13 11:19:37 +01:00
Tom Hvitved
dd21dab055 Swift: Add get(Immediate)Child predicate 2025-03-13 11:13:04 +01:00
Tom Hvitved
8777bc42c7 Rust: Add get(Immediate)Child predicate 2025-03-13 11:13:01 +01:00
Michael Nebel
209b9c6114 C#: Re-factor to use inline expectation tests instead. 2025-03-13 11:11:23 +01:00
Michael Nebel
40375a0387 C#: Use stubs for the cs/local-not-disposed tests. 2025-03-13 10:47:45 +01:00
Michael Nebel
5eb9a535a4 C#: Remove disposal test for library code as we are no longer doing CIL extraction or data flow. 2025-03-13 10:45:00 +01:00
Michael Nebel
72c7024c8b Merge pull request #18999 from michaelnebel/csharp/ccr-constant-condition
C#: Add cs/constant-condition to the CCR suite.
2025-03-13 10:02:00 +01:00
Arthur Baars
fa79dbc89a Merge pull request #18228 from github/aibaars/crate-graph
Rust: extract crate graph
2025-03-13 10:00:48 +01:00
Simon Friis Vindum
4de69c70a8 Rust: Add cleartext transmission query 2025-03-13 08:45:36 +01:00
Andrew Eisenberg
e05b172c88 Merge pull request #19002 from github/aeisenberg/actions-security-and-quality
Update actions query suites
2025-03-12 13:43:49 -07:00
yoff
10a9b78bc5 Merge pull request #18738 from github/tausbn/python-fix-match-pruning-logic
Python: Don't prune any `MatchLiteralPattern`s
2025-03-12 20:01:26 +01:00
Andrew Eisenberg
02051ff7b1 Update the security experimental suite 2025-03-12 11:46:03 -07:00
Andrew Eisenberg
cd63e7cf54 Fix the actions-security-and-quality.qls suite
It was not using the proper selectors. It is now the same as
other quality suites in other languages.
2025-03-12 11:43:59 -07:00
Mathias Vorreiter Pedersen
aeb1acba97 C++: Use the new API in queries. 2025-03-12 17:09:05 +00:00
Mathias Vorreiter Pedersen
66e8b2d7e5 C++: Add an 'asDefinition' overload to check if a definition is certain or not. 2025-03-12 17:07:07 +00:00
Geoffrey White
0df652b297 Rust: Autoformat. 2025-03-12 16:38:00 +00:00
Geoffrey White
64b57679bf Rust: ... one more fix. 2025-03-12 16:32:53 +00:00
Geoffrey White
ee6455a7b1 Rust: ... and extend QuerySink to complete the above. 2025-03-12 16:23:41 +00:00
Geoffrey White
56f6a67d5f Rust: Add sinks for rust/regex-injection to stats. 2025-03-12 16:08:33 +00:00
Geoffrey White
f8112945a8 Merge branch 'main' into sourcesinkdoc 2025-03-12 16:04:56 +00:00
Geoffrey White
df4f117a7c Rust: QLDoc formatting. 2025-03-12 15:59:44 +00:00
Napalys Klicius
40903a9643 Merge pull request #18975 from Napalys/js/tanstack_angular
JS: Update Angular Client Request's with API graph and `Tanstack` Angular modeling
2025-03-12 15:30:26 +01:00
yoff
a5101bdae6 Merge pull request #18855 from Kwstubbs/ssrf_documentation
Python: Add more documentation in regards to SSRF
2025-03-12 15:27:01 +01:00
Michael Nebel
b76527fa84 C#: Add cs/constant-condition to the CCR suite. 2025-03-12 14:55:20 +01:00
Michael Nebel
e79cb443da Merge pull request #18976 from michaelnebel/csharp/constant-condition
C#: Increase precision of `cs/constant-condition`.
2025-03-12 14:42:15 +01:00
Napalys
f867e0fae8 Added angular-query so when it is released it would be still modeled. 2025-03-12 14:00:44 +01:00
Napalys Klicius
bf24f7794f Update javascript/ql/lib/change-notes/2025-03-11-tanstack-angular.md
Co-authored-by: Asger F <asgerf@github.com>
2025-03-12 13:58:09 +01:00
Napalys Klicius
86bd3b8d26 Merge pull request #18986 from Napalys/js/remove_dedundant_stats
JS: Removed auto generated stats file
2025-03-12 12:51:26 +01:00
Napalys
8a8defd48f Removed redundant stats file genarated from check-db-upgrades-javascript 2025-03-12 11:57:27 +01:00
Napalys
09986bc26c Added change note. 2025-03-12 11:54:57 +01:00
Napalys
770920e738 Add new model configuration for @tanstack/angular-query-experimental. 2025-03-12 11:54:55 +01:00
Napalys
184d23df46 Add test cases for @tanstack/angular-query-experimental injectQuery 2025-03-12 11:54:53 +01:00
Asger F
b4016c144b Merge pull request #18973 from asgerf/js/vue-fix
JS: Fix attributes nodes missing an enclosing callable
2025-03-12 11:23:25 +01:00
Arthur Baars
b2e0eaf664 Merge pull request #18965 from JarLob/docs
Minor example workflow fix
2025-03-12 11:17:42 +01:00
Michael Nebel
42f86a8234 Update csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql
Co-authored-by: Tom Hvitved <hvitved@github.com>
2025-03-12 11:13:25 +01:00
Chris Smowton
312f201ce0 Merge pull request #18836 from smowton/smowton/admin/maven-download-failure-test
Java: Add integration test for failure to download a particular Maven version
2025-03-12 10:11:14 +00:00
Tom Hvitved
902b2ff641 Merge pull request #18983 from hvitved/ruby/synth-global-test
Ruby: Add `SyntheticGlobal` test
2025-03-12 10:57:42 +01:00
Chris Smowton
4205d5ecea Change note 2025-03-12 09:21:09 +00:00
Chris Smowton
c43b2b167f Fix test on Windows 2025-03-12 09:21:08 +00:00
Chris Smowton
0c99ae2800 Add Win32 Maven command 2025-03-12 09:21:07 +00:00
Chris Smowton
cd0aebefa4 Add integration test for failure to download a particular Maven version 2025-03-12 09:21:06 +00:00
Óscar San José
ca6f3ffa43 Merge pull request #18742 from github/oscarsj/add-actions-analysis
Add actions to codeql analysis workflow
2025-03-12 10:11:58 +01:00
Napalys Klicius
eddd724ea0 Merge pull request #18981 from Napalys/js/db_stats_fix
JS: Update database.stats
2025-03-12 09:24:09 +01:00
Tom Hvitved
a574c9f276 Ruby: Add SyntheticGlobal test 2025-03-12 09:22:41 +01:00
Michael Nebel
9e8339db6d Merge pull request #18961 from michaelnebel/csharp/ccr-local-not-disposed
C#: Add `cs/local-not-disposed` to the CCR suite.
2025-03-12 09:18:40 +01:00
Michael Nebel
4a3e463918 Merge pull request #18950 from michaelnebel/csharp/localnotdisposed
C#: Exclude Task from cs/local-not-disposed.
2025-03-12 09:17:22 +01:00
Napalys
979a5b4587 Updated stats file with intersection, subtraction and quoted_string. 2025-03-12 09:02:53 +01:00
Simon Friis Vindum
b3601b1ac2 Merge pull request #18946 from paldepind/rust-regex-injection
Rust: Add regular expression injection query
2025-03-12 08:15:54 +01:00
M Starch
f01737a4c0 Fixing BasicIntTypes to allow C Standard Integers and 'bool'
The purpose of this check is to ensure that all integral types used by the code point to some fixed size type (e.g. an unsigned 8-bit integer). However; the previous implementation only allowed JPL style typedefs (i.e. U8) and ignored C standard integer types (i.e. uint8_t). This causes the query to false-positive when a typedef resolves to a C standard int type.

'bool' has also be allowed as part of the exclusions list as it represents distinct values 'true' and 'false' in C++ code.
2025-03-11 14:56:57 -07:00
Jami
269f9fa7c9 Merge pull request #18978 from jcogs33/jcogs33/java/rename-springframework-stubs-dir
Java: rename springframework stubs directory from 5.3.8 to 5.8.x
2025-03-11 16:39:30 -04:00
Jami Cogswell
e17486a9d8 Java: rename springframework stubs directory from 5.3.8 to 5.8.x 2025-03-11 15:20:58 -04:00
Jami
ea9b0462bf Merge pull request #18793 from jcogs33/jcogs33/java/spring-boot-actuators-promo
Java: Promote Spring Boot Actuators query from experimental
2025-03-11 14:42:14 -04:00
Remco Vermeulen
da720b8b6e Merge pull request #18966 from github/rvermeulen/add-missing-dependency
Add missing dependency
2025-03-11 09:43:45 -07:00
Geoffrey White
daa57a9cb5 Merge pull request #18952 from geoffw0/unusedvarfix
Rust: Improve rust/unused-variable and rust/unused-value
2025-03-11 15:52:42 +00:00
Asger F
356b9e68c3 JS: Change note 2025-03-11 16:51:51 +01:00
Asger F
8599ab2503 JS: Fix attributes nodes missing an enclosing callable 2025-03-11 16:47:48 +01:00
Geoffrey White
044d0a13f0 Rust: Include WeakSensitiveDataHashing sinks as well. 2025-03-11 15:41:38 +00:00
Geoffrey White
4924a0faf3 Rust: Introduce a QuerySink class, common to all query sinks. 2025-03-11 15:41:37 +00:00
Geoffrey White
dc7d7f121e Rust: Clarify doc on FlowSink, FlowSource. 2025-03-11 15:41:35 +00:00
Michael Nebel
371a72ecec C#: Move Bad test into other file to avoid sync-files breakage. 2025-03-11 14:54:13 +01:00
Michael Nebel
1286420d39 C#: Add change-note. 2025-03-11 14:42:51 +01:00
Michael Nebel
120af3611a C#: Update test expected output. 2025-03-11 14:39:09 +01:00
Michael Nebel
150aa5d1cf C#: Include normal switch/case statements in the white list and allow the use of wildcards when there is a condition. 2025-03-11 14:37:56 +01:00
Michael Nebel
c15137e992 C#: Update test expected output. 2025-03-11 14:36:34 +01:00
Michael Nebel
f42ae48ffa C#: Add some switch case examples. 2025-03-11 14:35:04 +01:00
Asger F
087c555796 Merge pull request #18670 from asgerf/js/test-suite
JS: Update test suite to use post-processed inline expectations
2025-03-11 13:58:01 +01:00
Michael Nebel
4451e55bba C#: Convert cs/constant-condition tests to inline expectation tests. 2025-03-11 13:35:05 +01:00
Asger F
6499e5458b JS: Restore line lost in merge
'Accept incoming changes' in vscode somehow deleted this line.
2025-03-11 13:19:29 +01:00
Asger F
e8c5e4d006 Merge branch 'main' into js/test-suite 2025-03-11 13:17:08 +01:00
Arthur Baars
3991dc3aa3 Rust: improve performance of Crate::toString 2025-03-11 12:57:16 +01:00
Napalys Klicius
a4f2264f17 Merge pull request #18899 from Napalys/js/ecma-2024-regex
JS: Add ECMAScript 2024 `v` Flag Operators for Regex Parsing
2025-03-11 12:50:44 +01:00
Simon Friis Vindum
1e0b78ebd3 Rust: Update regex injection description
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-03-11 12:47:12 +01:00
Michael Nebel
744936fbd7 C#: Add cs/local-not-disposed to the CCR suite. 2025-03-11 12:46:16 +01:00
Arthur Baars
66ab3a8002 Rust: add Locatable::fromSource 2025-03-11 12:32:56 +01:00
Napalys
c001435258 Refactor Angular2 API to use httpClientApiNode for HttpClient method calls 2025-03-11 12:32:24 +01:00
Owen Mansel-Chan
22b36a86ce Merge pull request #18940 from owen-mc/go/unhandled-close-writable-handle
Go: Add test for FP in `go/unhandled-writable-file-close`
2025-03-11 11:13:36 +00:00
Napalys Klicius
a900f2cea4 Update javascript/ql/lib/change-notes/2025-03-03-regex-v.md
Co-authored-by: Asger F <asgerf@github.com>
2025-03-11 11:57:28 +01:00
Óscar San José
8b33dcd018 Merge branch 'main' into oscarsj/add-actions-analysis 2025-03-11 11:51:24 +01:00
Geoffrey White
5c394a9371 Correct modelgenerator exclusion for the security-experimental-selectors.yml suite helper. 2025-03-11 08:53:47 +00:00
Napalys Klicius
3191b2c6fc Update javascript/extractor/src/com/semmle/js/parser/RegExpParser.java
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2025-03-11 09:40:24 +01:00
Napalys Klicius
7c9edff33c Merge pull request #18964 from Napalys/js/mark_down_table
JS: Refactor `markdown-table` library modeling
2025-03-11 09:02:56 +01:00
Asger F
b583e52a87 Merge pull request #18962 from asgerf/js/local-type-indirection
JS: Unfold local type aliases in getAnUnderlyingType
2025-03-11 08:54:03 +01:00
Napalys
08c07f815f Improved documentation, removed union fram change note. 2025-03-11 08:30:17 +01:00
Napalys Klicius
1ad8b4677d Update javascript/ql/lib/change-notes/2025-03-10-js-refactor-markdown-table.md
Co-authored-by: Asger F <asgerf@github.com>
2025-03-11 08:07:49 +01:00
Remco Vermeulen
8f603251d7 Add missing dependency
The query pack has suites that rely on the `codeql/suite-helpers` pack, but doesn't include it as a dependency.
This will cause error when resolving suites referring the Actions query pack.
2025-03-10 18:31:01 -07:00
Jami Cogswell
41aeb874f1 Java: add change note 2025-03-10 18:56:13 -04:00
Jami Cogswell
76433a31f7 Java: generalize sanitizer and add tests 2025-03-10 18:56:01 -04:00
Jami Cogswell
ab3690f666 Java: initial sanitizer 2025-03-10 18:55:56 -04:00
Jami Cogswell
94080a6e47 Java: initial tests 2025-03-10 18:55:54 -04:00
Erik Krogh Kristensen
e6884cf705 Merge pull request #18959 from erik-krogh/faster-routing
JS: ensure the result from getPathFromFork is unique (to avoid a blowup)
2025-03-10 21:45:14 +01:00
Jaroslav Lobačevski
fa35d6c3ac Minor example workflow fix 2025-03-10 20:43:16 +00:00
Asger F
73c0a93fc4 Merge pull request #18963 from asgerf/js/disable-tainted-nodes
JS: Remove TaintedNodes.ql from default meta query suite
2025-03-10 20:49:46 +01:00
Napalys
4a365857f1 Added change note. 2025-03-10 19:40:41 +01:00
Napalys
13c701948a Refactor Markdown taint steps and update expected results for reflected XSS tests 2025-03-10 19:27:36 +01:00
Geoffrey White
7717f92ec6 Rust: Clean up the test (it turns out a nested UnusedVariable.qlref is not needed) and accept consistency check changes. 2025-03-10 17:59:19 +00:00
Paolo Tranquilli
d1876251ee Merge pull request #18918 from github/redsun82/rust-tweak-qltest-logs
Rust: tweak qltest logs
2025-03-10 17:47:30 +01:00
Simon Friis Vindum
b48fd99913 Rust: Applying suggestions to documentation 2025-03-10 16:30:52 +01:00
Erik Krogh Kristensen
b945466b9f Merge pull request #18892 from asgerf/js/membership-regexp-test
JS: Sharpen up EnumerationRegExp
2025-03-10 16:21:54 +01:00
Asger F
4d02993efa JS: Remove TaintedNodes.ql from default meta query suite 2025-03-10 16:15:13 +01:00
Asger F
f7d2abf3e3 JS: Unfold local type aliases in getAnUnderlyingType 2025-03-10 16:09:16 +01:00
Asger F
91e9b23cf7 JS: Add test showing FN source 2025-03-10 16:08:55 +01:00
Simon Friis Vindum
5c83644360 Rust: Use CWE 20 for regex injection query 2025-03-10 14:52:25 +01:00
Paolo Tranquilli
79e06153ed Merge pull request #18813 from github/redsun82/rust-turn-off-ra-resolution
Rust: add flag to turn off extractor path resolution
2025-03-10 14:52:07 +01:00
Asger F
08c9f6fa1e Merge pull request #18798 from erik-krogh/ts58
JS: upgrade TypeScript to 5.8
2025-03-10 14:48:03 +01:00
Simon Friis Vindum
0e965f7616 Rust: Accept changes 2025-03-10 14:39:37 +01:00
Michael Nebel
ca553bf1a2 Merge pull request #18932 from michaelnebel/csharp/ismatchingconstantunknowtype
C#: Special handling of unknown types in `isMatchingConstant`.
2025-03-10 14:37:27 +01:00
Asger F
0f201d2070 JS: Line number changes in redos test case 2025-03-10 14:36:49 +01:00
Asger F
d84368eb54 Merge pull request #18858 from Napalys/js/react-relay
JS: React-relay support
2025-03-10 14:33:23 +01:00
Asger F
75ed0d0b46 JS: Remove duplicate '$ Alert' in libxml test 2025-03-10 14:23:44 +01:00
Asger F
6a47678b60 JS: Fix broken alert comment in HeterogenousComparison 2025-03-10 14:23:43 +01:00
Asger F
c88eac486a JS: Remove stray $ Alert comment inside a doc comment 2025-03-10 14:23:42 +01:00
Asger F
0df893e280 JS: Remove blank lines and add trailing newline 2025-03-10 14:23:40 +01:00
Asger F
6fe3a368eb JS: Remove blank line and add trailing newline to file 2025-03-10 14:23:39 +01:00
Asger F
b9dd594d69 JS: Remove blank lines 2025-03-10 14:23:38 +01:00
Asger F
f7532c09e6 JS: Remove blank line 2025-03-10 14:23:37 +01:00
Asger F
122f68e525 Update javascript/ql/test/query-tests/Security/CWE-400/ReDoS/polynomial-redos.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:22:22 +01:00
Asger F
8ee5b237e2 Update javascript/ql/test/query-tests/Security/CWE-730/server-crash.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:21:46 +01:00
Asger F
92dfdc8194 Update javascript/ql/test/query-tests/Security/CWE-116/IncompleteSanitization/UnsafeHtmlExpansion.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:19:33 +01:00
Asger F
21d42bcd21 Update javascript/ql/test/query-tests/Security/CWE-079/ExceptionXss/exception-xss.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:19:01 +01:00
Asger F
dad4838d3b Update javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/tst.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:18:42 +01:00
Asger F
017f458534 Update javascript/ql/test/query-tests/Security/CWE-078/UselessUseOfCat/uselesscat.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:18:22 +01:00
Asger F
24c9b2ef9b Update javascript/ql/test/query-tests/Security/CWE-078/UselessUseOfCat/uselesscat.js
Co-authored-by: Napalys Klicius <napalys@github.com>
2025-03-10 14:18:02 +01:00
Jami
ad63dd946c Apply suggestions from docs review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-03-10 09:01:04 -04:00
Napalys
9c8e0a5537 Applied changes from comments.
Co-authored-by: Asgerf <asgerf@github.com>
2025-03-10 13:29:05 +01:00
Michael Nebel
21aa62c18c C#: Address review comments. 2025-03-10 13:28:20 +01:00
Simon Friis Vindum
344fea2128 Rust: Enable local threat models in tests and use active threat models for regex query 2025-03-10 13:23:20 +01:00
Michael Nebel
a16c2c80f7 C#: Add change-note. 2025-03-10 13:03:01 +01:00
erik-krogh
b70643b1a1 ensure the result from getPathFromFork is unique (to avoid a blowup) 2025-03-10 12:53:51 +01:00
Michael Nebel
26f0f7f6da Update csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/NoDisposeCallOnLocalIDisposable.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-03-10 12:40:25 +01:00
Napalys
d077d6807a Applied changes from comments
Co-authored-by: Asgerf <asgerf@github.com>
2025-03-10 12:24:45 +01:00
Mathias Vorreiter Pedersen
1aa1829804 Merge pull request #18955 from MathiasVP/share-more-indirect-operands-and-instructions
C++: Share indirect dataflow nodes across `CopyValue` instructions
2025-03-10 04:14:33 -07:00
Geoffrey White
bb39955a24 Rust: Move the undefined_macros test cases to their own subdirectory. 2025-03-10 11:09:33 +00:00
Geoffrey White
aa35e82fc1 Rust: Add a test exposing the function scope limitation. 2025-03-10 10:39:25 +00:00
Napalys
f48eab903f Add RegExpSubtraction class to support subtraction terms in regex 2025-03-10 11:18:10 +01:00
Napalys
8cbc0aea05 Add RegExpQuotedString class to support quoted string escapes in regex 2025-03-10 11:18:03 +01:00
Michael Nebel
13226edbeb C#: Add change-note. 2025-03-10 10:54:20 +01:00
Arthur Baars
9814aef71f Address review comment 2025-03-10 10:31:31 +01:00
Arthur Baars
f17f3758ed Rust: update expected output 2025-03-10 10:19:12 +01:00
Arthur Baars
5855a12b03 Rust: fix crate graph after rust-analyzer upgrade 2025-03-10 10:16:28 +01:00
Arthur Baars
58d7933d4f Run: misc/bazel/3rdparty/update_cargo_deps.sh 2025-03-10 10:16:27 +01:00
Arthur Baars
845f002124 Rust: add file for root modules of crates 2025-03-10 10:16:26 +01:00
Arthur Baars
8961a22a71 Rust: crate_graph: extract only public items 2025-03-10 10:16:24 +01:00
Arthur Baars
ff321194b7 Rust: improve modules test case 2025-03-10 10:16:23 +01:00
Arthur Baars
e5b039702a Rust: update integration tests 2025-03-10 10:16:22 +01:00
Arthur Baars
fce637fc3a Rust: add some tests for the crate graph 2025-03-10 10:16:21 +01:00
Arthur Baars
8ec8824cb7 Rust: implement Crate::toString 2025-03-10 10:16:20 +01:00
Arthur Baars
9bba666929 Rust: QL Test: exclude crate graph related elements 2025-03-10 10:16:19 +01:00
Arthur Baars
c601adfc65 Rust: add ExtractionStep::CrateGraph 2025-03-10 10:16:18 +01:00
Arthur Baars
98a40967d2 Rust: ignore crate graph elements from summary stats and AST no-location checks
These elements depend on the version of the standard libraries and platform, and
in addition no location information is extracted for them at the moment.

f
2025-03-10 10:16:15 +01:00
Arthur Baars
e21a7f5336 Rust: extract crate graph 2025-03-10 10:16:13 +01:00
Arthur Baars
75ca04f3dd Rust: add Crate to dbscheme 2025-03-10 10:16:12 +01:00
Erik Krogh Kristensen
8eb69079b7 fix typo from copy-pasted change-note
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-03-10 09:41:48 +01:00
Michael Nebel
0676c21a4b Merge pull request #18866 from michaelnebel/csharp/ccr-call-to-object-tostring
C#: Add cs/call-to-object-tostring to the CCR query suite.
2025-03-10 09:41:11 +01:00
erik-krogh
752fc64f42 bump to stable 5.8 release 2025-03-10 09:21:25 +01:00
erik-krogh
b641caa508 update TypeScript version to 5.8.1-RC 2025-03-10 09:20:29 +01:00
Simon Friis Vindum
179ea041f4 Rust: Merge query implementation into one file 2025-03-10 09:09:13 +01:00
Owen Mansel-Chan
88e96829fb Apply suggestions from code review 2025-03-07 23:11:01 +00:00
Owen Mansel-Chan
166d5230f7 Apply suggestions from code review 2025-03-07 22:14:22 +00:00
Mathias Vorreiter Pedersen
f9a7ac4e89 C++: Accept test changes. 2025-03-07 19:59:06 +00:00
Mathias Vorreiter Pedersen
b06902a3b1 C++: Share more indirect operands and instructions. 2025-03-07 19:59:05 +00:00
Aditya Sharad
52dac47d68 Merge pull request #18953 from github/jonjanego-patch-1-more-escaping
Update codeql-cli-2.20.4.rst
2025-03-07 23:01:18 +05:30
Andrew Eisenberg
e73745d3ca Merge pull request #18945 from github/aeisenberg/move-to-experimental
Move UnversionedImmutableAction.ql to experimental
2025-03-07 09:26:11 -08:00
Geoffrey White
3d0e44e156 Rust: Accept consistency check failures. 2025-03-07 16:05:01 +00:00
Jon Janego
b9ec58ba73 Update codeql-cli-2.20.4.rst 2025-03-07 09:27:47 -06:00
Florin Coada
c93f671f7b Merge pull request #18951 from github/coadaflorin-patch-for-escaping
Update codeql-cli-2.20.4.rst
2025-03-07 15:24:02 +00:00
Florin Coada
7564255542 Update codeql-cli-2.20.4.rst 2025-03-07 15:16:52 +00:00
Michael Nebel
3f8679a099 C#: Update test expected output. 2025-03-07 16:00:28 +01:00
Geoffrey White
fe139e5bea Rust: Rearrange the unused variable query logic so that it's clearer what the comments apply to. 2025-03-07 14:55:34 +00:00
Geoffrey White
cc902a6ad1 Rust: Fix unused value FPs due to unexpanded macro calls as well. 2025-03-07 14:48:27 +00:00
Geoffrey White
e0839a369c Rust: Fix unused variable FPs due to unexpanded macro calls. 2025-03-07 14:40:02 +00:00
Geoffrey White
b2e3352aa8 Rust: Add a few more macro tests. 2025-03-07 14:36:26 +00:00
Anders Schack-Mulligen
d075466958 Merge pull request #18941 from aschackmull/ssa/refactor4
Ssa: Extend consistency checks and reduce phi read nodes
2025-03-07 15:18:02 +01:00
Michael Nebel
7a99dfaebe C#: Do flag missing Dispose calls on Task and Task<>. 2025-03-07 15:14:07 +01:00
Taus
cef8f7b123 Merge pull request #18739 from paldepind/change-note-script-editor
Change note creation script uses EDITOR environment variable
2025-03-07 14:53:14 +01:00
Michael Nebel
f58c72ed59 C#: Add example for local not disposed involving tasks. 2025-03-07 14:44:29 +01:00
Michael Nebel
3903a90a11 C#: Update expected test output. 2025-03-07 13:22:37 +01:00
Michael Nebel
b5ea34fcf3 C#: We can't do any reasoning based on unknown types on whether they match in a pattern. 2025-03-07 13:22:35 +01:00
Michael Nebel
5c0fc1f75b C#: Add BMN tests for cs/constant-condition. 2025-03-07 13:22:34 +01:00
Michael Nebel
431586bb70 C#: Make the same folder structure for BMN tests as used for traced extractor tests. 2025-03-07 13:22:32 +01:00
Simon Friis Vindum
494f914070 Rust: Add regular expression injection query 2025-03-07 12:37:30 +01:00
Geoffrey White
abe14babb1 Rust: Clean up the existing macro cases for the unusedentities test. 2025-03-07 11:24:42 +00:00
Anders Schack-Mulligen
3508ca89e6 Java: Restrict SSA reads to the reachable CFG. 2025-03-07 11:13:53 +01:00
Anders Schack-Mulligen
b1e53f5816 Rust: Accept consistency failure. 2025-03-07 11:11:49 +01:00
Jeroen Ketema
87ee191409 Merge pull request #18928 from jketema/desc
C++: Improve query description and fix alignment of the text
2025-03-07 10:47:31 +01:00
Michael Nebel
c9796ee297 C#: Add cs/call-to-object-tostring to the CCR query suite. 2025-03-07 09:52:08 +01:00
Michael Nebel
82b7a19df1 Merge pull request #18894 from michaelnebel/csharp/garbagetypes
C#: Handle some BMN garbage types.
2025-03-07 09:19:48 +01:00
Napalys
e0f20b2bd1 Add RegExpIntersection class to support intersection terms in regex 2025-03-07 08:58:19 +01:00
Simon Friis Vindum
fc186eb136 Include -r flag to code when creating change note
Co-authored-by: Taus <tausbn@github.com>
2025-03-07 08:47:21 +01:00
Napalys
9cc26208d4 Add test cases for v flag operators in RegExp library-tests. 2025-03-07 08:32:10 +01:00
Jon Janego
468c12e656 Merge pull request #18944 from github/changedocs-2.20.6
Changedocs for 2.20.6
2025-03-06 17:31:59 -06:00
Andrew Eisenberg
2a0e133768 Move UnversionedImmutableAction.ql to experimental
This query will give too many false positives for users until
immutable actions is released.
2025-03-06 15:08:02 -08:00
Jon Janego
b742ed21db Merge branch 'rc/3.17' into changedocs-2.20.6 2025-03-06 16:51:25 -06:00
Jon Janego
65d5e527c0 Apply suggestions from code review
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-03-06 16:46:57 -06:00
Jon Janego
da7b9b7c20 rearranging golang 1.24 support 2025-03-06 15:32:48 -06:00
Jon Janego
3652a45a97 Update codeql-cli-2.20.4.rst 2025-03-06 15:10:42 -06:00
Jon Janego
1385de223f Update codeql-cli-2.20.4.rst 2025-03-06 15:10:11 -06:00
Jon Janego
2b818e3a4f Update codeql-cli-2.19.4.rst 2025-03-06 15:04:55 -06:00
Jon Janego
fc6794f6df adding 2.20.6 sitedocs 2025-03-06 14:12:54 -06:00
Tom Hvitved
5c3f21b20c Merge pull request #18937 from hvitved/rust/fix-bad-joins
Rust: Fix bad joins
2025-03-06 19:11:31 +01:00
Napalys
c12c12c416 Added modeling for react-relay functions that retrieve data. 2025-03-06 18:30:21 +01:00
Napalys
5a1991bb69 Added test cases for react-relay functions that retrieve data 2025-03-06 18:10:27 +01:00
Napalys
89040d0d06 Added missing response and request MaD source kinds. 2025-03-06 18:10:25 +01:00
Napalys
0166e76cca Add change note 2025-03-06 18:10:24 +01:00
Napalys
1443f314a1 Added react-relay useFragment as threat model source. 2025-03-06 18:10:23 +01:00
Napalys
1e3b8625e6 Added a test case where useFragment from react-relay should be marked as a source but isn't 2025-03-06 18:10:21 +01:00
Michael B. Gale
16e84d0ad0 Merge pull request #18929 from github/mbg/go/filter-more-vendor-dirs
Go: Support more dependency managers in `IsGolangVendorDirectory`
2025-03-06 16:10:18 +00:00
Michael B. Gale
b872c60e1c Go: Support more dependency managers in IsGolangVendorDirectory 2025-03-06 15:40:44 +00:00
Anders Schack-Mulligen
da579c27fc Merge pull request #18934 from aschackmull/ssa/refactor5
SSA: Replace the Guards interface in the SSA data flow integration.
2025-03-06 15:11:52 +01:00
Taus
6546bb1b1d Merge branch 'main' into tausbn/python-fix-match-pruning-logic 2025-03-06 14:37:58 +01:00
Anders Schack-Mulligen
97a3411c0c Ruby: Accept test output. 2025-03-06 13:58:14 +01:00
Michael Nebel
61c043fd4a Merge pull request #18935 from michaelnebel/csharp/useless-if-statement
C#: Fewer alerts in `cs/useless-if-statement`.
2025-03-06 13:53:20 +01:00
Taus
a9ab39da1b Merge pull request #18448 from github/tausbn/python-add-type-annotation-metrics-query
Python: Add metrics query for type annotations
2025-03-06 13:52:26 +01:00
Anders Schack-Mulligen
5e722eecf7 Ruby: Push in casts to Definition to delete the then unused DefinitionExt. 2025-03-06 13:31:31 +01:00
Anders Schack-Mulligen
9e6bdbbcbb SSA: Don't add phi-reads for frontiers of uncertain reads. 2025-03-06 12:47:38 +01:00
Anders Schack-Mulligen
947a85ed28 Java: Enable SSA consistency queries. 2025-03-06 12:47:38 +01:00
Anders Schack-Mulligen
d95114fb1d SSA: Extend consistency queries. 2025-03-06 12:47:37 +01:00
Michael Nebel
fb3ce464be C#: Address review comments. 2025-03-06 11:48:35 +01:00
Michael B. Gale
7e984ad48e Merge pull request #18938 from github/dependabot/go_modules/go/extractor/extractor-dependencies-94582fc3a1
Bump the extractor-dependencies group in /go/extractor with 2 updates
2025-03-06 10:47:50 +00:00
Owen Mansel-Chan
7b2912376b Add failing test for os.File.Sync with defered Close calls 2025-03-06 10:14:28 +00:00
Owen Mansel-Chan
cbe7edd9c6 Merge pull request #18907 from teuron/cwe-925
[CWE-925] Intent verification is only needed on non-empty onReceive methods.
2025-03-06 10:00:05 +00:00
Joe Farebrother
2692b8fa9f Merge pull request #18936 from joefarebrother/python-add-not-named-self-cls-ccr
Python: Include `py/not-named-self` and `py/not-named-cls` in the CCR suite
2025-03-06 09:51:14 +00:00
Owen Mansel-Chan
0c091ffe31 Merge pull request #18920 from owen-mc/go/mad/improve-sync-models
Go: Do not track taint into a `sync.Map` via the key of a key-value pair
2025-03-06 09:40:49 +00:00
Lukas Abfalterer
32e1589745 Update java/ql/src/change-notes/2025-03-03-fix-improper-intent-verification-query.md
Co-authored-by: Edward Minnix III <egregius313@github.com>
2025-03-06 09:57:16 +01:00
Tom Hvitved
ec063d0dbd Rust: Fix bad joins
```
Evaluated relational algebra for predicate _Synth::Synth::TFormatArgument#5cbf2ffd_63#join_rhs__Format::Format.getArgumentRef/0#dispred#38d664c__#antijoin_rhs@889ee4br with tuple counts:
           11356  ~0%    {5} r1 = JOIN `_Format::Format.getArgumentRef/0#dispred#38d664cb_Format::Format.getParent/0#dispred#f6ec3e8b_10#joi__#shared` WITH Synth::Synth::TFormatArgument#5cbf2ffd_63#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.0
        19631351  ~0%    {6}    | JOIN WITH name_texts_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.0
           45933  ~0%    {6}    | JOIN WITH format_args_arg_names_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
             747  ~0%    {5}    | JOIN WITH format_args_expr_args_02#join_rhs ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                         return r1

Evaluated relational algebra for predicate __Format::Format.getParent/0#dispred#f6ec3e8b_FormatArgument::FormatArgument.getParent/0#dispred#864__#antijoin_rhs@01d9d70k with tuple counts:
        19631351  ~1%    {6} r1 = JOIN `_Format::Format.getParent/0#dispred#f6ec3e8b_FormatArgument::FormatArgument.getParent/0#dispred#8641__#shared` WITH name_texts_10#join_rhs ON FIRST 1 OUTPUT Lhs.4, Lhs.0, Lhs.1, Lhs.2, Lhs.3, Rhs.1
         5173010  ~0%    {7}    | JOIN WITH format_args_expr_args ON FIRST 1 OUTPUT Rhs.2, Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.0
             747  ~0%    {5}    | JOIN WITH format_args_arg_names ON FIRST 2 OUTPUT Lhs.2, Lhs.3, Lhs.4, Lhs.5, Lhs.6
                         return r1

Evaluated relational algebra for predicate _NamedFormatArgument::NamedFormatArgument#18940f8e__Format::Format.getParent/0#dispred#f6ec3e8b_10#j__#antijoin_rhs@dafbd6hr with tuple counts:
           11356  ~0%    {5} r1 = JOIN `_Format::Format.getParent/0#dispred#f6ec3e8b_10#join_rhs_FormatArgument::FormatArgument.getParent/0#__#shared` WITH NamedFormatArgument::NamedFormatArgument#18940f8e ON FIRST 1 OUTPUT Rhs.4, Lhs.1, Lhs.2, Lhs.3, Lhs.0
        19631351  ~0%    {6}    | JOIN WITH name_texts_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.0
           45933  ~0%    {6}    | JOIN WITH format_args_arg_names_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
             747  ~0%    {5}    | JOIN WITH format_args_expr_args_02#join_rhs ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                         return r1

```
2025-03-06 09:02:42 +01:00
dependabot[bot]
1037626a28 Bump the extractor-dependencies group in /go/extractor with 2 updates
Bumps the extractor-dependencies group in /go/extractor with 2 updates: [golang.org/x/mod](https://github.com/golang/mod) and [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/mod` from 0.23.0 to 0.24.0
- [Commits](https://github.com/golang/mod/compare/v0.23.0...v0.24.0)

Updates `golang.org/x/tools` from 0.30.0 to 0.31.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.30.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 04:02:51 +00:00
Owen Mansel-Chan
63bfa36be8 Convert to inline expectations test 2025-03-05 21:39:04 +00:00
Ed Minnix
ca14c5722d Add likely XSS case to integration tests 2025-03-05 12:40:26 -05:00
Ed Minnix
e2f0a61f89 Add XSS test to integration tests 2025-03-05 12:40:02 -05:00
Ed Minnix
a0fe7d6a1a Remove unused line 2025-03-05 11:04:41 -05:00
Joe Farebrother
a06de21f45 Python: Include py/not-named-self and py/not-named-cls in the CCR suite. 2025-03-05 15:13:20 +00:00
Michael Nebel
c73eeec814 C#: Add change note. 2025-03-05 15:33:02 +01:00
Michael Nebel
dd7d5d031c C#: Update test expected output. 2025-03-05 15:27:01 +01:00
Michael Nebel
35fbaf4ac3 C#: Do flag empty if statements if there is a comment in cs/useless-if-statement. 2025-03-05 15:26:39 +01:00
Michael Nebel
361bdfac12 C#: Add a testcase with an empty if statement containing a comment. 2025-03-05 15:22:22 +01:00
Owen Mansel-Chan
f2947f7066 Fix indentation 2025-03-05 14:13:53 +00:00
Jami Cogswell
0eec951218 Java: update change note to mention removal from Community Packs 2025-03-05 08:55:51 -05:00
Michael Nebel
a9d45a2aa2 C#: Add some tests for cs/useless-if-statement. 2025-03-05 14:32:41 +01:00
Lukas Abfalterer
b4c75d832c Merge branch 'main' into cwe-925 2025-03-05 14:15:07 +01:00
Anders Schack-Mulligen
c6761db2fc SSA: Replace the Guards interface in the SSA data flow integration. 2025-03-05 13:29:31 +01:00
Anders Schack-Mulligen
a02735326a Ruby: Remove some DefinitionExt references and deprecate the rest. 2025-03-05 12:57:15 +01:00
Lukas Abfalterer
41e9a837e5 Fix naming
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2025-03-05 12:50:54 +01:00
Mathias Vorreiter Pedersen
38bf9c6835 Merge pull request #18908 from aschackmull/cpp/branchlimit-adjustment-refactor
C++: Change countNumberOfBranchesUsingParameter to match qldoc closer.
2025-03-05 11:21:38 +00:00
Anders Schack-Mulligen
709d36b502 Merge pull request #18869 from aschackmull/ssa/refactor3
Ssa: Update qltests including consistency checks
2025-03-05 11:40:27 +01:00
Napalys
d884e5fe6b Upgraded javascrip database schema 2025-03-05 11:06:56 +01:00
Napalys
95d05ceab8 Now store vFlagEnabled instead of each time searching for it.
Added `uFlagEnabled` for checking how should `\p{}` be treated. And small optimization.
2025-03-05 10:34:38 +01:00
Lukas Abfalterer
c9b75afc2a Fix QLL and add change notes with tests 2025-03-05 10:23:35 +01:00
Napalys
8086c25abe Removed Union as standard character class is already an union. 2025-03-05 10:07:20 +01:00
Michael Nebel
5c931fa897 C#: Improve comments. 2025-03-05 09:50:52 +01:00
Napalys
8099423b6d Renamed character class operators lists to elements. 2025-03-05 09:34:21 +01:00
Napalys
9ea89cd63f Added a test case from #18854 2025-03-05 09:34:20 +01:00
Napalys
c7f03df1eb Added change note 2025-03-05 09:34:18 +01:00
Michael Nebel
d5ee93dbbc C#: Anonymous types should not be considered unknown. 2025-03-05 09:04:58 +01:00
Michael Nebel
3b764b0640 C#: Update test expected output. 2025-03-05 09:04:56 +01:00
Michael Nebel
fc5a49ef84 C#: Handle some broken types in BMN. 2025-03-05 09:04:54 +01:00
Michael Nebel
e835d8b168 C#: Change the populate logic context. It looks like a mistake that the only flag set is Standalone. 2025-03-05 09:04:53 +01:00
Michael Nebel
c2b835da40 C#: Re-factor the check whether we are in standalone mode. 2025-03-05 09:04:52 +01:00
Michael Nebel
9af170f60e C#: Add BMN test using broken types. 2025-03-05 09:04:50 +01:00
Michael Nebel
5551aebaa9 C#: Add a primary ql class for UnknownType. 2025-03-05 09:04:49 +01:00
Ed Minnix
133c6fa400 Fix test expectations 2025-03-05 01:13:31 -05:00
Ed Minnix
22e958b245 Fix jump node by using associated property 2025-03-05 01:13:29 -05:00
Ed Minnix
8ea6974868 XSS qlref 2025-03-05 01:13:27 -05:00
Ed Minnix
97e00ae053 Fix formatting 2025-03-05 01:13:26 -05:00
Ed Minnix
824b182ca5 fixup! Add Name and NameList test classes 2025-03-05 01:13:12 -05:00
Ed Minnix
17da291910 fixup! Component parameter passing step 2025-03-05 01:13:09 -05:00
Ed Minnix
0463f48565 Add Name and NameList test classes 2025-03-05 01:13:03 -05:00
Ed Minnix
48b90b28c7 Component parameter passing step 2025-03-05 01:13:00 -05:00
Taus
bf3d9ee6a9 Python: Address review comments 2025-03-04 22:30:55 +00:00
Jeroen Ketema
e50ebfc8c2 C++: Improve query description and fix alignment of the text 2025-03-04 20:50:27 +01:00
Taus
f246ef764a Python: Update change note
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-03-04 18:09:54 +01:00
Jeroen Ketema
795a2e1175 Merge pull request #18923 from jketema/template-arguments
C++: Update template test to also output the value of template arguments
2025-03-04 17:56:14 +01:00
Chuan-kai Lin
c7dc8a364c Merge pull request #18925 from github/mergeback-2.20.6
Mergeback codeql-cli-2.20.6 to rc/3.17
2025-03-04 08:36:09 -08:00
Paolo Tranquilli
7a78766584 Merge pull request #18789 from github/redsun82/cargo-upgrade
Upgrade cargo dependencies
2025-03-04 17:34:58 +01:00
Jami Cogswell
82062e2847 Java: update test 2025-03-04 11:15:00 -05:00
Taus
50a01b1244 Python: Remove superfluous reference to FunctionExpr
This way we also get annotations that appear in `Lambda`s
2025-03-04 15:53:34 +00:00
Jami Cogswell
746f022cfa Java: add 'Spring' prefix to public class names 2025-03-04 10:34:16 -05:00
Jeroen Ketema
324499e447 C++: Update template test to also output the value of template arguments
These values are currently the same as the result that `getTemplateArgument`
yields. However, this will change with the upcoming frontend update.
2025-03-04 16:24:21 +01:00
Chuan-kai Lin
dbffe91a20 Merge pull request #18917 from github/smowton/admin/jdk-24-2.20.6
Update supported Java version
2025-03-04 07:10:10 -08:00
Owen Mansel-Chan
e2456ea59e Update go/ql/lib/change-notes/2025-03-04-improve-models-for-sync-map.md
Co-authored-by: Michael B. Gale <mbg@github.com>
2025-03-04 15:07:24 +00:00
Taus
5d3b40d514 Python: Add change note 2025-03-04 14:47:03 +00:00
Taus
88615f427b Python: Add support for forward declarations in unused var query
Fixes the false positive reported in
https://github.com/github/codeql/issues/18910

Adds a new `Annotation` class (subclass of `Expr`) which encompasses all
possible kinds of annotations in Python.

Using this, we look for string literals which are part of an annotation,
and which have the same content as the name of a (potentially) unused
global variable, and in that case we do not produce an alert.

In future, we may want to support inspecting such string literals more
deeply (e.g. to support stuff like "list[unused_var]"), but I think for
now this level of support is sufficient.
2025-03-04 14:41:45 +00:00
Tom Hvitved
b8dd2e551e Merge pull request #18919 from hvitved/rust/ast-consistency-internal
Rust: Move `AstConsistency.qll` into `internal`
2025-03-04 15:35:34 +01:00
Simon Friis Vindum
980ed23e63 Merge pull request #18922 from paldepind/rust-model-generation-require-name
Rust: Exclude functions without canonical path from model generation
2025-03-04 15:35:08 +01:00
Jeroen Ketema
45c4f3f898 Merge pull request #18914 from github/esteffin/bmn-include-file-resolution-statistics
C++ query to extract the number of errors due to include file resolution failure
2025-03-04 15:13:45 +01:00
Enrico Steffinlongo
e230166fe2 Add C++ query to extract the status of include file resolution 2025-03-04 13:57:17 +00:00
Taus
301ebcb12b Python: Extend test cases for "unused global var" query
Adds two test cases having to do with type annotations. The first one
demonstrates that type annotations (even if they are never executed by
the Python interpreter) count as uses for the purposes of the unused
variable query. The second one demonstrates that this is _not_ the case
if all such uses are inside strings (i.e. forward declarations), as we
do not currently inspect the content of these strings.
2025-03-04 13:52:31 +00:00
Paolo Tranquilli
e91911b4b4 Merge branch 'main' into redsun82/cargo-upgrade 2025-03-04 14:09:28 +01:00
Simon Friis Vindum
c89e648738 Rust: Exclude function without canonical path from model generation 2025-03-04 13:56:10 +01:00
Owen Mansel-Chan
07c041483d Add change note 2025-03-04 12:14:43 +00:00
Owen Mansel-Chan
36908e8ef0 Do not track taint for keys in sync.Map
There is no way to get the value of a key out of a `sync.Map`.
2025-03-04 12:11:49 +00:00
Paolo Tranquilli
4d10c4110a Rust: address review 2025-03-04 13:05:59 +01:00
Tom Hvitved
1f13f0009f Rust: Move AstConsistency.qll into internal 2025-03-04 13:00:09 +01:00
Jami
c22b05a6f4 Merge pull request #18900 from jcogs33/jcogs33/java/unreleased-lock-fp
Java: handle lock state check stored in variable for `java/unreleased-lock`
2025-03-04 06:38:56 -05:00
Paolo Tranquilli
e0d0dc9a80 Rust: tweak qltest logs
* verbosity is raised to DEBUG to have more information in the logs
* color codes are now skipped in the `qltest.log` file
* they are still printed out on the console when running with
  `--show-extractor-output`.
2025-03-04 12:33:14 +01:00
Anders Schack-Mulligen
6c89602691 SSA: Add some qldoc. 2025-03-04 12:24:25 +01:00
Anders Schack-Mulligen
f5eb2d94bc SSA: Use Definition.getLocation in DefinitionExt. 2025-03-04 12:24:25 +01:00
Anders Schack-Mulligen
5a909aa69c C#: Remove remaining DefinitionExt references. 2025-03-04 12:24:24 +01:00
Anders Schack-Mulligen
4c0e5f62cf Rust: Remove remaining DefinitionExt references. 2025-03-04 12:24:24 +01:00
Anders Schack-Mulligen
00b8c80c24 SSA/C#/Ruby/Rust: Clean up SSA consistency queries.
The RelevantDefinition class is no longer needed since the introduction
of LocationSig.
2025-03-04 12:24:23 +01:00
Anders Schack-Mulligen
8474a47c2b Rust: Switch test to use dedicated test module. 2025-03-04 12:24:23 +01:00
Anders Schack-Mulligen
122034fe8c Ruby: Switch test to use dedicated test module. 2025-03-04 12:24:23 +01:00
Anders Schack-Mulligen
f0993fc97e C#: Switch test to use dedicated test module. 2025-03-04 12:24:22 +01:00
Anders Schack-Mulligen
2f744ce3ec SSA: Expose module for qltesting adjacent references. 2025-03-04 12:24:22 +01:00
Anders Schack-Mulligen
9e03b12ba0 C#/Java/Ruby/Rust/SSA: Replace DefinitionExt with SourceVariable in data flow integration predicates. 2025-03-04 12:24:21 +01:00
Anders Schack-Mulligen
39bba7f5c2 SSA: Change a few DefinitionExt uses that are actually just Definitions. 2025-03-04 12:24:21 +01:00
Anders Schack-Mulligen
42eef9e4b7 SSA: Deprecate getDefinitionExt. 2025-03-04 12:24:20 +01:00
Chris Smowton
fba47877c7 Update supported Java version 2025-03-04 10:06:20 +00:00
Paolo Tranquilli
2a29239b01 Merge branch 'main' into redsun82/cargo-upgrade 2025-03-04 10:05:41 +01:00
Simon Friis Vindum
0d1865d718 Merge pull request #18872 from paldepind/rust-ref-mut
Rust: Allow SSA and some data flow for mutable borrows
2025-03-04 09:25:18 +01:00
Michael Nebel
96c0ca87fc Merge pull request #18865 from carldybdahl-microsoft/csharp/path-combine
Add CodeQL recommendation against Path.Combine
2025-03-04 08:51:04 +01:00
Chuan-kai Lin
df42ff6253 Merge pull request #18912 from github/post-release-prep/codeql-cli-2.20.6
Post-release preparation for codeql-cli-2.20.6
2025-03-03 12:45:35 -08:00
Ed Minnix
e6198baccb [change-note] couchbase source models 2025-03-03 13:28:37 -05:00
Ed Minnix
04d9c941aa [test] Add couchbase database model tests 2025-03-03 13:26:27 -05:00
Ed Minnix
19147eec40 Add couchbase models 2025-03-03 13:25:21 -05:00
github-actions[bot]
58f355ae5a Post-release preparation for codeql-cli-2.20.6 2025-03-03 18:18:15 +00:00
Chuan-kai Lin
c1dca1038a Merge pull request #18911 from github/release-prep/2.20.6
Release preparation for version 2.20.6
2025-03-03 09:22:19 -08:00
Chuan-kai Lin
17acb31f65 JS: Fix changelog formatting 2025-03-03 09:19:01 -08:00
github-actions[bot]
fa850cccb1 Release preparation for version 2.20.6 2025-03-03 17:13:19 +00:00
Carl Dybdahl
2f7cdf1bfa Improvements 2025-03-03 15:32:15 +01:00
Carl Dybdahl
b3447959fa Match autoformatting, add QLDoc references 2025-03-03 15:32:15 +01:00
Carl Dybdahl
d371723fe4 Fix test 2025-03-03 15:32:15 +01:00
Carl Dybdahl
d82295c54a Add QLDoc 2025-03-03 15:32:15 +01:00
Carl Dybdahl
aa6779f19f Add changelog 2025-03-03 15:32:15 +01:00
Carl Dybdahl
35fd4d226f Oops 2025-03-03 15:32:15 +01:00
Carl Dybdahl
44e6691e6d Add implementation and tests 2025-03-03 15:32:15 +01:00
Geoffrey White
7f56c67544 Merge pull request #18837 from geoffw0/overflowbuffer
C++: Improve and promote cpp/overflow-buffer
2025-03-03 14:17:12 +00:00
Anders Schack-Mulligen
5d91f2e119 C++: Change countNumberOfBranchesUsingParameter to match qldoc closer. 2025-03-03 15:14:28 +01:00
Napalys
c0202f6085 Updated dbscheme 2025-03-03 14:37:47 +01:00
Napalys
fe6de2f672 Added support for character class union in regex processing 2025-03-03 14:37:46 +01:00
Napalys
1e05f327d6 Added test cases for union. 2025-03-03 14:37:44 +01:00
Napalys
3664d50772 Added support for -- subtraction opetor. 2025-03-03 14:37:43 +01:00
Napalys
ee83c42b71 Added test cases for subtraction --. 2025-03-03 14:37:42 +01:00
Napalys
381b5ebe8a Added intersection support 2025-03-03 14:37:40 +01:00
Napalys
fa5093f6ad Added test cases for intersection 2025-03-03 14:37:39 +01:00
Napalys
2333c538d9 Added ability to parse nested character classes while using v flag. 2025-03-03 14:37:38 +01:00
Napalys
de6f3b1d04 Add additional test cases. 2025-03-03 14:37:37 +01:00
Napalys
ab7e08f40f Added test cases for nested character class. 2025-03-03 14:37:35 +01:00
Napalys
ed418be97a Add support for '\q{}' escape sequence in regular expressions. 2025-03-03 14:37:20 +01:00
Lukas Abfalterer
a3749530d6 The query should only report cases when the method is not empty. 2025-03-03 10:20:46 +01:00
Paolo Tranquilli
9740232df8 Merge branch 'main' into redsun82/cargo-upgrade 2025-03-03 10:15:17 +01:00
Chris Smowton
ee08e8b1fb Merge pull request #18888 from github/dbartol/actions-executable-bit
Set the executable bit on the scripts in the Actions extractor
2025-03-03 08:53:50 +00:00
Simon Friis Vindum
1225c5c828 Rust: Accept changes 2025-03-03 09:44:24 +01:00
Simon Friis Vindum
d8d882958d Merge branch 'main' into rust-ref-mut 2025-03-03 09:19:08 +01:00
Simon Friis Vindum
757067216d Merge pull request #18896 from paldepind/rust-model-ptr-rw
Rust: Model pointer read and write functions
2025-03-03 09:14:39 +01:00
Jami Cogswell
b0b95965f6 Java: add change note 2025-03-02 17:13:37 -05:00
Jami Cogswell
fbf7513f37 Java: handle lock state check stored in variable 2025-03-02 17:01:18 -05:00
Napalys
d162acf02c Added quoted string \q parser test cases 2025-03-02 17:09:01 +01:00
Napalys
cb448db3ce Exposed flags to the regex parser 2025-03-02 17:08:52 +01:00
Geoffrey White
7169c4be48 C++: Another attempt to make the fix more solid. I believe it can't produce negative numbers now. 2025-02-28 14:21:58 +00:00
Asger F
2e32e441b8 Update javascript/ql/src/change-notes/2025-02-28-membership-regexp-test.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-28 14:25:56 +01:00
Asger F
c8a89c4203 JS: Change note 2025-02-28 14:04:40 +01:00
Asger F
c3ad805fe8 JS: Sharpen up EnumerationRegExp 2025-02-28 13:58:11 +01:00
Asger F
d97d67359b JS: Add test case showing lack of flow through non-sanitising regexp 2025-02-28 13:58:08 +01:00
Simon Friis Vindum
c1ee20b2b9 Rust: Update generated models for Rust built-in libraries 2025-02-28 13:40:43 +01:00
Asger F
2a194a53af raw test output 2025-02-28 13:29:39 +01:00
Asger F
193b26e938 JS: Add query IDs 2025-02-28 13:29:37 +01:00
Asger F
33602ee52b JS: Convert some comments to JSX 2025-02-28 13:29:36 +01:00
Asger F
c67c5854ba Disable for more queries with alerts in JSON 2025-02-28 13:29:35 +01:00
Asger F
7bd01bf039 JS: Bulk update in UnneededDefensiveProgramming test
The history of updates to this test got messed up so just squashing
into one commit.

Some possible regressions have been accepted, but the query is strangely
opinionated so it's just hard to say what it ought to flag.
2025-02-28 13:29:33 +01:00
Asger F
64d39da5f8 JS: Accept Sources/Sink tags 2025-02-28 13:29:30 +01:00
Asger F
19cada38ff JS: Migrate a new file from OK-style comments 2025-02-28 13:29:29 +01:00
Asger F
fd6a9c6144 JS: Accept an alert 2025-02-28 13:29:27 +01:00
Asger F
b4ac2f7d73 JS: Add a query ID 2025-02-28 13:29:26 +01:00
Asger F
87518ba60e JS: Update tainted-sendFile.js
This file was added on main while this branch was in progress. Porting the whole file in one step.
2025-02-28 13:29:25 +01:00
Asger F
bb67a0e9b0 JS: Remove outdated comment 2025-02-28 13:29:23 +01:00
Asger F
0496de6c8f JS: Accept alerts in UselessCharacterEscape 2025-02-28 13:29:22 +01:00
Asger F
aade1e863d JS: Add a related location in UnusedOrUndefinedStateProperty 2025-02-28 13:29:21 +01:00
Asger F
8ef51c495f JS: Fix wrong expectation in UnusedOrUndefinedStateProperty 2025-02-28 13:29:19 +01:00
Asger F
87ed86e4fd JS: Update UnusedOrUndefinedStateProperty
Using RelatedLocations to add clarity
2025-02-28 13:29:18 +01:00
Asger F
605999454a JS: Accept more results in SpuriousArguments 2025-02-28 13:29:17 +01:00
Asger F
dc28bb527b JS: Fix alert location and use RelatedLocation in InsecureUrlWhitelist 2025-02-28 13:29:16 +01:00
Asger F
a1c13f02be JS: Remove alert marker that's reported on another line
We had two 'NOT OK' comments for the same alert. The alert appears on the 'pref' object above.
2025-02-28 13:29:14 +01:00
Asger F
2b33ed3671 JS: Remove incorrect alert marker 2025-02-28 13:29:13 +01:00
Asger F
6cf1334c6d Fix comment style in UnboundEventHandlerReceiver 2025-02-28 13:29:12 +01:00
Asger F
7623ebb13b JS: Accept changes in UseOfReturnlessFunction 2025-02-28 13:29:11 +01:00
Asger F
507a0918ad JS: More alert updates in UselessConditional 2025-02-28 13:29:10 +01:00
Asger F
e634b31c27 JS: Accept some UselessConditional alerts 2025-02-28 13:29:08 +01:00
Asger F
4d7cbe6f60 JS: Accept to web socket-based SSRF alerts 2025-02-28 13:29:07 +01:00
Asger F
764eb98809 JS: Move two alerts and add query ID 2025-02-28 13:29:06 +01:00
Asger F
976096540f JS: Accept an alert 2025-02-28 13:29:05 +01:00
Asger F
49274d5f73 JS: Accept an alert 2025-02-28 13:29:03 +01:00
Asger F
2d1aa3e00a JS: Accept missing alert and clarify reason 2025-02-28 13:29:02 +01:00
Asger F
9f8744680d JS: Remove a fixed spurious alert 2025-02-28 13:29:01 +01:00
Asger F
3a535dbf68 JS: Accept another alert 2025-02-28 13:29:00 +01:00
Asger F
db98dc6272 JS: Move some alerts and add query IDs 2025-02-28 13:28:59 +01:00
Asger F
c79d355d26 JS: Update alerts in example_bypass.js
We happen to flag the condition with different-kinds-comparison-bypass.
The ConditionalBypass query was originally intended to flag this I think, but doesn't anymore.
2025-02-28 13:28:57 +01:00
Asger F
7ed5398688 JS: Accept some different-kind comparison-bypass alerts 2025-02-28 13:28:55 +01:00
Asger F
a1796bda8a JS: Accept some new alerts in HardcodedCredentials
I think these were just missing 'NOT OK' comments
2025-02-28 13:28:54 +01:00
Asger F
2bed3a40bf JS: Mark some missing alerts in HardcodedCredentials
Not sure why
2025-02-28 13:28:52 +01:00
Asger F
9ef5a97b4e JS: Accept alerts in HardcodedCredentials and add Sink tags
This query now uses the source as the primary alert location, and some old comments appeared at the sink.

To make the change easier to verify, this commit migrates the test to include Sink tags. (Source/Sink tags in general are added later)
2025-02-28 13:28:51 +01:00
Asger F
7fa63fa6ee JS: Update alerts in HardcodedCredentials test
Note that file is inside a folder named __tests__. The same code is found in another file outside the test folder, where it is flagged.
2025-02-28 13:28:50 +01:00
Asger F
69b2d197e6 JS: Move an alert and add RelatedLocations 2025-02-28 13:28:48 +01:00
Asger F
360c76514c JS: Accept some suboptimal alert locations
Not perfect alert locations, but not important enough to fix right now
2025-02-28 13:28:47 +01:00
Asger F
dbc079c880 JS: Accept a spurious alert
Unlike the previous case 'isLocalUrl' actually resolves to a function in this case, but we don't recognise the sanitiser used in it. Fixing it is out of scope for this PR.
2025-02-28 13:28:46 +01:00
Asger F
4ca49fb4d8 JS: Change note about guards in server-side url redirect 2025-02-28 13:28:44 +01:00
Asger F
29659647ea JS: Fix barrier guards for ServerSideUrlRedirect
The barrier guards for ServerSideUrlRedirect were lost when it was ported to ConfigSig, and the aforementioned spurious alert was a result of that.

The query had two guards: a proper barrier guard and a heuristic one for functions named 'isLocalURL'. We should move away from the heuristic name-based sanitiser guards, so I'm only reinstating the proper barrier guard.

Therefore updating the test to test the real barrier guard.
2025-02-28 13:28:43 +01:00
Asger F
38be524b6a JS: Temporarily accept a spurious alert
This was due to a bug that will be fixed in the following commit
2025-02-28 13:28:41 +01:00
Asger F
7c2394fab4 JS: Accept some alerts 2025-02-28 13:28:40 +01:00
Asger F
b734a3d804 JS: Fix a test case bug due to a typo
We got a missing result on that line
2025-02-28 13:28:39 +01:00
Asger F
1ee93cf51b JS: Manually fix two comments in JSX 2025-02-28 13:28:37 +01:00
Asger F
0f23c33d3c JS: Fix a comment
Apparently this comment used to say 'NOT OK' but clearly 'OK' was meant
2025-02-28 13:28:36 +01:00
Asger F
cd788bc509 JS: Mark what seems to be missing alerts for fflate
The query doesn't seem to model or even mention fflate. Not sure if the library is safe or just not modeled.
2025-02-28 13:28:35 +01:00
Asger F
3f7f74b925 JS: Accept alerts for DecompressionBomb 2025-02-28 13:28:33 +01:00
Asger F
48760d66b2 JS: Accept alerts for HardcodedDataInterpretedAsCode 2025-02-28 13:28:32 +01:00
Asger F
260c66b3cf JS: Mark a spurious alert in missing-x-frame-options 2025-02-28 13:28:30 +01:00
Asger F
cea53371f2 JS: Accept alerts for missing-x-frame-options 2025-02-28 13:28:29 +01:00
Asger F
cded75766f JS: Add a query ID 2025-02-28 13:28:28 +01:00
Asger F
a0f8e28790 JS: Accept a fixed FN 2025-02-28 13:28:27 +01:00
Asger F
1fcebcec87 JS: Move some ReDoS alerts 2025-02-28 13:28:25 +01:00
Asger F
266ac09637 JS: Add query iDs 2025-02-28 13:28:24 +01:00
Asger F
082e16b3d3 JS: More Alert comments in ReDoS/tst.js based on variable naming
Again just trying to translate the original intent behind the test, without taking actual query results into account
2025-02-28 13:28:23 +01:00
Asger F
607b184a7f JS: Fix a bug in test case 2025-02-28 13:28:22 +01:00
Asger F
51fb3dad74 JS: Accept ReDoS alerts in regexplib 2025-02-28 13:28:21 +01:00
Asger F
d298d8740f JS: Accept some exponenital redos alerts in the polynomial redos test suite 2025-02-28 13:28:19 +01:00
Asger F
283b14207d JS: Accept some ReDoS alerts 2025-02-28 13:28:18 +01:00
Asger F
92c3939457 JS: Accept InsecureRandomness alerts 2025-02-28 13:28:17 +01:00
Asger F
0f8e85fa2f JS: Accept alerts for InsufficientKeySize 2025-02-28 13:28:15 +01:00
Asger F
fc95702341 JS: Accept some more alerts from CleartextStorage 2025-02-28 13:28:14 +01:00
Asger F
51b45598c4 JS: Move an alert and add query ID 2025-02-28 13:28:13 +01:00
Asger F
e91a046a17 JS: Mark a spurious alert 2025-02-28 13:28:12 +01:00
Asger F
b54ff3b5b3 JS: Accept an alert 2025-02-28 13:28:10 +01:00
Asger F
576dbcb020 JS: Stop overriding entire module.exports object in test
Doing `module.exports = blah` prevents other exports from being seen as library inputs.
2025-02-28 13:28:09 +01:00
Asger F
f72cd21a55 JS: Some more test changes in SpuriousArguments 2025-02-28 13:28:08 +01:00
Asger F
d3de6d18a4 JS: Accept other changes to UnusedVariable 2025-02-28 13:28:07 +01:00
Asger F
e745f42291 JS: Remove alert expectation from step
This is just a step on the path, not a sink
2025-02-28 13:28:06 +01:00
Asger F
319ee2ccd5 JS: Track deep flow through qs.stringify 2025-02-28 13:28:04 +01:00
Asger F
c593853710 JS: Record some missing alerts in FileAccessToHttp 2025-02-28 13:28:03 +01:00
Asger F
cf33db78cc JS: Fix the spurious flow 2025-02-28 13:28:02 +01:00
Asger F
c051b4c98d JS: Add spurious alert marker 2025-02-28 13:28:00 +01:00
Asger F
b095fe2a19 JS: Fix some bugs in a test case
'args' was a redeclared block-level variable, and 'myArgs' was not used when clearly intended to be used
2025-02-28 13:27:59 +01:00
Asger F
22c218d665 JS: Mark a 'good' test as 'bad' and add Alert marker
The lack of whitespace around '&&' is problematic
2025-02-28 13:27:58 +01:00
Asger F
a9b263f465 JS: Remove incorrect alert expectation
This is not flagged and AFAICT it shouldn't be
2025-02-28 13:27:57 +01:00
Asger F
287753187e JS: Remove invalid syntax from test
TS decorators may not appear on functions and enums
2025-02-28 13:27:56 +01:00
Asger F
426a871405 JS: Remove incorrect Alert marker
This is expected, based on a comment earlier in the file about the 'y' variable
2025-02-28 13:27:54 +01:00
Asger F
2c46e10678 JS: Mark an alert as missing 2025-02-28 13:27:53 +01:00
Asger F
e026b9e048 JS: Mark regressions due to lack of local field steps 2025-02-28 13:27:52 +01:00
Asger F
e5bee19b19 JS: Accept a double-flagged line
This is flagged by two queries but for two separate issues. Seems valid to flag it twice.
2025-02-28 13:27:51 +01:00
Asger F
68fae9ded8 JS: Accept alerts about newline replacement 2025-02-28 13:27:49 +01:00
Asger F
1f3c49638b JS: Accept some less obvious alerts
These are listed in a function called 'good' but it's difficult to say in isolation whether they should be flagged or not. Accepting the changes as they seem reasonable.
2025-02-28 13:27:48 +01:00
Asger F
f395651807 JS: Mark alert as MISSING
See https://github.com/github/codeql-javascript-team/issues/447
2025-02-28 13:27:47 +01:00
Asger F
07a876b4e9 JS: Accept some alerts at the SystemCommandExecution location 2025-02-28 13:27:46 +01:00
Asger F
10a7294327 JS: Accept trivial test changes
This adds Alert annotations for alerts that seem intentional by the test
but has not been annotated with 'NOT OK', or the comment was in the wrong
place.

In a few cases I included 'Source' expectations to make it easier to see
what happened. Other 'Source' expectations will be added in bulk a later
commit.
2025-02-28 13:27:43 +01:00
Asger F
0453ded338 JS: Add query ID to some alerts 2025-02-28 13:27:41 +01:00
Asger F
86932c51bc JS: Move some alerts to their correct location
One of the diffs look confusing but:
Previously parameter {2,3} where flagged, now parameter {1,2} are flagged.

Note that for command injection, the SystemCommandExecution is flagged
despite the test file claiming otherwise.
2025-02-28 13:27:40 +01:00
Asger F
f5911c9e5a JS: Accept raw test output 2025-02-28 13:27:38 +01:00
Asger F
795c1100fc JS: Disable for SyntaxError
The presence of a syntax error sometimes prevents us from parsing the inline comment correctly.
2025-02-28 13:27:37 +01:00
Asger F
789a7bdb48 JS: Disable for test with alerts in a JSON file
JSON does not support comments so we can't use inline expectations
2025-02-28 13:27:36 +01:00
Asger F
ac6547fd01 JS: Disable for comment-related alerts 2025-02-28 13:27:35 +01:00
Asger F
d0ce53ed82 JS: Enable post-processing for all .qlref files 2025-02-28 13:27:33 +01:00
Asger F
426edd55f2 JS: Update output after line number change
Some OK-style comments had to be moved to the following line, shifting line numbers.

In selected range also included the comments themselves.

Lastly, the result sets were reordered by the CLI in some cases.
2025-02-28 13:27:31 +01:00
Asger F
9be041e27d JS: Update OK-style comments to $-style 2025-02-28 13:27:28 +01:00
Asger F
7e5c24a8ec JS: Remove uses of old inline expectation test library 2025-02-28 13:27:26 +01:00
Asger F
79e2a758d7 JS: Allow more kinds of expectation comments 2025-02-28 13:27:25 +01:00
Geoffrey White
2f2c9f8943 Merge pull request #18895 from geoffw0/docimplicit
Data flow: Improve doc for defaultImplicitTaintRead.
2025-02-28 12:18:11 +00:00
Paolo Tranquilli
945bf80803 Merge branch 'main' into redsun82/cargo-upgrade 2025-02-28 13:15:43 +01:00
Chris Smowton
4f810df53c Merge pull request #18861 from smowton/smowton/admin/jdk24-upgrade-test-expectations
Java: Update test expectations for JDK24 upgrade
2025-02-28 11:56:49 +00:00
Paolo Tranquilli
0445d886c7 QL for QL: update toolchain 2025-02-28 12:39:37 +01:00
Paolo Tranquilli
c5eeaba2ec Merge branch 'main' into redsun82/cargo-upgrade 2025-02-28 12:26:26 +01:00
Paolo Tranquilli
6b34d3f480 Rust: add missing empty expected file 2025-02-28 12:26:03 +01:00
Chris Smowton
ad732a8f57 Docs: note JDK 24 support 2025-02-28 11:23:11 +00:00
Chris Smowton
79e581f555 Change note 2025-02-28 11:23:10 +00:00
Chris Smowton
1577b40b45 Accept test changes 2025-02-28 11:23:07 +00:00
Chris Smowton
178e90c2f1 Update test expectations for JDK24 upgrade 2025-02-28 11:23:06 +00:00
Owen Mansel-Chan
94505af49e Merge pull request #18891 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-28 11:14:06 +00:00
Paolo Tranquilli
ee61fdcb6f Merge branch 'main' into redsun82/rust-turn-off-ra-resolution 2025-02-28 12:03:14 +01:00
Chris Smowton
ec2982f3df Merge branch 'main' into workflow/coverage/update 2025-02-28 10:48:08 +00:00
Simon Friis Vindum
c4773c42c4 Rust: Model pointer read and write functions 2025-02-28 11:44:11 +01:00
Simon Friis Vindum
bc651af319 Merge branch 'main' into rust-ref-mut 2025-02-28 11:42:06 +01:00
Paolo Tranquilli
e0d4e5ea7f Rust: remove missing flow in test 2025-02-28 11:36:27 +01:00
Simon Friis Vindum
5b657035d2 Rust: Add test for models of pointer read and write 2025-02-28 11:19:41 +01:00
Michael Nebel
7015a0af38 Merge pull request #18893 from michaelnebel/csharp/pindotnetfornugetconfigerror
C#: Pin .NET for the integration test standalone_dependencies_nuget_c…
2025-02-28 10:56:10 +01:00
Simon Friis Vindum
518f164c61 Rust: Address PR comments 2025-02-28 10:49:27 +01:00
Geoffrey White
1b35c0b7c9 Data flow: Improve doc for defaultImplicitTaintRead. 2025-02-28 09:43:57 +00:00
Paolo Tranquilli
bb90b678a4 Rust: update rust-specific toolchain 2025-02-28 10:43:48 +01:00
Paolo Tranquilli
d11bbdb5a7 Merge branch 'main' into redsun82/cargo-upgrade 2025-02-28 10:41:37 +01:00
Paolo Tranquilli
3c7fe264d1 Merge pull request #18881 from github/redsun82/rust-fix-test
Rust: fix dataflow test failure by pinning the toolchain version
2025-02-28 10:17:04 +01:00
Michael Nebel
5af7630841 C#: Pin .NET for the integration test standalone_dependencies_nuget_config_error. 2025-02-28 10:07:11 +01:00
Paolo Tranquilli
b73e8dc74b Merge branch 'main' into redsun82/rust-fix-test 2025-02-28 09:31:25 +01:00
github-actions[bot]
ce82cb6424 Add changed framework coverage reports 2025-02-28 00:21:17 +00:00
Geoffrey White
998bec1efb C++: Fix the bug. 2025-02-27 21:24:07 +00:00
Geoffrey White
51d916263d C++: Another test. 2025-02-27 21:19:05 +00:00
Dave Bartolomeo
ac555ff0a3 Set the executable bit on the scripts in the Actions extractor 2025-02-27 20:06:14 +00:00
Owen Mansel-Chan
93b11146d8 Merge pull request #18886 from owen-mc/go/gitignore-make-test-artifacts
Go: Add .gitignore for artifacts of `make test`
2025-02-27 19:47:28 +00:00
Dave Bartolomeo
6c0aadfb57 Merge pull request #18887 from github/dbartol/immutable-actions
Move list of immutable actions into internal model pack for now.
2025-02-27 14:04:01 -05:00
Edward Minnix III
28770c526d Merge pull request #18863 from egregius313/egregius313/go/mad/database/rqlite
Go: Add `database` sources for the `gorqlite` package
2025-02-27 12:41:39 -05:00
Dave Bartolomeo
2dde9ab6b9 Move immutable-actions-list pack to codeql org 2025-02-27 12:30:11 -05:00
Dave Bartolomeo
abc174858e Remove octokit as trusted Actions owner 2025-02-27 12:15:40 -05:00
Dave Bartolomeo
160346f51b Add warnOnImplicitThis: true 2025-02-27 12:05:00 -05:00
Dave Bartolomeo
4e47da463e Add change note 2025-02-27 12:04:09 -05:00
Owen Mansel-Chan
e08ae22ceb Merge pull request #18885 from owen-mc/go/change-note/1.24
Go: Add belated change note for go 1.24
2025-02-27 17:00:13 +00:00
Dave Bartolomeo
86c5d9f1cd Move list of immutable actions into internal model pack for now. 2025-02-27 11:48:27 -05:00
Geoffrey White
3d19e2ad4a C++: Static buffer overflow change note. 2025-02-27 16:46:53 +00:00
Owen Mansel-Chan
59e94521bc Add .gitignore for artifacts of make test 2025-02-27 16:34:38 +00:00
Paolo Tranquilli
855dc09ea5 Merge branch 'main' into redsun82/rust-fix-test 2025-02-27 17:19:01 +01:00
Paolo Tranquilli
70bdeec3d5 Rust: add rust-src to required components 2025-02-27 17:18:46 +01:00
Owen Mansel-Chan
76ad107c63 Merge pull request #18883 from owen-mc/go/get-location
Go: Use `getLocation` instead of `hasLocationInfo`
2025-02-27 16:07:37 +00:00
Owen Mansel-Chan
332f94e8a2 Add belated change note for go 1.24 2025-02-27 16:00:40 +00:00
Paolo Tranquilli
beeb417281 Rust: fix toolchain version for tests 2025-02-27 15:39:19 +01:00
Owen Mansel-Chan
a94854bd72 Add change note 2025-02-27 13:32:48 +00:00
Owen Mansel-Chan
f322cb7968 Use getLocation instead of hasLocationInfo 2025-02-27 13:32:45 +00:00
Alexander Eyers-Taylor
f7d95e4dcb Merge pull request #18874 from github/alexet/simplify-interpretoutput
Java: Simplify interpretOutput
2025-02-27 12:31:39 +00:00
Owen Mansel-Chan
ca0b363be3 Replace DbLocation with Location 2025-02-27 11:44:20 +00:00
Geoffrey White
f0951823ad Merge pull request #18777 from geoffw0/okerr
Rust: Model Result.ok and Result.err.
2025-02-27 10:45:32 +00:00
Paolo Tranquilli
a444bbc080 Merge branch 'main' into redsun82/rust-turn-off-ra-resolution 2025-02-27 11:11:06 +01:00
Paolo Tranquilli
0f91323100 Merge branch 'main' into redsun82/cargo-upgrade 2025-02-27 10:05:57 +01:00
Asger F
3487226116 Merge pull request #18864 from asgerf/test-rank
Test: Ensure total ranking order to avoid ambiguous results
2025-02-27 09:39:08 +01:00
Geoffrey White
c5284eb6fe Merge branch 'main' into okerr 2025-02-27 08:35:26 +00:00
Paolo Tranquilli
63a4c8d697 Merge branch 'main' into redsun82/cargo-upgrade 2025-02-27 08:13:49 +01:00
Ed Minnix
4f204ee40f Add test for QueryResult::Map 2025-02-26 13:26:23 -05:00
Alex Eyers-Taylor
5e3ccc0cca Java: Simplify interpretOutput 2025-02-26 18:20:46 +00:00
Geoffrey White
1354bebd7c C++: Fix an issue with padding. 2025-02-26 17:43:25 +00:00
Geoffrey White
dbab845295 C++: Effect of this branch on the new test. 2025-02-26 17:18:48 +00:00
Geoffrey White
abb88e3dba C++: Add a test file that was internal (results as on main). 2025-02-26 17:14:43 +00:00
Geoffrey White
c41add896f C++: Accept regressions in SAMATE based test cases. 2025-02-26 16:34:10 +00:00
Owen Mansel-Chan
23fb139a87 Merge pull request #18870 from owen-mc/go/docs/update-supported-versions-compilers
Go: Document support for Go 1.24
2025-02-26 16:18:38 +00:00
Owen Mansel-Chan
91dd9f5d95 Merge pull request #18868 from owen-mc/go/use-more-db-locations
Go: Slightly adjust some location info to match locations that are in the database
2025-02-26 16:13:33 +00:00
Simon Friis Vindum
476fef49da Rust: Allow SSA and some data flow for mutable borrows 2025-02-26 16:00:52 +01:00
Paolo Tranquilli
e1ac5823ec Merge branch 'main' into redsun82/cargo-upgrade 2025-02-26 15:39:10 +01:00
Taus
83cdcdbb0b Python: Add change note 2025-02-26 13:53:49 +00:00
Taus
3956a1fea8 Python: Move min/maxParameter methods to Function
These seem generally useful outside of points-to, and so it might be
better to add them to the `Function` class instead.

I took the liberty of renaming these to say `Arguments` rather than
`Parameters`, as this is more in line with the nomenclature that we're
using elsewhere. (The internal points-to methods retain the old names.)

I'm somewhat ambivalent about the behaviour of `getMaxParameters` on
functions with `*varargs`. The hard-coded `INT_MAX` return value is
somewhat awkward, but the alternative (to only have the predicate
defined when a specific maximum exists) seems like it would potentially
cause a lot of headaches.
2025-02-26 13:51:12 +00:00
Chris Smowton
6857954569 Merge pull request #18839 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-26 13:50:11 +00:00
Owen Mansel-Chan
bb7d227095 Document support for Go 1.24 2025-02-26 13:34:59 +00:00
Simon Friis Vindum
51ae7c6b8c Rust: Reorganize pointers tests and add additional tests 2025-02-26 13:51:55 +01:00
Owen Mansel-Chan
4c28dbdc50 Add change note 2025-02-26 12:47:56 +00:00
Owen Mansel-Chan
a11692707e Use location of basic block for SsaPhiNode 2025-02-26 12:38:08 +00:00
Geoffrey White
0ef4c6f954 Merge branch 'main' into okerr 2025-02-26 12:33:39 +00:00
Owen Mansel-Chan
6dad937ce2 Use location of basic block for SsaImplicitDefinition 2025-02-26 12:29:52 +00:00
Owen Mansel-Chan
052792f7c4 Use location of stmt for EvalImplicitTrueInstruction 2025-02-26 12:28:59 +00:00
Owen Mansel-Chan
90ea10e0b7 Use location of elt for ImplicitLiteralElementIndexInstruction 2025-02-26 12:23:34 +00:00
Owen Mansel-Chan
f34c3b16a2 Use location of control flow root for ExitNode 2025-02-26 12:20:41 +00:00
Owen Mansel-Chan
baa4c509ca Use location of control flow root for EntryNode 2025-02-26 12:16:38 +00:00
Owen Mansel-Chan
561a681e90 Use location of condition for ConditionGuardNode 2025-02-26 12:11:16 +00:00
Owen Mansel-Chan
759f0583cb Use location of first node for BasicBlock 2025-02-26 12:00:56 +00:00
Chris Smowton
9458f073c6 Merge pull request #18867 from github/smowton/admin/avoid-pointless-test-runs
Don't run Go tests on documentation changes
2025-02-26 11:34:56 +00:00
Chris Smowton
2961320f02 Don't run Go Mac & Win tests against documentation PRs 2025-02-26 11:02:04 +00:00
Chris Smowton
cd9a7ec6a8 Don't run Go tests on documentation changes 2025-02-26 10:56:59 +00:00
Chris Smowton
fc793fbc4d Merge branch 'main' into workflow/coverage/update 2025-02-26 10:51:43 +00:00
Asger F
2a5ee847b8 Merge branch 'main' into test-rank 2025-02-26 10:00:25 +01:00
Paolo Tranquilli
3a67836eb2 Merge branch 'main' into redsun82/cargo-upgrade 2025-02-26 09:58:15 +01:00
Asger F
6e53ebed47 Ensure total ranking order to avoid ambiguous results 2025-02-26 09:34:06 +01:00
Simon Friis Vindum
cc5179a35e Merge pull request #18787 from paldepind/rust-core-std-models
Rust: Add generated models for standard libraries including core
2025-02-26 09:31:16 +01:00
Ed Minnix
7593def620 Model gorqlite package 2025-02-25 23:15:22 -05:00
github-actions[bot]
457af87435 Add changed framework coverage reports 2025-02-26 00:21:12 +00:00
Geoffrey White
a7ac6b137b C++: Second change note. 2025-02-25 17:02:23 +00:00
Geoffrey White
7d7498ee32 C++: Avoid problems when a variable has multiple types. 2025-02-25 16:55:13 +00:00
Geoffrey White
812315df27 C++: Use existing getSize / getRootType to find more generous bounds for arrays inside classes (though it sometimes fails, costing us TPs). 2025-02-25 16:29:49 +00:00
Paolo Tranquilli
2585c2f908 Merge branch 'main' into redsun82/cargo-upgrade 2025-02-25 17:03:25 +01:00
Asger F
ff36d1916f Merge pull request #18810 from asgerf/js/test-related-locations
Test: Add support for RelatedLocation tag and use in a JS query
2025-02-25 16:40:41 +01:00
Geoffrey White
07004bd6f9 C++: Test cases motivated by a real world FP. 2025-02-25 15:36:12 +00:00
Tamás Vajk
11d145131f Merge pull request #18835 from tamasvajk/tamasvajk/csharp-ccr
Add queries to C# CCR suite
2025-02-25 16:20:35 +01:00
Asger F
baa7e35589 Merge pull request #18834 from Napalys/js/tanstack
JS: Support 'response' threat model and @tanstack/react-query
2025-02-25 16:16:06 +01:00
Simon Friis Vindum
26a96d9f65 Rust: Accept changes 2025-02-25 15:56:10 +01:00
Tom Hvitved
0522f3f694 Merge pull request #18856 from hvitved/rust/inline-expectations-update
Rust: Update some inline expectation comments
2025-02-25 15:28:28 +01:00
Jeroen Ketema
18a1ef55ea Merge pull request #18859 from jketema/is-before
C++: Fix join-order problem with `isBefore`
2025-02-25 15:27:43 +01:00
Napalys
3360829a58 Updated change note with response threat model info.
Co-authored-by: Asgerf <asgerf@github.com>
2025-02-25 15:22:14 +01:00
Simon Friis Vindum
5c997859b0 Merge branch 'main' into rust-core-std-models 2025-02-25 15:07:29 +01:00
Anders Schack-Mulligen
994a8eea39 Merge pull request #18857 from aschackmull/ssa/refactor-df-integr
Ssa: Refactor the data flow integration module
2025-02-25 15:04:11 +01:00
Asger F
bb8f4529bf Fix bug when RelatedLocation was used with a query ID 2025-02-25 14:52:32 +01:00
Asger F
5f2e5ab8c3 Rename file and ID to match .qlref and other query 2025-02-25 14:52:19 +01:00
Anders Schack-Mulligen
2c3b48946d Merge pull request #18824 from aschackmull/java/basessa
Java: Switch BaseSSA to use shared SSA lib.
2025-02-25 14:23:46 +01:00
Anders Schack-Mulligen
28e96449e7 C#: Address review comment. 2025-02-25 14:12:53 +01:00
Napalys
bf77ffef37 Applied comment
Co-authored-by: Asgerf <asgerf@github.com>
2025-02-25 13:57:39 +01:00
Paolo Tranquilli
d9ecb6255e Shared: fix clippy warning 2025-02-25 13:41:34 +01:00
Paolo Tranquilli
bfcf9ea606 Rust: fix compilation errors after rust-anlyzer update 2025-02-25 13:37:00 +01:00
Paolo Tranquilli
cbae16b392 Rust: rerun code generation 2025-02-25 13:31:16 +01:00
Paolo Tranquilli
17703ec908 Bazel: update vendored rust dependencies 2025-02-25 13:31:16 +01:00
Paolo Tranquilli
83e442a266 Rust/Ruby: run cargo upgrade --incompatible --pinned 2025-02-25 13:31:16 +01:00
Paolo Tranquilli
d2105a7528 Shared: format code again 2025-02-25 13:31:06 +01:00
Paolo Tranquilli
1bcc6ddb32 Rust/Ruby/Python: apply clippy lints 2025-02-25 13:21:28 +01:00
Paolo Tranquilli
6089a75262 Rust/Ruby/Python: format code 2025-02-25 13:19:03 +01:00
Paolo Tranquilli
e8799e346d Rust/Python: fix edition-related errors 2025-02-25 13:16:58 +01:00
Paolo Tranquilli
eff87d24fa Rust/Ruby/Python: update rustc and edition 2025-02-25 13:15:19 +01:00
Jonas Jensen
2edc9af1e0 Merge pull request #18848 from jbj/StaticInitializationVector-postprocess
Java: StaticInitializationVector with postprocess
2025-02-25 12:44:16 +01:00
Jeroen Ketema
7eca4b4d82 C++: Fix join-order problem with isBefore
Reported here: https://github.com/github/codeql/issues/17743

Without this change on the query provided by the user:
```
[2025-02-25 12:42:01] Evaluated non-recursive predicate quickquery::UnrealFunctionAnnotation.annotates/1#dispred#9cd6c269@c668c8tv in 23846ms (size: 20381473).
Evaluated relational algebra for predicate quickquery::UnrealFunctionAnnotation.annotates/1#dispred#9cd6c269@c668c8tv with tuple counts:
                 1   ~0%    {0} r1 = CONSTANT()[]
             27323   ~0%    {2}    | JOIN WITH `Location::Location.getEndLine/0#dispred#83af84ae#bf` CARTESIAN PRODUCT OUTPUT Rhs.0, Rhs.1
        6162566035   ~0%    {4}    | JOIN WITH `Location::Location.getStartLine/0#d54f9e6c` CARTESIAN PRODUCT OUTPUT Lhs.0, Lhs.1, Rhs.0, Rhs.1
                            {4}    | REWRITE WITH TEST InOut.1 < InOut.3
        3894825644   ~5%    {2}    | SCAN OUTPUT In.2, In.0
          73148692   ~0%    {3}    | JOIN WITH fun_decls_40#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Rhs.1
          73148692   ~0%    {4}    | JOIN WITH `Location::Location.getFile/0#dispred#d1f8b5d1` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.0, Lhs.2
            864579   ~0%    {2}    | JOIN WITH `Location::Location.getFile/0#dispred#d1f8b5d1` ON FIRST 2 OUTPUT Lhs.2, Lhs.3
          13010742   ~1%    {2}    | JOIN WITH macroinvocations_20#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
          20653781   ~0%    {3}    | JOIN WITH `Macro::MacroAccess.getOutermostMacroAccess/0#d58b05db_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1
          20653781   ~4%    {3}    | REWRITE WITH Out.1 := 1
          20381473   ~8%    {2}    | JOIN WITH macroinvocations_03#join_rhs ON FIRST 2 OUTPUT Lhs.0, Lhs.2
                            return r1
```

With this change:
```
[2025-02-25 12:43:10] Evaluated non-recursive predicate quickquery::UnrealFunctionAnnotation.annotates/1#dispred#9cd6c269@11bf8956 in 928ms (size: 20381473).
Evaluated relational algebra for predicate quickquery::UnrealFunctionAnnotation.annotates/1#dispred#9cd6c269@11bf8956 with tuple counts:
            6873   ~3%    {2} r1 = SCAN fun_decls OUTPUT In.4, In.0
            6857   ~0%    {3}    | JOIN WITH `Location::Location.getStartLine/0#d54f9e6c` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Rhs.1
            6857   ~2%    {3}    | JOIN WITH `Location::Location.getFile/0#dispred#d1f8b5d1` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
         6193961   ~0%    {3}    | JOIN WITH `Location::Location.getFile/0#dispred#d1f8b5d1_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
        27389714   ~1%    {4}    | JOIN WITH macroinvocations_20#join_rhs ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Rhs.1
        27389714   ~1%    {4}    | JOIN WITH locations_default ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Rhs.4
                          {4}    | REWRITE WITH TEST InOut.3 < InOut.1
        13010742   ~1%    {2}    | SCAN OUTPUT In.2, In.0
        20653781   ~0%    {3}    | JOIN WITH `Macro::MacroAccess.getOutermostMacroAccess/0#d58b05db_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1
        20653781   ~4%    {3}    | REWRITE WITH Out.1 := 1
        20381473   ~8%    {2}    | JOIN WITH macroinvocations_03#join_rhs ON FIRST 2 OUTPUT Lhs.0, Lhs.2
                          return r1
```
2025-02-25 12:39:11 +01:00
Asger F
92e1023d00 Update line numbers due to addition of new test code 2025-02-25 11:59:11 +01:00
Asger F
ae161f1654 Add meta-tests for inline expectation with related locations 2025-02-25 11:58:54 +01:00
Asger F
694f01ab78 Fix column count and add clarifying comment 2025-02-25 11:57:01 +01:00
Napalys
e2927b2fad Updated tanstack to use API graph. 2025-02-25 11:48:44 +01:00
Geoffrey White
f406914258 Merge pull request #18701 from geoffw0/nth
Rust: Test and model some string and iterator methods
2025-02-25 10:42:49 +00:00
Anders Schack-Mulligen
b2a595596b JS: Remove irrelevant comment. 2025-02-25 11:33:16 +01:00
Anders Schack-Mulligen
449150e6b5 JS: Accept fixed FP flow. 2025-02-25 10:42:21 +01:00
Anders Schack-Mulligen
ae3736bc25 C#: Accept test changes showing that we skip over useless input nodes. 2025-02-25 10:37:29 +01:00
Anders Schack-Mulligen
b1b72b73ed SSA: Add qldoc. 2025-02-25 10:35:57 +01:00
Michael Nebel
a35510d937 Merge pull request #18849 from michaelnebel/csharp/tupledefaulttostring
C#: Proper handling of value tuples in `cs/call-to-object-tostring`.
2025-02-25 10:24:02 +01:00
Anders Schack-Mulligen
f00f2c6f47 SSA: Deprecate public SsaDefinitionExtNode and SsaInputNode. 2025-02-25 10:03:43 +01:00
Anders Schack-Mulligen
1f628d0f86 Ruby: Remove reference to SsaInputNode. 2025-02-25 10:01:57 +01:00
Anders Schack-Mulligen
95cbd21a62 Ruby: Accept test change following SSA bugfix.
This is a result of the commit "SSA: Fix bug in guards for ssa input
nodes."
2025-02-25 09:59:35 +01:00
Tom Hvitved
b40290683e Rust: Update some inline expectation comments 2025-02-25 09:34:50 +01:00
Anders Schack-Mulligen
57c4fd6f25 JS: Combine phi reads and ssa input nodes into SynthReadNode class. 2025-02-25 09:23:53 +01:00
Kevin Stubbings
04476ca5f4 Add more choices to SSRF remediation 2025-02-25 00:16:48 -08:00
Owen Mansel-Chan
74a249597a Merge pull request #18607 from owen-mc/java/xss-content-type-sanitizer
Java: Add XSS Sanitizer for `HttpServletResponse.setContentType` with safe values
2025-02-24 23:39:18 +00:00
Jami Cogswell
c2e859c756 Java: add change note 2025-02-24 18:33:45 -05:00
Jami Cogswell
26e396732a Java: edit qhelp 2025-02-24 18:33:43 -05:00
Jami Cogswell
53cb30dcd0 Java: update metadata, move from CWE-016 to CWE-200 2025-02-24 18:33:41 -05:00
Jami Cogswell
6fe7c7a233 Java: some refactoring 2025-02-24 18:33:29 -05:00
Jami Cogswell
f65a5b9a66 Java: add test for qhelp good example 2025-02-24 18:27:45 -05:00
Jami Cogswell
9e51b014d2 Java: handle example in Spring docs 2025-02-24 18:27:43 -05:00
Jami Cogswell
b2469ff8ba Java: add APIs and tests for more recent Spring versions: authorizeHttpRequests, AuthorizeHttpRequestsConfigurer, securityMatcher(s) 2025-02-24 18:26:02 -05:00
Jami Cogswell
8dfb920e05 Java: refactor QL, move code to libraries 2025-02-24 18:24:48 -05:00
Jami Cogswell
8064e8f1f9 Java: convert tests to inline expectations 2025-02-24 18:24:26 -05:00
Jami Cogswell
5e5bc2afe9 Java: remove experimental files 2025-02-24 18:24:19 -05:00
Jami Cogswell
089a491d5a Java: fix tests; update for non-experimental directory 2025-02-24 18:24:17 -05:00
Jami Cogswell
978834bd9c Java: remove deprecations 2025-02-24 18:24:14 -05:00
Jami Cogswell
2ce5920c5e Java: copy out of experimental 2025-02-24 18:24:12 -05:00
Owen Mansel-Chan
0d994c1527 Merge pull request #18831 from owen-mc/go/join-order-fix-2
Go: Improve bad join order in guardingCall
2025-02-24 22:16:22 +00:00
Geoffrey White
6437bd692e Merge pull request #18851 from geoffw0/typo
Fix typo in shared DataFlowImplConsistency.qll
2025-02-24 18:45:09 +00:00
Alexander Eyers-Taylor
ddfb16899a Merge pull request #18828 from alexet/alexet/fix-flakey-join-order
CPP: Prevent forced bad join order which is saved by context.
2025-02-24 17:54:16 +00:00
Simon Friis Vindum
6353dbf3f5 Merge branch 'main' into rust-core-std-models 2025-02-24 16:05:08 +01:00
Anders Schack-Mulligen
22b3dc8f43 Ruby: Remove getDefinitionExt references. 2025-02-24 15:25:53 +01:00
Paolo Tranquilli
22074afafb Merge pull request #18847 from github/redsun82/rust-trait-path
Rust: fix `<X as Y>` path extraction
2025-02-24 15:10:41 +01:00
Geoffrey White
24411b61e9 Fix typo. 2025-02-24 13:59:22 +00:00
Anders Schack-Mulligen
7499df43d0 Rust: Remove getDefinitionExt reference. 2025-02-24 14:27:17 +01:00
Anders Schack-Mulligen
0583d85f20 C#: Remove getDefinitionExt references. 2025-02-24 14:22:59 +01:00
Paolo Tranquilli
d8dad7dff0 Merge branch 'main' into redsun82/rust-trait-path 2025-02-24 14:12:53 +01:00
Michael Nebel
e8f86e41f4 C#: Add change note. 2025-02-24 13:58:55 +01:00
Michael Nebel
97f9f0ccc5 C#: Update test expected output. 2025-02-24 13:53:50 +01:00
Michael Nebel
a85131bf0f C#: Better handling of (value) tuple types in cs/call-to-object-tostring. 2025-02-24 13:53:16 +01:00
Anders Schack-Mulligen
db7ec4a781 Java: Remove getDefinitionExt reference 2025-02-24 13:50:08 +01:00
Michael Nebel
5eb305da93 C#: Add some value tuple examples for cs/call-to-object-tostring and update test expected output. 2025-02-24 13:42:30 +01:00
Jonas Jensen
11a0a9f8af Java: StaticInitializationVector with postprocess
Use the new `postprocess` feature for the test of
`StaticInitializationVector.ql`. This makes it easier to modify and test
this query for diff-informed operation.
2025-02-24 13:33:02 +01:00
Anders Schack-Mulligen
09454f9f14 SSA: Remove unused. 2025-02-24 13:02:03 +01:00
Anders Schack-Mulligen
1af753cd0c JS: Use shared barrier guard for falsy check. 2025-02-24 13:00:06 +01:00
Anders Schack-Mulligen
782b6cfb9a SSA: Fix bug in guards for ssa input nodes. 2025-02-24 13:00:06 +01:00
Paolo Tranquilli
8ef2029f3d Merge pull request #18756 from github/redsun82/rust-config
Rust: expose more rust-analyzer config knobs
2025-02-24 12:51:37 +01:00
Paolo Tranquilli
81b6848a9c Merge pull request #18822 from github/redsun82/rust-lint
Rust: strengthen linting script
2025-02-24 12:48:29 +01:00
Tom Hvitved
425fa0db09 Merge pull request #18823 from hvitved/rust/path-resolution-more
Rust: More path resolution improvements
2025-02-24 12:46:07 +01:00
Geoffrey White
6cb8f65076 Rust: Fix up .expected after merge. 2025-02-24 10:58:19 +00:00
Geoffrey White
fdc76dd06a Merge branch 'main' into nth 2025-02-24 10:57:45 +00:00
Geoffrey White
3681ace746 C++: Explore negative indices more in tests. 2025-02-24 10:36:43 +00:00
Paolo Tranquilli
1bce783623 Rust: accept test changes for now 2025-02-24 11:30:58 +01:00
Tom Hvitved
7380ec8a55 Address review comments 2025-02-24 11:09:58 +01:00
Florin Coada
fcb470330c Merge pull request #18833 from github/changedocs/2.20.5
Add changelog for CodeQL CLI version 2.20.5
2025-02-24 10:06:34 +00:00
Anders Schack-Mulligen
88fe4faf9d SSA: Remove nodes that are no longer used. 2025-02-24 11:00:48 +01:00
Anders Schack-Mulligen
09b2aeb53a SSA: Replace use-use step implementation in data-flow integration. 2025-02-24 10:58:14 +01:00
Paolo Tranquilli
689e7b8440 Rust: fix <X as Y> path extraction
This works around a quirk in rust-analyzer's AST generation machinery,
where for an `<X as Y>` path there might be no way to directly get `Y`
from the path segment.
2025-02-24 10:38:15 +01:00
Geoffrey White
08913c551d Merge pull request #18827 from geoffw0/exectainted
C++: Expand qldoc and tests for cpp/command-line-injection
2025-02-24 08:53:49 +00:00
Michael B. Gale
1b2d842b44 Merge pull request #17900 from github/mbg/go/fix/project-files-in-vendor 2025-02-22 10:00:46 +00:00
Owen Mansel-Chan
d9d909a61e Address review comments 2025-02-22 02:31:08 +00:00
Geoffrey White
90758b37ef C++: Change notes. 2025-02-21 19:00:12 +00:00
Geoffrey White
fd32355ca8 C++: Give cpp/overflow-buffer medium precision, and upgrade severity so it will appear in security-extended. 2025-02-21 18:58:58 +00:00
Geoffrey White
ae25399a47 C++: Fix offsetof bug. 2025-02-21 18:58:56 +00:00
Geoffrey White
547b082ac3 C++: Even more test cases. 2025-02-21 18:58:42 +00:00
Geoffrey White
3aa1ba5876 C++: More additional test cases. 2025-02-21 18:09:41 +00:00
Chris Smowton
32e4c741cc Merge pull request #18554 from smowton/smowton/admin/test-gbk-xml-extraction
Java: Add tests for XML and Java extraction with GBK charset
2025-02-21 17:27:32 +00:00
Owen Mansel-Chan
721b8c4ea6 Merge pull request #18826 from owen-mc/go/join-order-fixes
Go: Fix bad join order in `comparesFirstCharacter`
2025-02-21 16:25:15 +00:00
Alex Eyers-Taylor
57e985cc21 CPP: Simplify getClassAndNameImpl 2025-02-21 16:23:45 +00:00
Edward Minnix III
c93fb4cbc9 Merge pull request #18493 from egregius313/egregius313/go/mad/database/mongodb
Go: `database` local sources for MongoDB
2025-02-21 09:32:15 -05:00
Anders Schack-Mulligen
4e515bc2f5 JS: Remove reference to isInputInto 2025-02-21 14:48:24 +01:00
Asger F
cd0fd02e74 Rust: Remove 'Source' annotations from same line as Alert
Source tags should no longer be used when on the same line as the Alert.

The ones in this file went unnoticed however because *all* of them were on the same line as an Alert, which made the test library ignore all Source tags.
2025-02-21 14:44:48 +01:00
Asger F
cd2c4d5e3a JS: Use post-processed inline test in MissingCsrfMiddleware
This query flags the cookie-parsing middleware in order to consolidate huge numbers of alerts into a single alert, which is more manageable. But simply annotating the cookie-parsing middleware with 'Alert' isn't a very useful, we want to annotate which middlewares are vulnerable.
2025-02-21 14:44:46 +01:00
Asger F
e2fe74ccd6 JS: Add support for RelatedLocation tags 2025-02-21 14:44:45 +01:00
Anders Schack-Mulligen
9acb58e8c2 SSA: Add SsaNode predicates that don't mention DefinitionExt. 2025-02-21 14:43:51 +01:00
Tamas Vajk
24bd9fb7e5 Add queries to C# CCR suite 2025-02-21 14:24:09 +01:00
Simon Friis Vindum
4ef64cdf9f Merge pull request #18820 from paldepind/rust-fewer-no-match
Rust: Remove nonsentical no-match CFG edges
2025-02-21 14:18:23 +01:00
Napalys
3587ba593a Add change note and added tanstack to supported framework list 2025-02-21 13:47:48 +01:00
Napalys
ab0241c1de Added missing doc strings for Tanstack queries 2025-02-21 13:32:49 +01:00
Simon Friis Vindum
e6e4ff1b72 Rust: Accept changes to expected files 2025-02-21 13:24:06 +01:00
Napalys
1227a7eedc Add Tanstack framework support and enhance data flow tracking for fetch responses 2025-02-21 13:24:00 +01:00
Napalys
05690c21ed Added a test for tanstack/react-query useQuery 2025-02-21 13:24:00 +01:00
Simon Friis Vindum
0f627ae59a Merge branch 'main' into rust-fewer-no-match 2025-02-21 13:20:50 +01:00
Florin Coada
967c1ad51c Merge pull request #18832 from github/coadaflorin/csharp-changelog-clean
Coadaflorin/csharp changelog clean
2025-02-21 11:01:39 +00:00
Florin Coada
fd9475ea2f Add changelog for CodeQL CLI version 2.20.5 2025-02-21 10:48:21 +00:00
Florin Coada
38f538e76a Update 3.1.1.md 2025-02-21 10:44:20 +00:00
Florin Coada
b77b5fc308 Update CHANGELOG.md 2025-02-21 10:43:43 +00:00
Owen Mansel-Chan
50d1bc6aa0 Improve bad join order 2025-02-21 10:31:46 +00:00
Simon Friis Vindum
df2a110b41 Rust: Changes based on PR comments 2025-02-21 11:15:54 +01:00
Simon Friis Vindum
65bce9d7e0 Rust: Add CFG test with tuple struct pattern 2025-02-21 10:59:21 +01:00
Anders Schack-Mulligen
6932e000c6 Java: Switch BaseSSA to use shared SSA lib. 2025-02-21 08:57:23 +01:00
Anders Schack-Mulligen
1c616d10d4 Merge pull request #18819 from aschackmull/ssa/refactor-phiread3
Ssa: Refactor shared SSA in preparation for eliminating phi-read definitions
2025-02-21 08:56:38 +01:00
Owen Mansel-Chan
44c5df5246 Force global value fanout to go last 2025-02-21 01:01:09 +00:00
Owen Mansel-Chan
8aa9dd7092 Move go generate comment 2025-02-21 00:38:33 +00:00
Sarita Iyer
26da997bb2 Merge pull request #18809 from github/saritai/docs-formatting-fix
Fix table alignment in supported languages article
2025-02-20 16:35:39 -05:00
Ed Minnix
f7e094e887 Move depstubber line to test file 2025-02-20 16:28:51 -05:00
Paolo Tranquilli
45baceb2f5 Merge pull request #18821 from github/redsun82/rust-license
Rust: add licensing information to crates and extractor pack
2025-02-20 22:20:40 +01:00
Chris Smowton
311c1e1654 Merge pull request #18829 from smowton/smowton/admin/regularise-extractor-licenses
Regularise extractor pack licenses to all cite the MIT license that covers the whole CodeQL repository
2025-02-20 20:02:26 +00:00
Chris Smowton
a1ba584b20 Autoformat 2025-02-20 19:31:00 +00:00
Chris Smowton
4567e02b8c Regularise extractor pack licenses to all cite the MIT license that covers the whole CodeQL repository 2025-02-20 18:55:55 +00:00
Chris Smowton
fe34aa35a9 Merge pull request #18699 from github/smowton/admin/update-license
Update license; remove redundant Go qlpack license.
2025-02-20 18:19:51 +00:00
Geoffrey White
89355991df C++: Additional test cases. 2025-02-20 16:28:35 +00:00
Geoffrey White
e77ebf0715 C++: Test spacing. 2025-02-20 16:23:35 +00:00
Alex Eyers-Taylor
53c5b8ff9e CPP: Prevent forced bad join order. 2025-02-20 16:06:42 +00:00
Geoffrey White
b6f9055566 C++: Add and correct some QLDoc. 2025-02-20 15:33:59 +00:00
Geoffrey White
3954f5e45e C++: Add some test cases. 2025-02-20 15:21:25 +00:00
Geoffrey White
c36e91855f C++: Fix a test case. 2025-02-20 15:21:17 +00:00
Simon Friis Vindum
cd49df0ff2 Merge pull request #18784 from paldepind/rust-generate-sources-sinks
Rust: Generate sources and sinks
2025-02-20 15:59:58 +01:00
Owen Mansel-Chan
7b6a91e90e Fix bad join order in comparesFirstCharacter 2025-02-20 14:49:25 +00:00
Anders Schack-Mulligen
8c0cc077c8 Ssa: Fix qldoc duplicate word. 2025-02-20 15:49:23 +01:00
Tom Hvitved
22ed2e56a9 Merge pull request #18799 from hvitved/cfg/cond-split-prune
CFG: Prune `ConditionalCompletionSplitting` for unnecessary splits
2025-02-20 14:19:44 +01:00
Tom Hvitved
496f485375 Rust: Path resolution for bounded type parameters 2025-02-20 13:57:11 +01:00
Tom Hvitved
8f0aced868 Rust: Path resolution for trait items with default implementations 2025-02-20 13:56:19 +01:00
Chris Smowton
9162ce7d73 Add test for extraction of a Java file with a non-UTF-8 charset 2025-02-20 12:31:36 +00:00
Chris Smowton
be6162edc0 Add test for XML extraction with GBK charset 2025-02-20 12:31:36 +00:00
Tom Hvitved
1be903cb4f Rust: Add more path resolution tests 2025-02-20 12:04:20 +01:00
Simon Friis Vindum
b6144c2f08 Merge branch 'main' into rust-core-std-models 2025-02-20 12:00:47 +01:00
Simon Friis Vindum
4a01a4df37 Rust: Remove nonsensical no-match CFG edges 2025-02-20 10:51:33 +01:00
Paolo Tranquilli
292b962513 Rust: strengthen linting script
* `bazel run //rust/ast-generator:inject-sources` could fail on macOS
  if a non-coreutils `cp` was used
* that is now also run by `lint.py` to ensure the sources cargo needs
  are present
2025-02-20 10:39:14 +01:00
Anders Schack-Mulligen
8e609b19f5 Ruby: Accept qltest change.
This is a result of the bugfix in the commit named
"C#/Ruby/Rust: Fix bug in adjacentReadPairSameVar"
2025-02-20 10:33:44 +01:00
Paolo Tranquilli
1038f7c035 Rust: add licensing information to crates and extractor pack 2025-02-20 10:22:17 +01:00
Tom Hvitved
a8bb37c3c2 Swift: Update expected test output 2025-02-20 10:19:45 +01:00
Tom Hvitved
889ef33006 Rust: Update expected test output 2025-02-20 10:19:41 +01:00
Tom Hvitved
9d8e9975de C#: Update expected test output 2025-02-20 10:18:15 +01:00
Tom Hvitved
3bf424b07d CFG: Prune ConditionalCompletionSplitting for unnecessary splits 2025-02-20 10:18:13 +01:00
Simon Friis Vindum
52515dda35 Rust: Add more CFG tests for patterns 2025-02-20 09:52:07 +01:00
Asger F
a1b7096125 Merge pull request #18783 from asgerf/js/downward-calls
JS: Resolve calls downward in class hierarchy
2025-02-20 09:01:58 +01:00
Remco Vermeulen
22bf1af9f3 Merge pull request #18730 from yoff/ruby/add-DBCallInLoop-to-CCR-suite
ruby: include `rb/database-query-in-loop` in the CCR suite
2025-02-19 14:16:56 -08:00
Tom Hvitved
c22021ab55 Merge pull request #18808 from hvitved/rust/path-resolution-inherited-functions
Rust: Path resolution for inherited associated items
2025-02-19 19:35:53 +01:00
Jami
485ee5c5ed Merge pull request #18692 from jcogs33/jcogs33/spring-csrf-qhelp-update
Java: update `java/spring-disabled-csrf-protection` QHelp
2025-02-19 11:39:11 -05:00
Paolo Tranquilli
d0461e2c08 Merge branch 'main' into redsun82/rust-config 2025-02-19 17:09:04 +01:00
Anders Schack-Mulligen
b76e5f55c6 SSA: Deprecate unused predicate. 2025-02-19 16:41:49 +01:00
Anders Schack-Mulligen
7e596032f1 Rust: Switch use-use predicates to new implementation. 2025-02-19 16:38:37 +01:00
Anders Schack-Mulligen
4ddc5c9d75 Ruby: Switch use-use predicates to new implementation. 2025-02-19 16:34:36 +01:00
Anders Schack-Mulligen
b0a5e62003 C#: Clean up unused. 2025-02-19 16:27:52 +01:00
Anders Schack-Mulligen
17ae747b08 C#: Switch use-use predicates to new implementation. 2025-02-19 16:24:21 +01:00
Anders Schack-Mulligen
ed40035b9c C#/Ruby/Rust: Fix bug in adjacentReadPairSameVar. 2025-02-19 16:20:57 +01:00
Anders Schack-Mulligen
291ea6f6eb Java: Move SSA data flow test and extend it to cover phi-read input edges. 2025-02-19 16:17:22 +01:00
Anders Schack-Mulligen
5379506464 Java: Use firstUse and adjacentUseUse predicates. 2025-02-19 16:17:22 +01:00
Anders Schack-Mulligen
cf2136fbc7 SSA: Export simple firstUse and adjacentUseUse predicates. 2025-02-19 16:17:22 +01:00
yoff
75d320401b Merge branch 'main' into ruby/add-DBCallInLoop-to-CCR-suite 2025-02-19 16:08:38 +01:00
Chris Smowton
bc6ce32af2 Merge pull request #18812 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-19 14:42:18 +00:00
Tom Hvitved
54ebe9a8f4 Rust: Path resolution for inherited associated items 2025-02-19 15:23:35 +01:00
yoff
7d3cc2eaf3 Merge pull request #18797 from github/redsun82/update-py-deps
Python: upgrade `clap`
2025-02-19 15:12:43 +01:00
github-actions[bot]
ce234bb2c6 Add changed framework coverage reports 2025-02-19 14:09:10 +00:00
Michael B. Gale
11e3a08e44 Go: Check for modules.txt or glide.yaml to exclude vendor dirs 2025-02-19 13:57:15 +00:00
Michael B. Gale
fe4ee54b6f Go: Add more logging for go.mod files to workspace discovery 2025-02-19 13:25:49 +00:00
Simon Friis Vindum
ae7e15d82f Merge pull request #18754 from paldepind/rust-ref-pattern
Rust ref pattern
2025-02-19 14:24:09 +01:00
Michael B. Gale
1d9a3dbd08 Go: Make go happy with the vendor folder 2025-02-19 12:47:28 +00:00
Michael B. Gale
ebd6fd4156 Merge pull request #18814 from github/mbg/bazel/test-output-all
Bazel: Add `--test_output all`
2025-02-19 12:40:07 +00:00
Asger F
a5fde9c3df Merge pull request #18807 from asgerf/js/vue-without-tsconfig-fixup
JS: Extract TS snippets with no tsconfig.json file
2025-02-19 13:31:08 +01:00
Paolo Tranquilli
3c00dc48b1 Merge pull request #18802 from github/redsun82/rust-glob-members
Rust: support glob members in workspaces
2025-02-19 13:30:58 +01:00
Asger F
58c8b5fa2b Merge pull request #18790 from asgerf/js/no-implicit-array-taint
JS: Do not taint whole array when storing into ArrayElement
2025-02-19 13:23:31 +01:00
Michael B. Gale
462b6e6a0e Bazel: Add --test_output all 2025-02-19 11:41:57 +00:00
Michael B. Gale
4fa0019b55 Go: Add vendor directory to mixed-layout test with go.work file
The `go.work` file here should not get discovered by the autobuilder
2025-02-19 11:24:54 +00:00
Michael B. Gale
b372af51b6 Go: Allow FindAllFilesWithName to use predicate functions for dirsToSkip 2025-02-19 11:24:53 +00:00
Michael B. Gale
2cd9bd8a43 Go: Move IsGolangVendorDirectory to util package 2025-02-19 11:24:52 +00:00
Simon Friis Vindum
faef735ce9 Rust: Move equality into disjunction 2025-02-19 11:11:11 +01:00
Paolo Tranquilli
9b6f0da1c1 Rust: move nested ql test out 2025-02-19 10:37:52 +01:00
Paolo Tranquilli
c1df8d0e13 Rust: add flag to turn off extractor path resolution 2025-02-19 09:44:09 +01:00
Asger F
e1c280500e Merge pull request #18749 from Kwstubbs/express
JS: Add result.download to Express as Path Traversal Sink
2025-02-19 09:08:36 +01:00
Remco Vermeulen
9865577bf5 Merge pull request #18811 from rvermeulen/rvermeulen/update-java-ccr-suite
Updata Java CCR suite
2025-02-18 16:54:41 -08:00
Remco Vermeulen
2d991fc387 Updata Java CCR suite 2025-02-18 20:25:22 +00:00
Geoffrey White
1a6c6a454d Rust: Effect on integration tests. 2025-02-18 17:50:54 +00:00
Geoffrey White
12d5a30703 Rust: Add a test of mutable iterators as well. 2025-02-18 17:20:43 +00:00
Geoffrey White
8024fb6812 Rust: Add more models for Iterator. 2025-02-18 17:20:39 +00:00
Asger F
804a1a6cb0 JS: Handle array of sorting criteria 2025-02-18 16:58:04 +01:00
Asger F
7486742c37 JS: Fix model of _.sortBy 2025-02-18 16:53:40 +01:00
Asger F
ad4522c781 JS: Make 'typeStrongerThan' transitive 2025-02-18 16:04:48 +01:00
Asger F
e40ee821c2 JS: Update a qldoc comment 2025-02-18 16:02:47 +01:00
Anders Schack-Mulligen
194afbb7f8 Java: Simplify SSA for variable capture. 2025-02-18 14:01:20 +01:00
Anders Schack-Mulligen
35f50bac97 SSA: Reimplement use-use. 2025-02-18 14:01:20 +01:00
Anders Schack-Mulligen
d6dc91d191 SSA: Inline predicate to simplify negation. 2025-02-18 14:01:20 +01:00
Anders Schack-Mulligen
411aff6748 SSA: Refactor ranking into parameterised module. 2025-02-18 14:01:19 +01:00
Anders Schack-Mulligen
11166fc42d SSA: Restrict phi-read creation to be based on reachable reads. 2025-02-18 14:01:19 +01:00
Anders Schack-Mulligen
d5ac5b4654 SSA: Replace uncertainWriteDefinitionInput implementation.
This yields a tiny bit of additional tuples consistent with the prior
Java implementation.
2025-02-18 14:01:18 +01:00
Anders Schack-Mulligen
a4fee2e299 SSA: Minor perf tweak to reduce tuple duplication. 2025-02-18 14:01:18 +01:00
Anders Schack-Mulligen
7e441d9eca SSA: Fold getImmediateBasicBlockDominator into loop-invariant predicate. 2025-02-18 14:01:17 +01:00
Anders Schack-Mulligen
77ccff6be8 SSA: Replace exported def-reaches predicates (behaviour-preserving). 2025-02-18 14:01:17 +01:00
Anders Schack-Mulligen
6e272d07af SSA: Ignore phi-reads in the new def-reaches module. 2025-02-18 14:01:16 +01:00
Anders Schack-Mulligen
ea08c60326 SSA: Copy 3 predicates from the outer scope verbatim into the new Reaches module. 2025-02-18 14:01:16 +01:00
Anders Schack-Mulligen
613323ee3a SSA: Copy parts of SsaDefReaches verbatim to new module. 2025-02-18 14:01:15 +01:00
Anders Schack-Mulligen
81b3035160 SSA: Inline predicate 2025-02-18 14:01:15 +01:00
Anders Schack-Mulligen
f80cd97232 SSA: Factor out phi-read construction in its own predicate. 2025-02-18 14:01:14 +01:00
Anders Schack-Mulligen
5723d27428 SSA: Make inReadDominanceFrontier a bit smaller without affecting phi-read creation. 2025-02-18 14:01:14 +01:00
Anders Schack-Mulligen
c5e28842fb SSA: Remove superfluous column from liveAtRank. 2025-02-18 14:01:13 +01:00
Anders Schack-Mulligen
b62432fc80 SSA: Remove superfluous boolean. 2025-02-18 14:01:13 +01:00
Anders Schack-Mulligen
36613e150b SSA: Remove superfluous conjunct (implied by refRank). 2025-02-18 14:01:13 +01:00
Anders Schack-Mulligen
3822d149af SSA: Elaborate qldoc. 2025-02-18 14:01:12 +01:00
Jami
d94dc5aa40 Merge pull request #18504 from jcogs33/jcogs33/java/file-constructor-path-sanitizer
Java: `File` constructor path sanitizer
2025-02-18 08:00:32 -05:00
Tom Hvitved
ab74d903fd Rust: Path resolution for inherited functions 2025-02-18 13:49:05 +01:00
Tom Hvitved
f3a393f9da Rust: Add more path resolution tests 2025-02-18 13:48:27 +01:00
Asger F
b3f7cd988b JS: Extract TS snippets with no tsconfig.json file 2025-02-18 12:43:13 +01:00
Simon Friis Vindum
53557dbebd Merge pull request #18800 from paldepind/generate-model-script
Sanitize path when generating MaD files
2025-02-18 12:22:42 +01:00
Paolo Tranquilli
530bfccb7c Merge branch 'main' into redsun82/update-py-deps 2025-02-18 10:03:29 +01:00
Paolo Tranquilli
38efd4a8a2 Python: downgrade tree-sitter back to 0.20.4 2025-02-18 10:03:18 +01:00
Asger F
24e7aad6ba JS: Overriden -> Overridden 2025-02-18 09:51:13 +01:00
Asger F
82a4b17218 JS: Change note 2025-02-18 09:43:08 +01:00
Asger F
e610683377 JS: Linter fix 2025-02-18 09:25:23 +01:00
Ian Lynagh
02249af781 Merge pull request #18804 from github/post-release-prep/codeql-cli-2.20.5
Post-release preparation for codeql-cli-2.20.5
2025-02-17 21:40:36 +00:00
Jami Cogswell
9bb5fe837d Java: address review comments 2025-02-17 15:47:45 -05:00
Asger F
c958702830 JS: Accept some unproblematic consistency warnings 2025-02-17 20:30:07 +01:00
github-actions[bot]
ad24f94a77 Post-release preparation for codeql-cli-2.20.5 2025-02-17 17:58:24 +00:00
Geoffrey White
79525fa4ed Rust: Variant -> Field. 2025-02-17 17:33:52 +00:00
Ian Lynagh
975881c74a Merge pull request #18803 from github/release-prep/2.20.5
Release preparation for version 2.20.5
2025-02-17 17:29:25 +00:00
Geoffrey White
048f7dbd37 Merge branch 'main' into nth 2025-02-17 17:17:59 +00:00
github-actions[bot]
6f4562f3bd Release preparation for version 2.20.5 2025-02-17 16:55:54 +00:00
Paolo Tranquilli
342bff6125 Python: undo tree-sitter update 2025-02-17 15:52:45 +01:00
Geoffrey White
8bcfd00565 Rust: Remove the manual models. 2025-02-17 14:29:16 +00:00
Paolo Tranquilli
755140152c Rust: support glob members in workspaces 2025-02-17 15:09:35 +01:00
Asger F
a54f0a74f1 JS: Target post-update node instead of getALocalSource
getAPropertyWrite() contains getALocalSource() under the the hood. Don't rely on that to find the successor of a mutation.
2025-02-17 15:00:02 +01:00
Asger F
6e074c301f JS: Port lodash callback steps to flow summaries
Not all of lodash, just the callbacks we already modeled plus a few easy ones
2025-02-17 14:54:45 +01:00
Paolo Tranquilli
df305d6b52 Python: run bazel vendoring 2025-02-17 14:18:48 +01:00
Simon Friis Vindum
a253b77894 Rust: Add clarifying comment 2025-02-17 14:14:30 +01:00
Erik Krogh Kristensen
7fa41c438f Merge pull request #18794 from erik-krogh/v-flag
JS: Add support for the regex V flag
2025-02-17 13:56:48 +01:00
Anders Schack-Mulligen
a90bd68796 Merge pull request #18786 from aschackmull/ssa/cleanup
Rust/Ruby: Minor SSA cleanup.
2025-02-17 13:51:17 +01:00
Simon Friis Vindum
12a5766f31 Sanitize path when generating MaD files 2025-02-17 13:45:33 +01:00
Simon Friis Vindum
b08f5356dd Merge pull request #18772 from paldepind/rust-method-call
Rust: Adjust argument position when call expression is for method
2025-02-17 13:39:24 +01:00
Simon Friis Vindum
dcfe65bc66 Rust: Address review comments 2025-02-17 13:35:46 +01:00
yoff
4b53e1c034 Merge pull request #18304 from yoff/ruby/performance-queries
Ruby: Query for database calls in a loop
2025-02-17 13:16:07 +01:00
Asger F
4e325d9f1c JS: Convert some exception steps to legacy 2025-02-17 11:53:50 +01:00
Owen Mansel-Chan
6045d9bb22 Merge pull request #18792 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-17 10:45:36 +00:00
Asger F
08b9d934c0 JS: Add a negative test 2025-02-17 11:37:44 +01:00
Asger F
352924fb8c JS: Handle a few other stringification contexts 2025-02-17 11:36:28 +01:00
Asger F
33ab7db98a JS: Handle Array.prototype.toString calls 2025-02-17 11:25:03 +01:00
Asger F
a74b203c86 JS: Add test with implicit array stringification 2025-02-17 11:21:46 +01:00
Asger F
d87534c7d0 JS: Model Array#toString 2025-02-17 11:13:36 +01:00
Asger F
e8d1703224 JS: Add test for flow through Buffer.concat
This flow was lost since the existing model of concat() boxes its return value in ArrayElement. There is no explicit model of Buffer.concat.
2025-02-17 11:12:51 +01:00
Simon Friis Vindum
0c3e8a0f5b Rust: Adapt tests and existing models to account for generated models 2025-02-17 11:08:42 +01:00
Paolo Tranquilli
91b3d108bb Python: upgrade cargo dependencies
This required some code changes because of some breaking changes in
`clap` and `tree-sitter`.

Also needed to assign a new bazel repo name to the `crates_vendor` to
avoid name conflicts in `MODULE.bazel`.
2025-02-17 10:56:36 +01:00
Simon Friis Vindum
8b3c1ab698 Merge branch 'main' into rust-ref-pattern 2025-02-17 10:36:39 +01:00
Asger F
d79f429978 JS: Update changes to nodes/edges/subpaths
No changes in actual alerts
2025-02-17 10:36:05 +01:00
Asger F
0ca9b2285b Merge pull request #18740 from asgerf/js/more-precise-diff-informed
JS: Provide more precise related locations
2025-02-17 10:27:15 +01:00
Asger F
b8f48aa711 JS: Change note 2025-02-17 10:24:57 +01:00
Asger F
97eb09fef8 JS: Accept updated test output 2025-02-17 10:19:49 +01:00
Tom Hvitved
3644de007f Merge pull request #18767 from hvitved/ql4ql/inline-expectations
QL4QL: Add query suggesting use of inline test expectations
2025-02-17 10:04:35 +01:00
Joe Farebrother
180e45d66a Merge pull request #18599 from joefarebrother/python-qual-not-named-self-cls
Python: Modernize py/not-named-self and py/not-named-cls queries
2025-02-17 08:58:34 +00:00
Asger F
e02577d3e9 Merge pull request #18768 from asgerf/js/url-search-params
JS: Migrate model of URLSearchParams
2025-02-17 09:10:35 +01:00
github-actions[bot]
5af60bba80 Add changed framework coverage reports 2025-02-17 00:22:08 +00:00
erik-krogh
6ebffd59f6 add change-note 2025-02-16 19:23:44 +01:00
erik-krogh
55b8e8b748 fix the ECMAScript version to be ES2024 2025-02-16 19:06:14 +01:00
erik-krogh
01d70a6d73 add test of the new v flag 2025-02-16 19:01:02 +01:00
Napalys
3ec038e7b6 JS: Added predicate to check if v flag is used on regular expression 2025-02-16 18:31:08 +01:00
Napalys
4097aa9f78 JS: Added ecma2021, thus extractor now can deal with RegExp v flag 2025-02-16 18:31:06 +01:00
Sarita Iyer
1fe46ccfd6 fix table alignment 2025-02-14 16:37:37 -05:00
Jami Cogswell
61a184c1d7 Java: update more tests 2025-02-14 16:08:06 -05:00
Jami Cogswell
2bb6a3914b Java: update tests 2025-02-14 15:16:08 -05:00
Aditya Sharad
5f4871d609 Merge pull request #18785 from martincostello/gh-18782
Fix docker SHA false positive
2025-02-15 01:33:39 +05:30
martincostello
31913c4a55 Fix test
Fix failing test.
2025-02-14 19:46:46 +00:00
Jami Cogswell
c0ebeb9c7b Java: use AdditionalTaintStep 2025-02-14 13:52:43 -05:00
martincostello
f1723321fa Format Document
Fix lint warning.
2025-02-14 18:06:00 +00:00
Martin Costello
979d604bf6 Apply suggestions from code review
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-02-14 17:21:24 +00:00
Paolo Tranquilli
ea0bd74728 Merge pull request #18567 from github/redsun82/env-dump-integration-test
Rust/Swift: add integration tests checking env dumping
2025-02-14 16:52:20 +01:00
Asger F
283954d515 JS: Do not store into arrays implicitly 2025-02-14 16:06:43 +01:00
Simon Friis Vindum
925d6ac234 Rust: Add generated models for standard libraries including core 2025-02-14 14:44:22 +01:00
Mathias Vorreiter Pedersen
89fd2876b6 Merge pull request #18773 from MathiasVP/cleanup-ssa-internals-2
C++: Clean up some stuff in `SsaInternals`
2025-02-14 13:38:43 +00:00
martincostello
5d2409e652 Fix query
Forgot to move the `and`.
2025-02-14 13:36:09 +00:00
martincostello
9a7ed7f3f7 Re-order conditions
Makes for a neater diff.
2025-02-14 13:35:20 +00:00
martincostello
99bb0f0b4f Use if then else
Apply code review suggestion.

Co-Authored-By: Taus <1104778+tausbn@users.noreply.github.com>
2025-02-14 13:30:55 +00:00
martincostello
cf8abb7989 Add change note
Add change note.
2025-02-14 13:27:36 +00:00
Anders Schack-Mulligen
c84087cd19 Ruby: Deprecate dependencies of deprecated predicates for clarity. 2025-02-14 14:18:20 +01:00
Anders Schack-Mulligen
28cb37364c Rust: delete dead code. 2025-02-14 14:16:21 +01:00
Owen Mansel-Chan
a9b9410104 Merge pull request #17759 from Kwstubbs/path-sanitizers
Go: Add Tainted Path sanitizers
2025-02-14 13:13:19 +00:00
Owen Mansel-Chan
d8fe4d2698 Merge pull request #18489 from owen-mc/go/rename-namedtype-definedtype
Go: Rename "named type" to "defined type"
2025-02-14 13:03:42 +00:00
Owen Mansel-Chan
083c756973 Merge pull request #18766 from owen-mc/go/update-framework-docs
Go: Add more modeled frameworks to docs
2025-02-14 13:03:13 +00:00
Mathias Vorreiter Pedersen
9cfd3391d2 C++: Move 'getImpl' to a private non-member predicate. 2025-02-14 13:01:28 +00:00
martincostello
71bc89beda Fix query
Fix various issues with the query.
2025-02-14 12:59:02 +00:00
Martin Costello
9a29cebe58 Fix docker SHA false positive
Fix false positives for pinned Docker container images.
2025-02-14 12:35:55 +00:00
Asger F
ab5fc9f4d7 JS: Implement viableImplInCallContext 2025-02-14 13:25:19 +01:00
Simon Friis Vindum
632e0c82bd Rust: Generate sources and sinks 2025-02-14 12:48:05 +01:00
Asger F
ff7bc7c25e JS: Track types of classes in data flow 2025-02-14 12:44:45 +01:00
Asger F
d3c4b5d493 JS: Add test with spurious flow due to up-down calls 2025-02-14 12:42:02 +01:00
Owen Mansel-Chan
347e5ed029 Update model in test expectation 2025-02-14 10:49:51 +00:00
Owen Mansel-Chan
250cbb6b05 Change location of postprocess queries 2025-02-14 10:26:55 +00:00
Asger F
b8b2b9a470 JS: Resolve calls downward in the class hierarchy 2025-02-14 11:17:19 +01:00
Asger F
aff458d948 JS: Also add tests for upward calls and overriding 2025-02-14 11:17:17 +01:00
Asger F
9321d69034 JS: Add CG test showing lack of calls down to subclasses 2025-02-14 11:17:15 +01:00
Asger F
4043765008 JS: Avoid ambiguity in an inline CG annotation 2025-02-14 11:17:14 +01:00
Asger F
a61d42edc3 JS: Make inline CG tests report call target if NONE was given
Previously it would only report a spurious callee if the target function was named. Now, if specifying 'calls:NONE' if will report any callee as spurious.
2025-02-14 11:17:13 +01:00
Paolo Tranquilli
e1f92b466f Merge pull request #18608 from github/aibaars/tracing
Rust: use tracing/tracing-subscriber for logging
2025-02-14 10:36:54 +01:00
Paolo Tranquilli
f28140bee9 Merge branch 'main' into redsun82/env-dump-integration-test 2025-02-14 10:29:53 +01:00
Asger F
7df3e647d1 JS: Use US spelling 2025-02-14 10:28:55 +01:00
Asger F
25314b61db JS: Update nodes/edges output 2025-02-14 10:26:21 +01:00
Kevin Stubbings
74f16ee866 Merge branch 'main' into path-sanitizers 2025-02-14 01:11:39 -08:00
Owen Mansel-Chan
1a52398a29 Address review comments 2025-02-13 21:59:14 +00:00
Owen Mansel-Chan
8fca15036e Merge pull request #18774 from owen-mc/go/print-dbscheme-upgrade-diff
Go: Print diff when dbscheme upgrade fails
2025-02-13 21:43:21 +00:00
Geoffrey White
436f7ccc82 Rust: Accept trivial change to consistency test .expected. 2025-02-13 18:12:06 +00:00
Geoffrey White
bee8b2fe32 Merge branch 'main' into okerr 2025-02-13 17:55:32 +00:00
Geoffrey White
fdcbbdfa08 Rust: Model them. 2025-02-13 17:42:41 +00:00
Geoffrey White
2d9e1b3d16 Rust: Add a test of Result.ok and Result.err. 2025-02-13 17:39:20 +00:00
Ed Minnix
84131dd068 Add Client::Watch 2025-02-13 11:30:16 -05:00
Owen Mansel-Chan
c08bb257f3 Print diff when dbscheme upgrade fails 2025-02-13 16:20:50 +00:00
Owen Mansel-Chan
f9a87cd0ea Rename "namedtype" to "definedtype" in stats file 2025-02-13 16:19:51 +00:00
Owen Mansel-Chan
29f94f484c Add upgrade/downgrade scripts 2025-02-13 16:19:24 +00:00
Owen Mansel-Chan
024fbf8f3a Rename "named" to "defined" in dbscheme 2025-02-13 15:55:21 +00:00
Geoffrey White
6c314739f6 Rust: Accept changes to the summary stats query .expected. 2025-02-13 15:33:21 +00:00
Geoffrey White
c07a57bf6b Rust: Accept spurious test results (we need a barrier for numeric types of this query at some point; it's good that flow reaches it now). 2025-02-13 15:31:10 +00:00
Tom Hvitved
9f9857b547 QL4QL: Add query suggestion use of inline test expectations 2025-02-13 16:26:11 +01:00
Tom Hvitved
bd9eb7d564 Merge pull request #18770 from hvitved/shared/windows-drive-letter-trap-id
Rust extractors: Normalize drive letter paths with a trailing `/`
2025-02-13 16:24:11 +01:00
Tom Hvitved
1cfc8f6abc Merge pull request #18769 from hvitved/rust/mad-field-token
Rust: Use `Field` MaD token instead of `Variant`, `Struct`, `Tuple`
2025-02-13 16:23:52 +01:00
Owen Mansel-Chan
64c3f703fe Add change note 2025-02-13 15:22:35 +00:00
Owen Mansel-Chan
09c44616a0 Rename "named type" to "defined type" 2025-02-13 15:22:33 +00:00
Michael Nebel
50584c8e82 Merge pull request #18764 from michaelnebel/csharp/updatedocumentation
C#: Update the documentation on supported C# language versions and fr…
2025-02-13 15:56:55 +01:00
Paolo Tranquilli
5abcf13973 Merge branch 'main' into redsun82/rust-config 2025-02-13 15:38:13 +01:00
Paolo Tranquilli
a6f58c9fd2 Rust: add option for proc macro server 2025-02-13 15:37:54 +01:00
Mathias Vorreiter Pedersen
be1af88d23 C++: Add more QLDoc. 2025-02-13 14:28:36 +00:00
Mathias Vorreiter Pedersen
aff03bd721 C++: Delete confusing class synonym. 2025-02-13 14:28:14 +00:00
Mathias Vorreiter Pedersen
f9732c746b C++: Patch up various places that depended on the old IPA type. 2025-02-13 14:28:12 +00:00
Mathias Vorreiter Pedersen
75b6855769 C++: Move useful predicates from the old IPA type for the 'DefinitionExt' type. 2025-02-13 14:28:10 +00:00
Mathias Vorreiter Pedersen
f597ea99e1 C++: Delete the unnecessary IPA type of definitions. 2025-02-13 14:01:32 +00:00
Simon Friis Vindum
3f19279e98 Rust: Adjust argument position when call expression is for method 2025-02-13 14:12:14 +01:00
Simon Friis Vindum
a1069b1667 Rust: Add examples with methods called as functions 2025-02-13 14:03:35 +01:00
Tom Hvitved
02fd23e53a Rust extractors: Normalize drive letter paths with a trailing / 2025-02-13 14:02:39 +01:00
Tom Hvitved
e9c25037d4 Rust: Use Field MaD token instead of Variant, Struct, Tuple 2025-02-13 13:32:08 +01:00
Asger F
c4724f42a3 JS: Change note 2025-02-13 11:51:35 +01:00
Asger F
26dcbf7a2a JS: Migrate URLSearchParams model to flow summaries 2025-02-13 11:51:33 +01:00
Asger F
f531f4479b JS: Add test for URL and URLSearchParams 2025-02-13 11:51:32 +01:00
Owen Mansel-Chan
dd102c4cea Merge pull request #18645 from fabienpe/main
Added missing "GOOD" and "BAD" to some examples
2025-02-13 10:37:39 +00:00
Owen Mansel-Chan
63a853d8cb Add more modeled frameworks to docs 2025-02-13 10:16:51 +00:00
Owen Mansel-Chan
c537246310 Merge pull request #18761 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-13 09:46:27 +00:00
Michael Nebel
eea295a3e6 C#: Add change-note. 2025-02-13 10:38:06 +01:00
Tom Hvitved
b2ad98ae97 Merge pull request #18755 from hvitved/rust/type-param-to-string
Rust: Implement `TypeParam.to(Abbreviated)String`
2025-02-13 09:59:54 +01:00
Michael Nebel
cb91fbf06e C#: Update the documentation on supported C# language versions and frameworks. 2025-02-13 09:54:31 +01:00
github-actions[bot]
958c7d6ab6 Add changed framework coverage reports 2025-02-13 00:20:55 +00:00
Kevin Stubbings
253882c3d1 Update javascript/ql/lib/change-notes/2025-02-12-express-download.md
Co-authored-by: Asger F <asgerf@github.com>
2025-02-12 11:01:29 -08:00
Paolo Tranquilli
98c755d484 Merge pull request #18759 from github/redsun82/rust-avoid-linecol-panic
Rust: avoid panic from `line_index` crate
2025-02-12 18:46:44 +01:00
Geoffrey White
e07b25c6d4 Merge pull request #18577 from GeekMasher/rust-rusqlite
Rust: Add initial RuSQLite support
2025-02-12 17:14:15 +00:00
Geoffrey White
e9b8ec9324 Rust: Accept integration test changes (again). 2025-02-12 16:18:48 +00:00
Paolo Tranquilli
3dd7f23d5a Merge branch 'redsun82/rust-avoid-linecol-panic' into redsun82/rust-config 2025-02-12 17:02:19 +01:00
Paolo Tranquilli
234d63bb97 Rust: avoid panic from line_index crate
We found out we can stumble upon a `line_index.line_col` panic,
specifically when reporting a macro parse error.

This replaces `line_col` with safer `try_line_col`, and deals more
gracefully with the error.
2025-02-12 16:52:36 +01:00
Óscar San José
98ff406462 Add codeql exception to integration-tests folder 2025-02-12 16:42:08 +01:00
Geoffrey White
edda26c90d Merge branch 'main' into nth 2025-02-12 15:14:20 +00:00
Arthur Baars
18cf39d063 Rust: add verbosity and flamegraph as extractor options 2025-02-12 15:29:27 +01:00
Geoffrey White
aa43d50837 Merge pull request #18671 from geoffw0/http
Rust: Model some sources for HTTP
2025-02-12 14:26:30 +00:00
Paolo Tranquilli
1bd384564d Rust: expose more rust-analyzer config knobs 2025-02-12 14:14:43 +01:00
Geoffrey White
d0e0a7b0d0 Merge branch 'main' into http 2025-02-12 12:56:29 +00:00
Simon Friis Vindum
ef9676f838 Rust: Accept changes 2025-02-12 13:39:33 +01:00
Tom Hvitved
498828e91a Rust: Implement TypeParam.to(Abbreviated)String 2025-02-12 13:23:51 +01:00
Simon Friis Vindum
f5b247d314 Merge branch 'main' into rust-ref-pattern 2025-02-12 13:23:19 +01:00
Simon Friis Vindum
7476aeaabf Rust: Handle ref patterns in data flow
To do this we:
* Let SSA writes target the name inside identifier patterns instead of
  the pattern itself
* Include relevant names in the data flow graph
* Add a store step from a identifier patterns with `ref` into the
  contained name. So we have an edge `ref a` -> `a` that stores in the
  reference content type.
2025-02-12 13:20:11 +01:00
Óscar San José
efd9523079 Fix typo in CodeQL workflow configuration 2025-02-12 12:59:48 +01:00
Simon Friis Vindum
9054f1612b Merge pull request #18753 from geoffw0/fix
Rust: Fix Windows integration test.
2025-02-12 12:38:09 +01:00
Óscar San José
3611673eec Fix param name in CodeQL workflow configuration 2025-02-12 12:34:02 +01:00
Owen Mansel-Chan
19fcf3c554 Merge pull request #18454 from owen-mc/go/mad/encoding-and-weak
Go: Add models for standard library updates in Go 1.24
2025-02-12 11:25:13 +00:00
Owen Mansel-Chan
dbad4df2ff Update change note
Co-authored-by: Michael B. Gale <mbg@github.com>
2025-02-12 11:15:27 +00:00
Geoffrey White
bc1805c635 Rust: .yaml -> .yml 2025-02-12 10:48:49 +00:00
Owen Mansel-Chan
27622726fa Pretty-print models in a test 2025-02-12 10:40:28 +00:00
Geoffrey White
cfcc6c8a50 Rust: Rename model file. 2025-02-12 10:16:57 +00:00
Owen Mansel-Chan
01ea4bd114 Add change note 2025-02-12 10:05:36 +00:00
Owen Mansel-Chan
eac77036b5 Update go version required for stdlib tests 2025-02-12 10:05:36 +00:00
Owen Mansel-Chan
79232da9d4 Add models for weak package, added in Go 1.24 2025-02-12 10:05:36 +00:00
Owen Mansel-Chan
2806e07760 Model additions to encoding in Go 1.24
Add models for `BinaryAppender` and `TextAppender`.
2025-02-12 10:05:36 +00:00
Michael B. Gale
a21dfc9a3b Merge pull request #18306 from github/go/1.24
Go: Support 1.24
2025-02-12 09:59:00 +00:00
Simon Friis Vindum
5da14252ed Rust: Include names in patterns in the CFG 2025-02-12 10:48:57 +01:00
Joe Farebrother
f46a2a1773 Exclude some decorators 2025-02-12 09:40:45 +00:00
Geoffrey White
333b183f43 Merge branch 'main' into http 2025-02-12 09:40:12 +00:00
Asger F
654c6bfec7 Merge pull request #18735 from asgerf/inline-test-non-location
Test: Support arbitrary locations in inline test post-processor
2025-02-12 10:30:50 +01:00
Arthur Baars
64f0908d0d Rust: keep FlushGuard in a variable 2025-02-12 10:27:34 +01:00
Arthur Baars
5621eecc86 Rust: config: replace verbose with verbosity 2025-02-12 10:27:33 +01:00
Arthur Baars
3218faee6c Rust: make flame_log a config option 2025-02-12 10:27:32 +01:00
Arthur Baars
0442d24204 Rust: drop tracing:: qualifiers 2025-02-12 10:27:30 +01:00
Arthur Baars
c602e82ac4 Rust: use tracing-subscriber 2025-02-12 10:27:29 +01:00
Simon Friis Vindum
bf9563e78e Rust: Add data flow tests using ref patterns 2025-02-12 09:37:35 +01:00
Michael Nebel
bf1a9afdd3 Merge pull request #18694 from microsoft/csharp-update-MaD-upstream
C#: update MaD for HttpRequestMessage and UriBuilder
2025-02-12 09:32:53 +01:00
Kevin Stubbings
f5521ca1b8 Formatting 2025-02-12 00:15:27 -08:00
Kevin Stubbings
d0ed0fdeb3 Add download to Express 2025-02-12 00:10:09 -08:00
Simon Friis Vindum
b24386fb58 Merge pull request #18743 from paldepind/rust-add-generated-option-model
Rust: Add generated flow summaries for `Option`
2025-02-12 08:51:03 +01:00
Michael Nebel
57a7cb4b4f Merge pull request #18747 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-12 08:47:53 +01:00
Simon Friis Vindum
94f0710350 Merge pull request #18741 from paldepind/rust-identity-pattern-to-string
Rust: Tweak `toString` on identity pattern
2025-02-12 08:47:15 +01:00
Simon Friis Vindum
655449be81 Rust: Add auto generated flow summaries for Option 2025-02-12 08:38:47 +01:00
github-actions[bot]
b04d05bd21 Add changed framework coverage reports 2025-02-12 00:20:39 +00:00
Owen Mansel-Chan
7c83b0e213 Move comment and clarify 2025-02-11 22:09:19 +00:00
Owen Mansel-Chan
1e74b7af75 Update to 1.24.0 2025-02-11 22:09:13 +00:00
Owen Mansel-Chan
228983ff0c Update to rc3 2025-02-11 22:04:26 +00:00
Owen Mansel-Chan
8c3aa9383f Update test expectations for rc2 2025-02-11 22:04:23 +00:00
Owen Mansel-Chan
b328d15742 Update to rc2 2025-02-11 22:04:21 +00:00
Owen Mansel-Chan
cc459cd80e Update toolchain version regex
Allow release candidate versions.
2025-02-11 22:04:19 +00:00
Owen Mansel-Chan
b8cad66287 Update test results 2025-02-11 22:04:17 +00:00
Owen Mansel-Chan
d97cda7582 Add test for aliases with type params, added in go 1.24 2025-02-11 22:04:14 +00:00
Owen Mansel-Chan
e3d6480c22 Add go.mod to Types tests 2025-02-11 22:04:12 +00:00
Owen Mansel-Chan
b8297924eb Revert some test expectations changes 2025-02-11 22:04:10 +00:00
Michael B. Gale
e93c4228ea Go: Update test expectations for Go 1.24 2025-02-11 22:04:07 +00:00
Michael B. Gale
f6b460bace Go: Set maxGoVersion to 1.24 2025-02-11 22:04:06 +00:00
Michael B. Gale
7623e2bcd6 Go: Bump extractor to go1.24rc1 2025-02-11 22:04:04 +00:00
Michael B. Gale
595e68cd48 Go: Bump go_sdk to 1.24rc1 in MODULE.bazel 2025-02-11 22:04:01 +00:00
Michael B. Gale
52e15f82e4 Go: Use 1.24rc1 in CI 2025-02-11 22:03:58 +00:00
Jami
2a8cc00284 Merge pull request #18288 from jcogs33/jcogs33/csrf-unprotected-request-type
Java: add CSRF query
2025-02-11 15:32:56 -05:00
Lindsay Simpkins
c45f13c219 Merge branch 'main' into csharp-update-MaD-upstream 2025-02-11 14:04:34 -05:00
Geoffrey White
f5ab6a6cd6 Rust: Accept integration test changes. 2025-02-11 17:39:03 +00:00
Geoffrey White
4f73429251 Rust: Accept test changes after merging latest main. 2025-02-11 17:38:51 +00:00
Geoffrey White
e7fdfd06bf Merge branch 'main' into nth 2025-02-11 17:37:11 +00:00
Geoffrey White
0d9e1b410c Rust: Additional test cases exposing what works and what doesn't. 2025-02-11 17:23:54 +00:00
Asger F
c306f44589 Remove override of final predicate 2025-02-11 17:07:09 +01:00
Asger F
a42480d361 Merge pull request #18733 from asgerf/js/query-string-parse-fn
JS: Model query-string parsers that strip off a leading '#' or '?'
2025-02-11 16:54:02 +01:00
Asger F
80e79b11f7 Apply suggestions from code review
Co-authored-by: Tom Hvitved <hvitved@github.com>
2025-02-11 16:53:13 +01:00
Michael Nebel
be0b3ba505 Merge pull request #18717 from michaelnebel/csharp/updatenetmodels2
C#: Update .NET 9 generated models.
2025-02-11 16:51:50 +01:00
yoff
158430af82 Merge pull request #17765 from yoff/python/test-functional-behaviour
Python: Add tests for functional-like programming
2025-02-11 16:28:37 +01:00
Óscar San José
9bd116fcf8 Add actions to codeql analysis workflow 2025-02-11 16:02:40 +01:00
Simon Friis Vindum
608c1523d2 Rust: Add a few tests for modeled flow for Option 2025-02-11 16:02:04 +01:00
Geoffrey White
8a3a0ef24d Rust: Use Future in the other models as well. 2025-02-11 14:54:52 +00:00
Geoffrey White
f61c157c0a Rust: Repair test after merging main. 2025-02-11 14:47:42 +00:00
Geoffrey White
e594074421 Merge branch 'main' into http 2025-02-11 14:38:58 +00:00
Jonas Jensen
76440120d1 Merge pull request #18737 from jbj/NumericCastTaintedQuery-selectedLocation
Java: precise diff-informed NumericCastTainted
2025-02-11 15:33:28 +01:00
Simon Friis Vindum
5a49390615 Merge pull request #18685 from paldepind/rust-future-content
Rust: Basic support for future content and `.await`
2025-02-11 15:27:32 +01:00
Simon Friis Vindum
a09b37edc3 Rust: Expand on toString of IdentPat 2025-02-11 15:25:54 +01:00
Simon Friis Vindum
0aa08a3553 Rust: Add CFG test with identifier pattern containing sub pattern, ref, and mut 2025-02-11 15:09:10 +01:00
Arthur Baars
7e569b4fb2 Merge pull request #18713 from github/aibaars-patch-2
TreeSitter extractors: log fewer lines
2025-02-11 14:36:36 +01:00
Simon Friis Vindum
58d86fd2a9 Merge pull request #18714 from paldepind/rust-pointer
Rust: Handle writes to references and add encoding of reference content
2025-02-11 14:12:56 +01:00
Simon Friis Vindum
c7412cc839 Merge pull request #18696 from paldepind/shared-bb-dominates
Shared: Use edge dominance terminology in basic block library
2025-02-11 14:12:07 +01:00
Asger F
7e3f89842d JS: Provide more precise related locations 2025-02-11 14:12:03 +01:00
Simon Friis Vindum
4c3a2cd111 Change note creation script uses EDITOR environment variable
Changes the script for creating change notes to read the EDITOR environment variable, and use the editor specified therein. This makes the script more convenient when used from a terminal. The VSCode task is updated to the set EDITOR to `code -r` which preserves the current behavior.
2025-02-11 14:04:46 +01:00
Taus
a69e3f5236 Python: Add change note
Co-authored-by: yoff <yoff@github.com>
2025-02-11 13:02:09 +00:00
Taus
918c05c538 Python: Don't prune any MatchLiteralPatterns
Extends the mechanism introduced in
https://github.com/github/codeql/pull/18030
to behave the same for _all_ `MatchLiteralPattern`s, not just the ones
that happen to be the constant `True` or `False`.

Co-authored-by: yoff <yoff@github.com>
2025-02-11 12:58:52 +00:00
Jonas Jensen
71c078dbdd Java: precise diff-informed NumericCastTainted
It was discovered by the upcoming support for exact locations matching
in diff-informed testing that this data-flow configuration did not
correspond exactly to the query.
2025-02-11 13:49:15 +01:00
Michael Nebel
83f8a4057c C#: Address review comments. 2025-02-11 13:46:28 +01:00
Michael Nebel
fbbdea09a2 C#: Add change note. 2025-02-11 13:42:48 +01:00
Michael Nebel
5d72b29fe9 C#: Update flow summaries test expected output. 2025-02-11 13:42:46 +01:00
Michael Nebel
ff74024f50 C#: Re-generate .NET Runtime models based on .NET 9. 2025-02-11 13:42:45 +01:00
Michael Nebel
54345044ad C#: Consider properties that has any auto declaration as an auto property in terms of field store. 2025-02-11 13:42:43 +01:00
Michael Nebel
dde28a1bed C#: Only disregard generated summaries in case there is a static call target in source code. 2025-02-11 13:42:40 +01:00
Michael Nebel
7476d9ed6b Merge pull request #18734 from michaelnebel/csharp/launchjson
C#: Add the standard library to the list of references for debugging …
2025-02-11 13:16:29 +01:00
Asger F
eedfa4dbb2 Merge pull request #18341 from asgerf/py/diff-informed
Python: enable diff-informed data flow queries
2025-02-11 13:15:44 +01:00
Simon Friis Vindum
efb5b9b27c Rust: Add a comment to clearify test 2025-02-11 13:15:32 +01:00
Asger F
56ff9351f2 JS: Update test output again 2025-02-11 12:59:11 +01:00
Asger F
967c0860f9 Test: support queries that don't select a Location 2025-02-11 12:58:49 +01:00
Asger F
5b0eb0f6cc JS: Move an Alert annotation to its correct line 2025-02-11 12:58:47 +01:00
Asger F
84c02d0863 JS: Enable test post-processing 2025-02-11 12:58:46 +01:00
Asger F
fb79ab1c8c JS: Update line numbers 2025-02-11 12:58:45 +01:00
Asger F
a1c3dca5de JS: Convert OK-style to $-style expectations in one test 2025-02-11 12:58:44 +01:00
yoff
0912e3b024 ruby: use inline expectation tests 2025-02-11 12:51:25 +01:00
Simon Friis Vindum
003058c44a Shared/Ruby: Use e for edges in documentation 2025-02-11 12:48:28 +01:00
Simon Friis Vindum
d6e8acd080 C#/Ruby/Swift: Tweaks to documentation
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2025-02-11 12:44:19 +01:00
Paolo Tranquilli
4a9be40e1f Merge pull request #18710 from github/redsun82/rules_rust-update
Bazel: update `rules_rust`
2025-02-11 12:22:56 +01:00
Paolo Tranquilli
eee82f1700 Merge branch 'main' into redsun82/rules_rust-update 2025-02-11 12:07:08 +01:00
Paolo Tranquilli
71de5a2d3d Rust: remove obsolete comment 2025-02-11 12:06:39 +01:00
Michael Nebel
ad05c4598d C#: Add the standard library to the list of references for debugging the traced extractor. 2025-02-11 11:30:45 +01:00
Owen Mansel-Chan
4bb7559c18 Merge pull request #18732 from github/dependabot/go_modules/go/extractor/extractor-dependencies-a262e8450e
Bump golang.org/x/tools from 0.29.0 to 0.30.0 in /go/extractor in the extractor-dependencies group
2025-02-11 10:24:13 +00:00
Tom Hvitved
a061b1e00f Merge pull request #16900 from hvitved/java/shared-ssa
Java: Adopt shared SSA library
2025-02-11 11:04:11 +01:00
Geoffrey White
72a8ab3411 Update rust/ql/lib/codeql/rust/frameworks/http.model.yml
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-02-11 09:55:04 +00:00
Simon Friis Vindum
8eadd11d28 C#/Swift/Ruby: Fix grammar in change note
Co-authored-by: Tom Hvitved <hvitved@github.com>
2025-02-11 10:42:36 +01:00
Asger F
45242977a4 JS: Model query-string parsers that strip off ? or # 2025-02-11 10:41:23 +01:00
Asger F
b123a3c57a JS: Add test 2025-02-11 10:40:04 +01:00
Tom Hvitved
eaaf510b29 Merge pull request #18728 from hvitved/rust/path-resolution-namespaces
Rust: Model namespaces in path resolution
2025-02-11 10:29:57 +01:00
Tom Hvitved
e5e88435bc Java: Remove ExitBasicBlock from SsaInput 2025-02-11 10:07:18 +01:00
Tom Hvitved
6fbb1e2571 Apply suggestions from code review
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2025-02-11 10:06:50 +01:00
Anders Schack-Mulligen
e955f58eb1 Java: Bugfix for samevar in useReaches. 2025-02-11 10:06:49 +01:00
Anders Schack-Mulligen
ed284353ef Java: Bugfix for qualifier-of-qualifier update in hasExplicitQualifierUpdate. 2025-02-11 10:06:47 +01:00
Anders Schack-Mulligen
284e48cfbe Java: Fixup private 2025-02-11 10:06:45 +01:00
Tom Hvitved
75137a0f4c Java: Adopt shared SSA library 2025-02-11 10:06:43 +01:00
Simon Friis Vindum
532ca17e58 C#/Ruby/Swift: Add change note for deprecated basic block methods 2025-02-11 09:47:25 +01:00
Simon Friis Vindum
7c57962add Merge branch 'main' into shared-bb-dominates 2025-02-11 09:31:06 +01:00
Paolo Tranquilli
f7ca717375 Merge branch 'main' into redsun82/rules_rust-update 2025-02-11 09:10:15 +01:00
Paolo Tranquilli
c0eaff6fa1 Bazel: workaround rules_rust generation weirdness 2025-02-11 09:09:52 +01:00
Anders Schack-Mulligen
e1c810a50c Merge pull request #18729 from aschackmull/ssa/deprecate-deadcode
Ssa: Deprecate the unused getALastRead predicate.
2025-02-11 08:51:02 +01:00
dependabot[bot]
10cf522e71 Bump golang.org/x/tools
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/tools` from 0.29.0 to 0.30.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 03:51:22 +00:00
Lindsay Simpkins
05434804ba csharp update MaD UriBuilder 2025-02-10 17:54:58 -05:00
Lindsay Simpkins
76ae255e3f Merge branch 'main' into csharp-update-MaD-upstream 2025-02-10 17:07:38 -05:00
Lindsay Simpkins
513a39b9f1 csharp MaD UriBuilder remove unnecessary getters/setters 2025-02-10 17:06:40 -05:00
Remco Vermeulen
9971398766 Merge pull request #18708 from rvermeulen/rvermeulen/add-ccr-suite-to-query-list
Add CCR suite to query list
2025-02-10 13:35:54 -08:00
yoff
9f9dde6655 ruby: include rb/database-query-in-loop in the CCR suite 2025-02-10 17:17:33 +01:00
Mathew Payne
1b30847310 Merge branch 'main' into rust-rusqlite 2025-02-10 15:22:05 +00:00
Geoffrey White
9eeae712d7 Merge pull request #18712 from GeekMasher/rust-db-sources
Rust: Add Database Sources + tokio-postgres support
2025-02-10 15:18:58 +00:00
Anders Schack-Mulligen
c5d0e2f125 C#/Ruby: Replace cached with nomagic for deprecated predicates. 2025-02-10 15:05:03 +01:00
Anders Schack-Mulligen
0b5270979d SSA: Remove the need for ExitBasicBlock in SSA. 2025-02-10 14:36:18 +01:00
Anders Schack-Mulligen
34edda6b9b C#/Ruby/Rust: Deprecate dead code. 2025-02-10 14:24:38 +01:00
Tom Hvitved
c7441ab005 Rust: Model namespaces in path resolution 2025-02-10 13:55:41 +01:00
Tom Hvitved
985ee92698 Rust: Add more path resolution tests 2025-02-10 13:52:53 +01:00
GeekMasher
3e38867cb2 feat(rust): Add ReSQLite source support 2025-02-10 11:11:01 +00:00
Geoffrey White
2c85353b7e Merge branch 'main' into http 2025-02-10 09:07:34 +00:00
Paolo Tranquilli
5f171b67ec Bazel: update cargo 3rd party deps 2025-02-10 08:56:49 +01:00
Lindsay Simpkins
54e0ba2e99 Merge branch 'main' into csharp-update-MaD-upstream 2025-02-07 19:45:45 -05:00
Lindsay Simpkins
04269f9569 csharp MaD UriBuilder switch to shorthand notation 2025-02-07 19:42:31 -05:00
Lindsay Simpkins
3c9e41d9b9 csharp MaD UriBuilder update tests 2025-02-07 18:40:29 -05:00
Lindsay Simpkins
011f889588 csharp MaD UriBuilder update model 2025-02-07 18:40:26 -05:00
yoff
921104306a ruby: clean up logic and add test
use the CFG more than the AST
2025-02-07 23:43:27 +01:00
Joe Farebrother
61d5a692fb Refactor metaclass logic a bit, ensure lambdas are excluded 2025-02-07 21:46:30 +00:00
Dave Bartolomeo
0b2e307f9a Merge pull request #18705 from github/dbartol/actions-suite-selectors
Use default query selectors for Actions suites
2025-02-07 14:06:00 -05:00
Geoffrey White
f5b9691e7d Rust: Accept fixed result. 2025-02-07 18:14:53 +00:00
Jon Janego
d06ca4398a Merge pull request #18718 from github/changedocs/2.20.4
Update changelog to include new CodeQL CLI version
2025-02-07 12:14:37 -06:00
Geoffrey White
f3501819f7 Merge branch 'main' into nth 2025-02-07 18:13:18 +00:00
Felicity Chapman
56cfebd3ef Try to resolve Sphinx warnings 2025-02-07 17:06:13 +00:00
Tom Hvitved
614b3cea66 Merge pull request #18697 from hvitved/rust/telemetry
Rust: Implement database quality telemetry query
2025-02-07 17:43:23 +01:00
Geoffrey White
b5c07540d0 Merge pull request #18621 from geoffw0/sourcemodels4
Rust: Improve models for environment sources, iterators
2025-02-07 16:02:28 +00:00
Jon Janego
3f653dd3e8 Update changelog to include new CodeQL CLI version 2025-02-07 09:50:33 -06:00
yoff
9d810130e1 ruby: simplify and document 2025-02-07 16:33:28 +01:00
Dave Bartolomeo
0e4725bfe2 Merge pull request #18435 from felickz/felickz/actions-trusted-owner-data-extensions
Convert trusted actions list to data extension
2025-02-07 10:25:41 -05:00
Dave Bartolomeo
3b02f4d7bc Update change note 2025-02-07 10:09:31 -05:00
Dave Bartolomeo
42562b5187 Merge pull request #18704 from github/dbartol/actions-suites
Actions: Move experimental queries to `experimental` directory
2025-02-07 10:03:31 -05:00
Paolo Tranquilli
15a51c33bc Rust: remove obsolete comment 2025-02-07 15:30:24 +01:00
Paolo Tranquilli
0b7cace51a Merge branch 'main' into redsun82/rules_rust-update 2025-02-07 14:42:42 +01:00
Paolo Tranquilli
cc939e64fd Python: fix bazel rule 2025-02-07 14:42:26 +01:00
Edward Minnix III
c96502478e Merge pull request #18664 from egregius313/egregius313/csharp/blazor/url-param-sources
C#: Blazor: Add route parameters as remote flow sources
2025-02-07 08:34:29 -05:00
yoff
b3eaac0ab7 ruby: remove superflous logic 2025-02-07 14:03:57 +01:00
Tom Hvitved
11bf4c831d Update rust/ql/src/queries/telemetry/DatabaseQualityDiagnostics.ql
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-02-07 13:55:11 +01:00
Simon Friis Vindum
11055760a4 Rust: Handle writes to references and add encoding of reference content 2025-02-07 13:53:17 +01:00
yoff
58fb592822 ruby: add tests 2025-02-07 13:50:27 +01:00
Simon Friis Vindum
11685a820f Rust: Add flow tests involving references 2025-02-07 13:47:58 +01:00
Paolo Tranquilli
a82ba70594 Merge branch 'main' into redsun82/rules_rust-update 2025-02-07 13:40:07 +01:00
Ian Lynagh
c4d682f686 Merge pull request #18638 from igfoo/igfoo/ferstl
Java: Update test output
2025-02-07 12:03:03 +00:00
Arthur Baars
a8fbb37569 TreeSitter extractors: log fewer lines
Printing a line for every extracted file is too verbose and for large projects makes it impossible to view the log in the Actions UI.
2025-02-07 12:28:17 +01:00
Mathew Payne
be883ad4cc fix(rust): Update naming of the DB source 2025-02-07 11:10:43 +00:00
Mathew Payne
6e5899b4ff Merge branch 'main' into rust-rusqlite 2025-02-07 10:51:02 +00:00
Mathew Payne
5c656412d1 Update rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-07 10:33:29 +00:00
GeekMasher
5943cc16e4 feat(rust): Add Database Sources + tokio-postgres support 2025-02-07 10:26:40 +00:00
Simon Friis Vindum
4581e772d6 Merge pull request #18709 from paldepind/rust-model-generation-test
Rust: Add additional tests for model generation
2025-02-07 11:14:41 +01:00
Tom Hvitved
d8c9427d3e Merge pull request #18700 from hvitved/rust/shorthand-struct
Rust: Shorthand record construction in data flow
2025-02-07 10:59:52 +01:00
Paolo Tranquilli
f6301b8ea8 Rust: remove unneeded and now broken bazel workaround 2025-02-07 10:59:11 +01:00
Paolo Tranquilli
75b5493c9b Bazel: update rules_rust 2025-02-07 10:43:10 +01:00
Simon Friis Vindum
5bef9c98ff Rust: Accept changes 2025-02-07 10:20:15 +01:00
Simon Friis Vindum
c9b5dab097 Rust: Add additional tests for model generation 2025-02-07 09:05:27 +01:00
Tom Hvitved
100de73066 Merge pull request #18689 from hvitved/rust/path-resolution-type-param
Rust: Extend path resolution to cover type parameters
2025-02-07 08:55:27 +01:00
Simon Friis Vindum
9bcfd010d4 Merge pull request #18676 from paldepind/rust-model-clone
Rust: Model `clone`
2025-02-07 08:37:44 +01:00
yoff
37ddaa36ad Merge pull request #18702 from github/tausbn/python-allow-comments-in-subscripts
Python: Allow comments in subscripts
2025-02-06 23:31:29 +01:00
yoff
381cc20cdd Merge pull request #18703 from github/tausbn/python-robustly-handle-loop-constructs
Python: Handle loop constructs outside of loops
2025-02-06 23:31:04 +01:00
Remco Vermeulen
3b87fb18a6 Add CCR suite to query list 2025-02-06 14:10:27 -08:00
Ed Minnix
29d03db06b Remove unneeded disjunction 2025-02-06 15:10:06 -05:00
Chad Bentz
fd404bcbcd Update actions/ql/lib/change-notes/2025-01-07-trusted-owner-ext.md
Co-authored-by: Dave Bartolomeo <dbartol@github.com>
2025-02-06 14:28:07 -05:00
Ian Lynagh
05180376f2 Java: Update test output 2025-02-06 18:32:46 +00:00
Tom Hvitved
707bf16d90 Rust: Shorthand record construction in data flow 2025-02-06 19:19:18 +01:00
Tom Hvitved
9bc3b0e96e Rust: Update a test to use shorthand record syntax 2025-02-06 19:19:17 +01:00
Tom Hvitved
aca70cd1ea Merge pull request #18675 from hvitved/rust/struct-tuple-field
Rust: Implement data flow through tuple structs
2025-02-06 19:17:53 +01:00
yoff
d7ffc3fc77 Ruby: remove test code filtering 2025-02-06 18:10:06 +01:00
yoff
74155a0214 ruby: start adding comments
I apuse here, because the code may be simplified
2025-02-06 18:09:38 +01:00
Dave Bartolomeo
ca7bcc9714 Add change note 2025-02-06 11:50:59 -05:00
Dave Bartolomeo
cb7aeea516 Use standard query selectors for actions-code-scanning and actions-security-extended 2025-02-06 11:34:43 -05:00
Dave Bartolomeo
74619d49b3 Update precision and severity for unpinned-tag
This ensures that it will be in `security-extended`, but not the default suite.
2025-02-06 11:33:17 -05:00
Dave Bartolomeo
81ff4dd81c Update severity for excessive-secrets-exposure
This ensures that it will remain in the default suite.
2025-02-06 11:32:32 -05:00
Dave Bartolomeo
d7259c17db Add security tag for missing-actions-permissions
This ensures that it will remain in the default suite.
2025-02-06 11:31:36 -05:00
Dave Bartolomeo
909de5280c Update severity and precision of a few injection queries
These will wind up in `security-extended`, when previously they were not in any of the standard suites.
2025-02-06 11:30:43 -05:00
Dave Bartolomeo
e2ab65ea3e Update qlref paths 2025-02-06 11:20:19 -05:00
yoff
51a2d8c72f ruby: rename query 2025-02-06 17:07:12 +01:00
yoff
d9d0d3c18b ruby: add code block 2025-02-06 16:59:23 +01:00
yoff
8aa195d838 ruby: remove comment (we can create issues) 2025-02-06 16:59:08 +01:00
Dave Bartolomeo
604dbfd0d0 Actions: Move experimental to experimental directory
This is consistent with how other languages manage experimental queries. I've left the `experimental` tags in place.
2025-02-06 10:54:25 -05:00
Simon Friis Vindum
b2ba5f4f38 Rust: Make imports private 2025-02-06 16:07:25 +01:00
yoff
7af8fa75e6 Apply suggestions from code review
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2025-02-06 15:45:28 +01:00
Geoffrey White
78e3c89c68 Rust: Accept changes to integration tests. 2025-02-06 14:33:37 +00:00
Taus
131ec8d22f Python: Handle loop constructs outside of loops
Observed on some test files in Nuitka/Nuitka, having `break` and
`continue` outside of loops in Python is (to Python) a syntax error, but
our parser happily accepted this broken syntax.

This then caused issues further downstream in the control-flow
construction, as it broke some invariants.

To fix this we now skip the code that would previously fail when the
invariants are broken.

Co-authored-by: yoff <yoff@github.com>
2025-02-06 14:30:16 +00:00
Geoffrey White
bce4735062 Rust: Additional test case suggested by copilot. 2025-02-06 14:29:26 +00:00
Taus
3d25cd3bb5 Python: Add change note 2025-02-06 14:08:20 +00:00
Taus
7124e80f28 Python: Regenerate parser files 2025-02-06 14:05:40 +00:00
Taus
c5be2a3e2d Python: Allow comments in subscripts
Once again, the interaction between anchors and extras (specifically
comments) was causing trouble.

The root of the problem was the fact that in `a[b]`, we put `b` in the
`index` field of the subscript node, whereas in `a[b,c]`, we
additionally synthesize a `Tuple` node for `b,c` (which matches the
Python AST).

To fix this, we refactored the grammar slightly so as to make that tuple
explicit, such that a subscript node either contains a single expression
or the newly added tuple node. This greatly simplifies the logic.
2025-02-06 14:04:57 +00:00
yoff
40851aeaef Merge pull request #18687 from github/tausbn/python-print-file-path-on-context-error
Python: Print file path when logging context errors
2025-02-06 15:01:06 +01:00
Geoffrey White
a8a051234e Rust: Model parse. 2025-02-06 12:51:41 +00:00
Geoffrey White
d0f5aad085 Rust: Model to_string. 2025-02-06 12:51:40 +00:00
Geoffrey White
1ff7a521d5 Rust: Add a flow test for some iterator methods. 2025-02-06 12:51:34 +00:00
Anders Schack-Mulligen
57735388e0 Merge pull request #18655 from aschackmull/java/typeflow-joinorder
TypeFlow: Improve join-order.
2025-02-06 13:12:52 +01:00
Asger F
7f4facc864 Merge pull request #18661 from asgerf/js/hoist-in-block
JS: Hoist function declarations to the top of a block statement
2025-02-06 12:38:51 +01:00
Chris Smowton
269f63d6b1 Format 2025-02-06 11:36:45 +00:00
Chris Smowton
b8a720510c Use root dir license rather than removed Go license 2025-02-06 11:17:23 +00:00
Asger F
d3b9d1d89d JS: Partial SSRF does not select the sink location 2025-02-06 11:30:32 +01:00
Geoffrey White
c597818c4b Rust: Add a flow test for to_string() and parse(). 2025-02-06 10:30:27 +00:00
Asger F
7d6abb4e0a JS: Disable diff-informedness for full SSRF
Partial SSRF uses its result in a way that prevents diff-informedness
2025-02-06 11:30:18 +01:00
Geoffrey White
6966c96e7a Rust: Add a test case for parse on a command line arg. 2025-02-06 10:29:53 +00:00
Chris Smowton
ffc6b7abb6 Update license; remove redundant Go qlpack license. 2025-02-06 10:23:37 +00:00
Tom Hvitved
89502d63e5 Rust: Implement database quality telemetry query 2025-02-06 10:46:48 +01:00
Simon Friis Vindum
820d2cbeb8 Shared: Use edge dominance in basic block library 2025-02-06 10:38:32 +01:00
Asger F
d3ee658399 Python: resolve remaining TODOs 2025-02-06 10:27:56 +01:00
Asger F
975ce064fc Python: implement for polynomial redos 2025-02-06 10:27:45 +01:00
Asger F
15c2ccb880 Python: ignore experimental for now 2025-02-06 10:27:43 +01:00
Asger F
9dfd1cc608 Python: Fixup broken patch 2025-02-06 10:27:21 +01:00
Asger F
e4a1847dad Python: mass enable diff-informed data flow 2025-02-06 10:27:19 +01:00
Asger F
6ae06aed9e Update javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-06 10:03:28 +01:00
Asger F
83ccdb76ed Merge pull request #18686 from asgerf/ac/bash-quotation-oom
Actions: avoid N^2 parsing in common cases
2025-02-06 09:59:23 +01:00
Asger F
6207e39b5f JS: Change note 2025-02-06 09:58:24 +01:00
Jami Cogswell
d21c8d789b Java: restrict sink to first arg of two-arg constructor call 2025-02-05 21:19:59 -05:00
Jami Cogswell
bd47dcc87d Java: check first arg for taint 2025-02-05 16:56:16 -05:00
Lindsay Simpkins
6f2832401c csharp MaD add change note 2025-02-05 16:37:53 -05:00
Lindsay Simpkins
e0034e566f csharp update MaD for HttpRequestMessage and UriBuilder 2025-02-05 15:49:49 -05:00
Jami Cogswell
e8724ab220 Java: sanitize constructor call instead and update test cases 2025-02-05 15:46:10 -05:00
Remco Vermeulen
7619f1dac9 Merge pull request #18679 from rvermeulen/rvermeulen/ccr-suites
Add CCR suites
2025-02-05 09:35:48 -08:00
Jami Cogswell
4a4585a526 Java: move comment 2025-02-05 11:36:58 -05:00
Ed Minnix
0a817eb1da Fix test expectations 2025-02-05 11:25:51 -05:00
Ed Minnix
274a2d8dac Remove remoteFlowSource integration test 2025-02-05 11:24:29 -05:00
Ed Minnix
a783ac1abf Add QL tests for remoteFlowSource 2025-02-05 11:22:23 -05:00
Paolo Tranquilli
d65a704209 Merge pull request #18635 from hvitved/codegen/self-type-alias
Codegen: Improve return type of self-typed properties
2025-02-05 17:20:25 +01:00
Jami Cogswell
dce89c5419 Java: update qhelp to align with other csrf queries 2025-02-05 10:57:47 -05:00
Rasmus Lerchedahl Petersen
5feb401607 ruby: Add query for hoisting Rails ActiveRecord calls
This does not take assicoations into account.
It uses ActiveRecordModelFinderCall to identify relevant calls.
This class has therefor been made public.
2025-02-05 16:47:48 +01:00
Paolo Tranquilli
e4523ef581 Merge pull request #18684 from github/redsun82/swift-keypath-expr
Swift: fix `KeyPathExpr` assertion
2025-02-05 16:40:25 +01:00
Jami Cogswell
c6a71cd3fd Java: minor qhelp updates 2025-02-05 10:20:57 -05:00
Nora Dimitrijević
ab521ff180 Merge pull request #18688 from d10c/d10c/drop-bigint-avg
Update docs to remove BigInt `avg`
2025-02-05 16:07:57 +01:00
Tom Hvitved
493953e724 Rust: Extend path resolution to cover type parameters 2025-02-05 15:30:07 +01:00
Tom Hvitved
9319b1848d Merge pull request #18682 from hvitved/dataflow/aliases
Data flow: Add aliases for removing `DataFlow` prefixes
2025-02-05 15:04:13 +01:00
Nora Dimitrijević
e455a6c5d7 Update docs to remove BigInt avg 2025-02-05 14:27:21 +01:00
Taus
60d97e0e16 Python: Print file path when logging context errors
This makes it _much_ easier to find the offending bit of syntax.
2025-02-05 13:13:39 +00:00
Asger F
4ec84e9327 Actions: update expected output 2025-02-05 13:36:38 +01:00
Asger F
1904b026b2 Actions: Avoid blowup in quotation parser
The parser has an inherent N^2 blowup and will need a rewrite eventually. For now I'm just trying to make it not blow up as often.
2025-02-05 13:35:52 +01:00
Asger F
e6b5040909 Actions: add test with many quoted strings 2025-02-05 13:35:50 +01:00
Tom Hvitved
95ab48dfbf Rust: Run codegen 2025-02-05 13:27:08 +01:00
Tom Hvitved
e4d9e29368 Rust: Implement data flow through tuple structs 2025-02-05 13:27:07 +01:00
Tom Hvitved
22f6f4e46b Rust: Add data flow test for tuple structs 2025-02-05 13:27:04 +01:00
Simon Friis Vindum
6e99087b40 Rust: Basic support for futures and await 2025-02-05 13:22:57 +01:00
Geoffrey White
f9f5d2c3c2 Rust: Accept changes to consistency test .expected file as well. 2025-02-05 11:45:38 +00:00
Simon Friis Vindum
a40cfeb6c7 Rust: Add test for model returning a future 2025-02-05 12:35:56 +01:00
Owen Mansel-Chan
d7117ef3e5 Merge pull request #18681 from github/dependabot/go_modules/go/extractor/extractor-dependencies-bab70e25a9
Bump golang.org/x/mod from 0.22.0 to 0.23.0 in /go/extractor in the extractor-dependencies group
2025-02-05 10:50:22 +00:00
Geoffrey White
1608524c26 Rust: Accept changes to the dataflow/sources test as well. 2025-02-05 10:40:26 +00:00
Geoffrey White
0590c6f171 Rust: Fix .expected after merge. 2025-02-05 10:36:11 +00:00
Paolo Tranquilli
749fcb07be Merge pull request #18683 from github/redsun82/swift-docs
Swift: update supported version in docs
2025-02-05 11:05:33 +01:00
Tom Hvitved
0f52fe92cf Data flow: Add aliases for removing DataFlow prefixes 2025-02-05 10:57:16 +01:00
Paolo Tranquilli
1a654557a9 Swift: fix KeyPathExpr assertion 2025-02-05 10:52:34 +01:00
Paolo Tranquilli
48427b6700 Swift: update supported version in docs 2025-02-05 10:39:39 +01:00
Geoffrey White
70d969f3a0 Merge branch 'main' into http 2025-02-05 09:36:43 +00:00
Anders Schack-Mulligen
bcec7ee234 Merge pull request #18633 from aschackmull/dataflow/refactor-flowstate
Dataflow: Refactor FlowState to be paired with Node
2025-02-05 09:43:25 +01:00
Simon Friis Vindum
86d7feabc6 Rust: Add value flow model for clone methods 2025-02-05 09:18:58 +01:00
Simon Friis Vindum
670ecb3298 Merge pull request #18673 from paldepind/rust-higher-order-function-model-generation
Rust: Higher order function model generation
2025-02-05 09:15:46 +01:00
dependabot[bot]
aa14f4ee58 Bump golang.org/x/mod
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod).


Updates `golang.org/x/mod` from 0.22.0 to 0.23.0
- [Commits](https://github.com/golang/mod/compare/v0.22.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 03:28:52 +00:00
Ed Minnix
12ebfa65dc Change join order of Property/Name matching 2025-02-04 21:50:14 -05:00
Ed Minnix
07aad61c9e Typo 2025-02-04 21:45:34 -05:00
Remco Vermeulen
9894e9ef9f Add CCR suites 2025-02-05 01:58:34 +00:00
Jami Cogswell
60cc16cc0e Java: change note 2025-02-04 17:51:34 -05:00
Jami Cogswell
59d454771d Java: add FileConstructorSanitizer and tests 2025-02-04 17:51:23 -05:00
Jami Cogswell
0367846333 Java: remove token section from qhelp overview
discussing tokens is not directly relevant to this query's recommendation and examples
2025-02-04 13:36:15 -05:00
Jami Cogswell
f438282674 Java: rewrite qhelp overview section; aligns with overview section used by Python and Ruby 2025-02-04 13:21:43 -05:00
Paolo Tranquilli
04476282a7 Merge pull request #18677 from paldepind/rust-model-struct-match
Rust: Accept test changes
2025-02-04 19:09:27 +01:00
Jami Cogswell
283c3b1e44 Java: minor qhelp updates 2025-02-04 12:47:19 -05:00
Simon Friis Vindum
d198a4a3cd Rust: Accept test changes 2025-02-04 18:26:05 +01:00
Simon Friis Vindum
04d3f989ec Rust: Add tests for flow through clone 2025-02-04 17:09:26 +01:00
Joe Farebrother
287cf0121d Fix docs 2025-02-04 15:28:13 +00:00
Geoffrey White
9a6ef3dae7 Rust: Accept more test changes. 2025-02-04 15:14:05 +00:00
Joe Farebrother
3802a73f47 Update docs 2025-02-04 14:46:02 +00:00
Joe Farebrother
e8adef18a3 Update to inline expectations + fixes 2025-02-04 14:45:59 +00:00
Joe Farebrother
aa2c84ea36 Move tests to separate folder 2025-02-04 14:45:56 +00:00
Joe Farebrother
0bf8d4ec4b Exclude 'methods' used in initialisation, and allow self for metaclass methods 2025-02-04 14:45:52 +00:00
Joe Farebrother
fa76bf3c9f Fix formatting and rewrite redundant exists 2025-02-04 14:45:48 +00:00
Joe Farebrother
526e235fc1 Update NonSelf and NonCls queries 2025-02-04 14:45:44 +00:00
Geoffrey White
da91f291ac Rust: Accept changes to integration tests. 2025-02-04 14:40:49 +00:00
Geoffrey White
0cdef97276 Merge branch 'main' into sourcemodels4 2025-02-04 14:30:37 +00:00
Tom Hvitved
f1140530c0 Merge pull request #18656 from hvitved/rust/record-destruct-shorthand
Rust: Shorthand record pattern destructuring in data flow
2025-02-04 15:25:12 +01:00
Simon Friis Vindum
ece5557f3d Apply suggestions from code review
Co-authored-by: Tom Hvitved <hvitved@github.com>
2025-02-04 15:10:32 +01:00
Arthur Baars
2a32e8865d Merge pull request #18668 from github/post-release-prep/codeql-cli-2.20.4
Post-release preparation for codeql-cli-2.20.4
2025-02-04 14:22:53 +01:00
Simon Friis Vindum
b0a3cdc68c Rust: Generate flow summaries for higher-order functions 2025-02-04 14:03:19 +01:00
Asger F
5613661a48 JS: Update another TRAP file 2025-02-04 14:02:51 +01:00
Asger F
f0afd6aa5f Merge branch 'main' into js/hoist-in-block 2025-02-04 14:01:57 +01:00
Simon Friis Vindum
c9e702d107 Rest: Add tests for higher-order functions 2025-02-04 13:44:29 +01:00
Jeroen Ketema
89bbef935d Merge pull request #18672 from jketema/codeblock-name
C++: Update expected test results after extractor changes
2025-02-04 13:39:54 +01:00
Geoffrey White
d72361588c Update rust/ql/test/library-tests/dataflow/sources/test.rs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-04 12:25:02 +00:00
Jeroen Ketema
1591a56aab C++: Update expected test results after extractor changes 2025-02-04 13:19:49 +01:00
Simon Friis Vindum
8d01bbc1e3 Merge pull request #18628 from paldepind/rust-flow-summary-generation
Rust: Initial model generation setup
2025-02-04 12:37:09 +01:00
Asger F
80824cfdc7 JS: Benign test output changes 2025-02-04 12:12:41 +01:00
Geoffrey White
23e9270a20 Rust: Add test cases for flow through references. 2025-02-04 10:28:08 +00:00
Geoffrey White
810dd55d47 Rust: Add test cases for flow through async / await. 2025-02-04 10:28:06 +00:00
Geoffrey White
ff53d422cb Rust: Model some sources in hyper. 2025-02-04 10:28:05 +00:00
Geoffrey White
d64d955253 Rust: Add test cases for requests through hyper + http. 2025-02-04 10:27:58 +00:00
Asger F
294fd0a7a7 Merge pull request #18653 from asgerf/js/source-on-same-line
Test: Don't expect 'Source' tag when source and alert are on the same same
2025-02-04 11:01:46 +01:00
fabienpe
af073b78d9 Merge branch 'main' into main 2025-02-04 09:50:35 +00:00
Asger F
3d3f07ad72 Merge pull request #18658 from asgerf/js/jsx-parser-first-attempt
JS: Use JSX syntax in first attempt when extension is .jsx
2025-02-04 10:49:26 +01:00
fabienpe
9a37682851 Moved comment to previous line if resulting in long line 2025-02-04 09:48:34 +00:00
Asger F
d22268e119 JS: Update TRAP again
The extra successor edge was due to visiting hoisted function declaration IDs multiple times,
which has now been fixed.
2025-02-04 10:47:08 +01:00
Anders Schack-Mulligen
73d7250688 Dataflow: Fix join-order issue. 2025-02-04 10:47:02 +01:00
Anders Schack-Mulligen
da34c0b3ac Dataflow: Fixup some qldoc. 2025-02-04 10:47:01 +01:00
Anders Schack-Mulligen
db1ed67e52 JS: Simplify config in PrototypePollutingFunction.ql. 2025-02-04 10:47:01 +01:00
Anders Schack-Mulligen
e55130ebce Dataflow: Remove unused predicate. 2025-02-04 10:47:00 +01:00
Anders Schack-Mulligen
2597ef651b Dataflow: Avoid duplication in fwdFlow1 disjunction. 2025-02-04 10:47:00 +01:00
Anders Schack-Mulligen
b2d42ee49a Dataflow: Rename two predicates to remove need for alias defs. 2025-02-04 10:46:59 +01:00
Anders Schack-Mulligen
e0cb70a492 Dataflow: Minor cleanup. 2025-02-04 10:46:59 +01:00
Anders Schack-Mulligen
b4197b08aa Dataflow: Use (node,state) pair as node type in stage 2+. 2025-02-04 10:46:58 +01:00
Anders Schack-Mulligen
1166aa6a43 Dataflow: Prepare a (node,state) pair type. 2025-02-04 10:46:58 +01:00
Anders Schack-Mulligen
1799bf9d14 Dataflow: Parameterise stages 2-6 over the node type. 2025-02-04 10:46:58 +01:00
Anders Schack-Mulligen
d5759a7f33 Dataflow: Move definition of toNormalSinkNode. 2025-02-04 10:46:57 +01:00
Anders Schack-Mulligen
3cbf8e517f Dataflow: Remove superfluous constraint. 2025-02-04 10:46:57 +01:00
Anders Schack-Mulligen
04db61a0fe Dataflow: Move Stage1 to its own file. Stick flow exploration in there as well. 2025-02-04 10:46:56 +01:00
Anders Schack-Mulligen
02a81a0897 Dataflow: Rename signature to preempt name clash. 2025-02-04 10:46:56 +01:00
Asger F
5e109ff457 JS: Update test output 2025-02-04 10:45:37 +01:00
Simon Friis Vindum
cf4f6575d1 Merge branch 'main' into rust-flow-summary-generation 2025-02-04 10:42:11 +01:00
Asger F
1e5885ea1e JS: Remove hoisting code from functions
'buildFunctionBody' no longer needs to handle hoisting, because hoisting now happens when visiting the block statement that is the body of the function.

Note that curly-brace functions contain a block statement as their body, not a list of statements.
2025-02-04 10:41:47 +01:00
github-actions[bot]
f1b05a79a4 Post-release preparation for codeql-cli-2.20.4 2025-02-04 09:25:09 +00:00
Simon Friis Vindum
07413315a1 Rust: Address PR comments 2025-02-04 10:19:04 +01:00
Tom Hvitved
90944d5252 Merge pull request #18609 from hvitved/rust/dataflow-path-resolution
Rust: Use `PathResolution` module in data flow
2025-02-04 10:11:54 +01:00
Anders Schack-Mulligen
ce976dcc79 TypeFlow: Improve join-order. 2025-02-04 10:11:46 +01:00
Simon Friis Vindum
fc15c0d3b2 Merge branch 'main' into rust-flow-summary-generation 2025-02-04 10:10:33 +01:00
Asger F
7bf69d92ca Merge pull request #2 from hvitved/js/source-on-same-line
Test: Remove location parsing
2025-02-04 10:09:35 +01:00
Tom Hvitved
acd31dd701 Merge pull request #18657 from hvitved/rust/dataflow-node-api
Rust: Hide internal implementation details from `DataFlow::Node`
2025-02-04 09:41:44 +01:00
Tom Hvitved
5a24440e59 Update rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-02-04 09:38:16 +01:00
Asger F
09270f4e20 JS: Change note 2025-02-04 09:36:46 +01:00
Tom Hvitved
fc04ad1ef0 Test: Remove location parsing 2025-02-04 09:34:33 +01:00
Michael Nebel
d3b714340e Merge pull request #18666 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-02-04 09:06:32 +01:00
Ed Minnix
eb25c768bb Change note 2025-02-03 22:35:57 -05:00
Ed Minnix
5236a40d0a Remove unnecessary class 2025-02-03 22:34:08 -05:00
github-actions[bot]
42b5222432 Add changed framework coverage reports 2025-02-04 00:20:33 +00:00
Jami Cogswell
516df3b4be Java: qhelp wording updates 2025-02-03 14:52:57 -05:00
Arthur Baars
c524a98eb9 Merge pull request #18659 from github/release-prep/2.20.4
Release preparation for version 2.20.4
2025-02-03 19:35:41 +01:00
Arthur Baars
63da935979 Apply suggestions from code review 2025-02-03 18:44:03 +01:00
Arthur Baars
dd34690c17 Merge branch 'codeql-cli-2.20.4' into release-prep/2.20.4 2025-02-03 18:37:16 +01:00
Arthur Baars
49a306719e Merge pull request #18663 from github/main
Merge main into codeql-cli-2.20.4
2025-02-03 18:11:55 +01:00
github-actions[bot]
573e53e454 Release preparation for version 2.20.4 2025-02-03 15:19:35 +00:00
Jeroen Ketema
5e927634bc Merge pull request #18660 from MathiasVP/fix-union-regression
C++: Fix regression from #18629
2025-02-03 16:15:11 +01:00
Jonas Jensen
0584aee72a Merge pull request #18636 from jbj/diff-informed-java-location-fixups
Java: make diff-informed queries exact
2025-02-03 15:22:43 +01:00
Asger F
427e329363 JS: Bump extractor version string 2025-02-03 15:21:41 +01:00
Asger F
7eebe468ee JS: Update TRAP output
This seems to have reordered the TRAP lines but without semantic change.
2025-02-03 15:21:09 +01:00
Asger F
be082578d4 JS: Hoist function decls in a block to the top of the block 2025-02-03 15:21:08 +01:00
Asger F
29879297ee JS: Add test showing missed call to later-defined function in block 2025-02-03 14:56:11 +01:00
Tom Hvitved
45fc1daa74 Rust: Hide internal implementation details from DataFlow::Node 2025-02-03 14:12:56 +01:00
Mathias Vorreiter Pedersen
0e6936d418 C++: Strip the type when computing the base type of a chain of qualifiers. 2025-02-03 12:42:11 +00:00
Michael Nebel
e39ad940a7 Merge pull request #18587 from michaelnebel/csharp/updatestubs
C#: Update stubs
2025-02-03 13:19:52 +01:00
Michael Nebel
7e18b3e016 Merge pull request #18533 from michaelnebel/csharp/partialmembers
C# 13: Partial properties and indexers.
2025-02-03 13:18:43 +01:00
Asger F
2d36a5d478 JS: Use JSX syntax in first attempt when extension is .jsx 2025-02-03 13:17:15 +01:00
Tom Hvitved
f1050c4988 Rust: Shorthand record pattern destructuring in data flow 2025-02-03 13:00:52 +01:00
Tom Hvitved
4923156d0d Address review comments 2025-02-03 12:52:31 +01:00
Owen Mansel-Chan
a3de138ec2 Merge pull request #18511 from owen-mc/go/docs/data-flow
Update documentation on data flow in Go (and some small fixes for java)
2025-02-03 11:11:04 +00:00
Calum Grant
ed3ad1a226 Merge pull request #18613 from github/calumgrant/bmn/wrong-type-format-arg-linkage
C++: Remove FPs in cpp/wrong-type-format-argument caused by no linker awareness
2025-02-03 10:39:32 +00:00
Asger F
fc1d36f867 Rust: update a Rust test case 2025-02-03 11:31:04 +01:00
Asger F
78a7f2670a JS: Update a JS test case 2025-02-03 11:31:03 +01:00
Asger F
28472ae12f Test: Don't expect 'Source' tag when source and alert are on same line
Previously the Source tag was required if the source and alert did not
have the exact same location. This relaxes the restriction to being on
the same line.

Note that in order to be "on the same line" both start and end lines
have to match.

It's still possible for a given line to expect both Alert and Source
tags, in case the source pairs up with another alert on a different
line.
2025-02-03 11:31:02 +01:00
Jeroen Ketema
25d8f0e161 Merge branch 'main' into calumgrant/bmn/wrong-type-format-arg-linkage 2025-02-03 11:23:27 +01:00
Calum Grant
6e3a169544 C++: Add change note 2025-02-03 09:48:06 +00:00
Tom Hvitved
1066b880aa Merge pull request #18644 from hvitved/rust/fix-bad-join
Rust: Fix a bad join
2025-02-03 10:16:09 +01:00
Tom Hvitved
3d3b785400 Rust: Remove redundant infix casts 2025-02-03 09:12:09 +01:00
Tom Hvitved
e78b79fa45 Update misc/codegen/lib/ql.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-03 09:11:13 +01:00
Tom Hvitved
55ac9ae021 Swift: Run codegen 2025-02-03 09:11:11 +01:00
Tom Hvitved
ebe2084507 Rust: Run codegen 2025-02-03 09:11:10 +01:00
Tom Hvitved
ec33457ad4 Codegen: Improve return type of self-typed properties 2025-02-03 09:11:09 +01:00
Simon Friis Vindum
0a9b864738 Rust: Fix model generation test 2025-02-03 09:06:07 +01:00
Ed Minnix
414c0a646a Fix test results 2025-01-31 12:52:48 -05:00
Ed Minnix
aaefa0f82a Add remote flow source test 2025-01-31 11:32:13 -05:00
fabienpe
a9f107ce06 Added missing "GOOD" and "BAD" to some examples 2025-01-31 15:47:25 +00:00
Tom Hvitved
cd1ff6a176 Rust: Fix a bad join
Before
```
[2025-01-31 14:40:10] Evaluated non-recursive predicate SsaImpl::capturedCallRead/4#1f9b0af4@6f60dcog in 10553ms (size: 372366).
Evaluated relational algebra for predicate SsaImpl::capturedCallRead/4#1f9b0af4@6f60dcog with tuple counts:
        1992868487   ~4%    {6} r1 = JOIN `_BasicBlock::Make<Locations::Location,BasicBlocks::BasicBlocksImpl::BasicBlockInputSig>::Cached::get__#shared` WITH `SsaImpl::variableWriteInOuterScope/4#aca2ef34` ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2, Rhs.1, Rhs.2, Rhs.3
                            {6}    | REWRITE WITH TEST InOut.3 < InOut.2
         998449075   ~0%    {5}    | SCAN OUTPUT In.4, In.5, In.0, In.1, In.2

          12205909   ~1%    {4} r2 = JOIN `_BasicBlock::Make<Locations::Location,BasicBlocks::BasicBlocksImpl::BasicBlockInputSig>::Cached::get__#shared` WITH `boundedFastTC:BasicBlocks::BasicBlock.getAPredecessor/0#dispred#268ed41b:_BasicBlock::Make<Locations::Location,BasicBlocks::BasicBlocksImpl::BasicBlockInputSig>::Cached::get__#higher_order_body` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0, Lhs.2
          34440992   ~9%    {5}    | JOIN WITH `project#SsaImpl::variableWriteInOuterScope/4#aca2ef34` ON FIRST 1 OUTPUT Rhs.1, Rhs.2, Lhs.1, Lhs.2, Lhs.3

        1032890067   ~0%    {5} r3 = r1 UNION r2
            680217  ~74%    {4}    | JOIN WITH `SsaImpl::hasCapturedRead/2#847e9f91` ON FIRST 2 OUTPUT Lhs.2, Lhs.3, Lhs.4, Lhs.0
                            return r3
```

After
```
[2025-01-31 14:43:05] Evaluated non-recursive predicate SsaImpl::capturedCallRead/4#1f9b0af4@15fdf34h in 74ms (size: 373835).
Evaluated relational algebra for predicate SsaImpl::capturedCallRead/4#1f9b0af4@15fdf34h with tuple counts:
        1106129   ~0%    {3} r1 = SCAN `project#SsaImpl::variableWriteInOuterScope/4#aca2ef34` OUTPUT In.1, In.2, In.0
          25209  ~20%    {2}    | JOIN WITH `SsaImpl::hasCapturedRead/2#847e9f91` ON FIRST 2 OUTPUT Lhs.2, Lhs.0
         339364   ~6%    {2}    | JOIN WITH `boundedFastTC:BasicBlocks::BasicBlock.getAPredecessor/0#dispred#268ed41b_10#higher_order_body:_SsaImpl::hasCapturedRead/2#847e9f91_project#SsaImpl::variableWriteInOuterScope/4#aca2ef34#higher_order_body` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        2095088   ~0%    {4}    | JOIN WITH `BasicBlock::Make<Locations::Location,BasicBlocks::BasicBlocksImpl::BasicBlockInputSig>::Cached::getNode/2#4226f9fe` ON FIRST 1 OUTPUT Lhs.0, Rhs.1, Rhs.2, Lhs.1

        1121531   ~0%    {4} r2 = SCAN `SsaImpl::variableWriteInOuterScope/4#aca2ef34` OUTPUT In.2, In.3, In.0, In.1
          25820  ~22%    {3}    | JOIN WITH `SsaImpl::hasCapturedRead/2#847e9f91` ON FIRST 2 OUTPUT Lhs.2, Lhs.0, Lhs.3
         505208   ~1%    {5}    | JOIN WITH `BasicBlock::Make<Locations::Location,BasicBlocks::BasicBlocksImpl::BasicBlockInputSig>::Cached::getNode/2#4226f9fe` ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2, Rhs.1, Rhs.2
                         {5}    | REWRITE WITH TEST InOut.2 < InOut.3
         344294   ~6%    {4}    | SCAN OUTPUT In.1, In.3, In.4, In.0

        2439382   ~0%    {4} r3 = r1 UNION r2
        2434485   ~7%    {4}    | JOIN WITH `BasicBlock::Make<Locations::Location,BasicBlocks::BasicBlocksImpl::BasicBlockInputSig>::Cached::getNode/2#4226f9fe` ON FIRST 3 OUTPUT Lhs.2, Lhs.3, Lhs.0, Lhs.1
        2393182   ~3%    {4}    | JOIN WITH ControlFlowGraphImpl::CfgImpl::Cached::TAstNode#8f9a3aff_31#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3
         380879   ~0%    {4}    | JOIN WITH `SsaImpl::isControlFlowJump/1#c535656e` ON FIRST 1 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.1
                         return r3
```
2025-01-31 14:45:36 +01:00
Tom Hvitved
d56bf657b9 Rust: Use PathResolution module in data flow 2025-01-31 13:29:15 +01:00
Tom Hvitved
180782d863 Merge pull request #18579 from hvitved/rust/path-resolution
Rust: Implement path resolution in QL
2025-01-31 13:22:21 +01:00
Arthur Baars
384c040679 Merge pull request #18641 from github/aibaars/bazel-rust-opt
Rust: build optimized code
2025-01-31 12:37:19 +01:00
Jonas Jensen
7ad6f13bf5 Java: adjust CommandLineQuery locations
It turns out these locations need to be precise.
2025-01-31 11:37:16 +01:00
Michael Nebel
42d65f9c7c C#: Add change-note. 2025-01-31 10:37:05 +01:00
Michael Nebel
e863bf5f24 C#: Update TaintTrackingPath test expected output. 2025-01-31 10:37:04 +01:00
Michael Nebel
79fc735c93 C#: Update flow summaries expected file. 2025-01-31 10:37:02 +01:00
Michael Nebel
2cd2d3fe1a C#: Add some manual models for params ReadOnlySpan overloads of common library methods. 2025-01-31 10:37:00 +01:00
Michael Nebel
ecb2e61d7a C#: Update flow summaries test expected output. 2025-01-31 10:36:59 +01:00
Michael Nebel
8781d6762c C#: Update test options files to point to the new stubs. 2025-01-31 10:36:57 +01:00
Michael Nebel
82a193705c C#: Update stubs for other nuget packages and manually cleanup some of the project referenes. 2025-01-31 10:36:56 +01:00
Arthur Baars
4e3c23b68e Rust: build optimized code 2025-01-31 10:12:41 +01:00
Tom Hvitved
1cb524f76f Rust: Remove useTreeIsGlobImport workaround 2025-01-31 10:10:58 +01:00
Tom Hvitved
9d06f80902 Rust: Elaborate QL doc on PathResolution.qll 2025-01-31 10:10:57 +01:00
Tom Hvitved
8eb5792f3b Address review comments 2025-01-31 10:10:55 +01:00
Tom Hvitved
1f6d39f520 Rust: Rename modules test to path-resolution 2025-01-31 10:07:10 +01:00
Tom Hvitved
0aee2e6fb2 Rust: Implement path resolution in QL 2025-01-31 10:07:08 +01:00
Michael Nebel
c7f5de851c C#: Update .NET and ASP.NET framework stubs. 2025-01-31 10:02:40 +01:00
Michael Nebel
8d2ac484b2 C#: Update make_stubs_all to pin ServicePack version number and add some more packages (that previously were transitive dependencies). 2025-01-31 10:02:38 +01:00
Asger F
a0af4c9a84 Merge pull request #18622 from asgerf/js/typescript-tsconfig-names
JS: Treat more file patterns as tsconfig-like files
2025-01-31 09:42:50 +01:00
Asger F
a45da05086 Merge pull request #18623 from asgerf/js/nest-di
JS: Add support for dependency injection in Nest
2025-01-31 09:42:41 +01:00
Ed Minnix
6ae7edeae0 Add Blazor components file to Remote sources module 2025-01-30 23:07:15 -05:00
Ed Minnix
8bae79d9ce Components file 2025-01-30 23:07:03 -05:00
Asger F
2e65fe9597 JS: Change note 2025-01-30 20:46:30 +01:00
Asger F
d23c198072 JS: Change note 2025-01-30 20:41:20 +01:00
Mathias Vorreiter Pedersen
f35fea3bee Merge pull request #18629 from MathiasVP/fix-more-fps-in-buffer-overflow
C++: Fix more FPs in `cpp/overflow-buffer`
2025-01-30 18:28:10 +00:00
Mathias Vorreiter Pedersen
02cf458232 C++: Add change note. 2025-01-30 16:50:22 +00:00
Mathias Vorreiter Pedersen
764a84601f Update cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-01-30 16:09:44 +00:00
Jeroen Ketema
0a8b76c46b Merge pull request #18637 from jketema/forgotten
C++: Update expected test results
2025-01-30 17:01:21 +01:00
Jeroen Ketema
94608c5996 C++: Update expected test results
This seemed to have slipped through earlier.
2025-01-30 16:53:24 +01:00
Mathias Vorreiter Pedersen
839640a82f Update cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-01-30 15:31:36 +00:00
Jami Cogswell
0071e1acc2 Java: resolve merge conflict
remove import no longer needed since contents of MyBatisMapperXML.qll have been moved to MyBatis.qll
2025-01-30 10:19:21 -05:00
Jami Cogswell
577152e20f Java: minor qhelp update 2025-01-30 10:14:33 -05:00
Jami Cogswell
530103e2d9 Java: narrow query
remove PUT and DELETE from StaplerCsrfUnprotectedMethod

remove OPTIONS and TRACE from SpringCsrfUnprotectedMethod
2025-01-30 10:14:31 -05:00
Jami Cogswell
ead224c7b2 Java: expand qhelp, include Stapler examples 2025-01-30 10:14:29 -05:00
Jami Cogswell
096f6f88b2 Java: precision to medium 2025-01-30 10:14:27 -05:00
Jami Cogswell
f3721ebccf Java: refactor unprotectedDatabaseUpdate 2025-01-30 10:14:26 -05:00
Jami Cogswell
530a77e5a0 Java: refactor into canTargetDatabaseUpdateMethod 2025-01-30 10:14:24 -05:00
Jami Cogswell
8173fd01b8 Java: use two negations 2025-01-30 10:14:22 -05:00
Jami Cogswell
0462425191 Java: rename getMethod to getMethodValue 2025-01-30 10:14:20 -05:00
Jami Cogswell
20e8eb4323 Java: some clean-up and refactoring 2025-01-30 10:14:18 -05:00
Jami Cogswell
d4114f66c2 Java: more name-based heuristic tests to test regex 2025-01-30 10:14:16 -05:00
Jami Cogswell
0ab37684e1 Java: more database update tests and stubs 2025-01-30 10:14:14 -05:00
Jami Cogswell
3bf6dc24c1 Java: Stapler tests and stubs 2025-01-30 10:14:11 -05:00
Jami Cogswell
26b7c1a572 Java: qldocs for CallGraph module 2025-01-30 10:14:09 -05:00
Jami Cogswell
27aa9c97a4 Java: add change note 2025-01-30 10:14:07 -05:00
Jami Cogswell
fa27689719 Java: update InlineExpectationsTest import for new location 2025-01-30 10:14:05 -05:00
Jami Cogswell
48d55ec518 Java: performance fix 2025-01-30 10:14:03 -05:00
Jami Cogswell
ede9e78645 Java: remove exists variable in test 2025-01-30 10:14:01 -05:00
Jami Cogswell
48d1fe062b Java: remove exists variable 2025-01-30 10:13:59 -05:00
Jami Cogswell
c9ad15cc83 Java: update .expected file contents 2025-01-30 10:13:57 -05:00
Jami Cogswell
39ccde0c9d Java: add name-based heuristic 2025-01-30 10:13:54 -05:00
Jami Cogswell
286c655264 Java: add class for Stapler web methods that are not default-protected from CSRF 2025-01-30 10:13:52 -05:00
Jami Cogswell
0f39011122 Java: add taint-tracking config for execute to exclude FPs from non-update queries like select 2025-01-30 10:13:50 -05:00
Jami Cogswell
97aaf4c011 Java: handle MyBatis annotations for insert/update/delete 2025-01-30 10:13:48 -05:00
Jami Cogswell
df77d4914f Java: initial tests 2025-01-30 10:13:45 -05:00
Jami Cogswell
178b032453 Java: add query 2025-01-30 10:13:43 -05:00
Jami Cogswell
c553e3132e Java: add CallGraph module for displaying call graph paths 2025-01-30 10:13:41 -05:00
Jami Cogswell
87a8746b22 Java: add a class for methods that update a sql database (found using sql-injection nodes) 2025-01-30 10:13:39 -05:00
Jami Cogswell
43a288070c Java: add a class for PreparedStatement methods that update a database 2025-01-30 10:13:37 -05:00
Jami Cogswell
b88731df80 Java: move contents of MyBatisMapperXML.qll in src to MyBatis.qll in lib so importable, and fix experimental files broken by the move 2025-01-30 10:13:27 -05:00
Jami Cogswell
8e9f21dc52 Java: add a class for MyBatis Mapper methods that update a database 2025-01-30 10:01:43 -05:00
Jami Cogswell
506d668289 Java: add class for Spring request mapping methods that are not default-protected from CSRF 2025-01-30 10:01:41 -05:00
Jami Cogswell
0c6925399d Java: add qhelp 2025-01-30 10:01:39 -05:00
Chuan-kai Lin
b3b7817a2b Merge pull request #18603 from github/cklin/restrict-alerts-to-exact
AlertFiltering: add restrictAlertsToExactLocation
2025-01-30 06:40:39 -08:00
Anders Schack-Mulligen
8edcad0509 Merge pull request #18634 from aschackmull/cpp/unnest-getkind
C++: Un-nest the if-then-else sequence.
2025-01-30 14:07:07 +01:00
Jeroen Ketema
8f25dbf98d Merge pull request #18606 from jketema/typeref
C++: Support mixed `typedef`s and `using`s
2025-01-30 14:04:48 +01:00
Jonas Jensen
e27e3ae5a1 Merge pull request #18610 from jbj/bigint-language-reference
QL reference: more BigInt updates
2025-01-30 13:47:30 +01:00
Anders Schack-Mulligen
15171eb1a5 C++: Un-nest the if-then-else sequence. 2025-01-30 13:28:44 +01:00
Jonas Jensen
455eb5bf9b QL spec: fix typo 2025-01-30 13:09:15 +01:00
Simon Friis Vindum
f76647fc00 Rust: Initial model generation setup 2025-01-30 11:45:21 +01:00
Mathias Vorreiter Pedersen
9fa3ff74cc C++: Accept test changes. 2025-01-29 18:32:35 +00:00
Mathias Vorreiter Pedersen
403a0eb8e6 C++: Fix FPs in 'cpp/overflow-buffer' caused by unions of structs. 2025-01-29 18:30:20 +00:00
Mathias Vorreiter Pedersen
941ad870cb C++: Move 'hasAFieldWithOffset' to 'Field'. 2025-01-29 18:19:17 +00:00
Mathias Vorreiter Pedersen
3591f84a50 C++: Add lots of tests for CWE-119 involving unions and structs. 2025-01-29 18:11:23 +00:00
Chuan-kai Lin
d6f9eb2953 Merge pull request #18617 from github/cklin/merge-back-2.20.3
Mergeback from codeql-cli-2.20.3
2025-01-29 08:15:51 -08:00
Chuan-kai Lin
96caa686fc AlertFiltering: add restrictAlertsToExactLocation
This commit introduces a new extensible predicate
restrictAlertsToExactLocation, which is similar to the existing
restrictAlertsTo predicate but matches alert locations exactly.
2025-01-29 07:50:45 -08:00
Owen Mansel-Chan
04e17ec987 Merge pull request #18565 from owen-mc/go/mad/parameter
Go: Fix "Parameter" in models-as-data
2025-01-29 14:13:17 +00:00
Owen Mansel-Chan
168fe4ae20 Merge pull request #18543 from owen-mc/go/misc-improvements-rs-cors
Go: miscellaneous improvements rs cors models
2025-01-29 14:12:20 +00:00
Arthur Baars
54efb0a4a6 Merge pull request #18611 from github/aibaars/use-tree-star
Rust: add UseTree::is_star
2025-01-29 14:42:03 +01:00
Calum Grant
a033ba9347 C++: Detect multiple definitions based on the format parameter index 2025-01-29 13:36:10 +00:00
Asger F
16f7373712 JS: Model dependency injection in Nest 2025-01-29 13:49:46 +01:00
Asger F
89ad737b2a JS: Add internal extension points sources of class objects/instances 2025-01-29 13:49:44 +01:00
Asger F
b07c5c6ee0 JS: Add test 2025-01-29 13:49:43 +01:00
Mathias Vorreiter Pedersen
4b2c7ef03f Merge pull request #18615 from MathiasVP/fix-fp-buffer-overflow
C++: Fix FPs in `cpp/overflow-buffer`
2025-01-29 12:12:47 +00:00
Mathias Vorreiter Pedersen
6e312140ce Merge pull request #18618 from MathiasVP/18592-follow-follow-up-up
C++: Don't infer lambda calls when there is a static dispatch
2025-01-29 12:04:46 +00:00
Simon Friis Vindum
e141b4ee95 Merge pull request #18612 from paldepind/shared-model-generation-row
Shared: Generalize the number of columns in a generated MaD row
2025-01-29 12:56:07 +01:00
Mathias Vorreiter Pedersen
48cae7e7ed C++: Accept test changes after previous commit. 2025-01-29 11:04:55 +00:00
Mathias Vorreiter Pedersen
373b38e881 Update cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-01-29 11:03:52 +00:00
Simon Friis Vindum
9d87f26145 Shared: Use strictconcat in model generator printing 2025-01-29 11:56:39 +01:00
Asger F
6d04425790 JS: Add test 2025-01-29 11:14:21 +01:00
Asger F
d66d1a79d6 JS: Also update legacy entry point used by qltest 2025-01-29 11:14:10 +01:00
Asger F
8182190120 JS: Remove trailing whitespace 2025-01-29 10:53:26 +01:00
Asger F
bf80f0798b JS: Treat more file patterns as as tsconfig.json-like 2025-01-29 10:53:18 +01:00
Michael Nebel
ee5416f0b1 Merge pull request #18299 from michaelnebel/java/deprecateexperimental
Java: Deprecate experimental queries.
2025-01-29 10:41:25 +01:00
Simon Friis Vindum
70550950d8 Java, C#: Ensure variable is used in all disjuncts 2025-01-29 10:30:26 +01:00
Geoffrey White
3b5397f3b0 Rust: Model Iterator.collect. 2025-01-29 09:19:20 +00:00
Geoffrey White
de149a9623 Rust: Model Iterator.nth. 2025-01-29 09:19:19 +00:00
Geoffrey White
80e50f9b04 Rust: Make sources more accurate (iterator contents). 2025-01-29 09:19:18 +00:00
Geoffrey White
a42c0f6b5b Merge pull request #18605 from geoffw0/expect
Rust: Improve models for environment sources, expect and unwrap
2025-01-29 09:11:30 +00:00
Asger F
f8694a34e5 Merge pull request #18397 from aegilops/angular-sources-sinks
JavaScript CodeQL library updates: new Angular sink(s)
2025-01-29 09:09:23 +01:00
Mathias Vorreiter Pedersen
bc50634472 Merge pull request #18616 from MathiasVP/18592-follow-up
C++: #18592 follow-up
2025-01-28 20:00:16 +00:00
Andrew Eisenberg
a4d9956c94 Merge pull request #18614 from github/aeisenberg/remove-pr-template
Delete .github/pull_request_template.md
2025-01-28 10:54:08 -08:00
Mathias Vorreiter Pedersen
be2777bc31 C++: Don't infer lambda calls when there is a static dispatch to a source or summary callable. 2025-01-28 18:51:31 +00:00
Chuan-kai Lin
225ce81d26 Merge branch 'main' into cklin/merge-back-2.20.3 2025-01-28 10:11:30 -08:00
Chuan-kai Lin
36d1c5602e Merge pull request #18589 from github/cklin/merge-back-2.20.2
Mergeback from codeql-cli-2.20.2
2025-01-28 10:04:43 -08:00
Mathias Vorreiter Pedersen
a35ed57848 Revert "C++: Don't generate parameter nodes for bodyless parameters when there is a summary of the enclosing function."
This reverts commit ad80b36074.
2025-01-28 17:09:45 +00:00
Mathias Vorreiter Pedersen
ff9a4d02f0 Merge pull request #18592 from MathiasVP/fix-enclosing-callable-cpp
C++: Don't generate dataflow nodes for functions with summaries
2025-01-28 16:57:44 +00:00
Geoffrey White
919e7978cd Rust: Add PrettyPrintModels.ql to the test. I gather this stabilized the output MaD IDs. 2025-01-28 16:23:20 +00:00
Geoffrey White
df8a92cb62 Merge pull request #6 from hvitved/expect
Rust: Fix data flow through callbacks passed to library functions
2025-01-28 16:12:17 +00:00
Mathias Vorreiter Pedersen
202a5e86da C++: Add change note. 2025-01-28 16:07:09 +00:00
Chuan-kai Lin
b9b9394259 AlertFiltering: allow multiple filtering predicates
This commit rephrases the documentation for the restrictAlertsTo
predicate and renames the predicate columns for clarity. The new
documentation should be equivalent to the old documentation, except
allowing for the possibility that there may be multiple alert filtering
predicates.
2025-01-28 07:51:45 -08:00
Mathias Vorreiter Pedersen
c9a3cf4bd0 C++: Accept test changes. 2025-01-28 15:48:11 +00:00
Mathias Vorreiter Pedersen
d6054c9a51 C++: Infer larger buffer sizes for non-static member variables. 2025-01-28 15:48:04 +00:00
Mathias Vorreiter Pedersen
1643a66183 C++: Add 'cpp/overflow-buffer' FP tests. 2025-01-28 15:44:53 +00:00
Andrew Eisenberg
4e7d364f4d Delete .github/pull_request_template.md
The template is not useful.
2025-01-28 07:40:56 -08:00
Owen Mansel-Chan
2d76466405 Add change note 2025-01-28 15:35:28 +00:00
Owen Mansel-Chan
0ccf4cecb8 Fix XSS FPs when content type is safe 2025-01-28 15:32:30 +00:00
Arthur Baars
8d96c87abe Rust: add UseTree::is_star 2025-01-28 16:12:25 +01:00
Simon Friis Vindum
13e0829d19 Shared: Generalize the number of columns in a generated MaD row 2025-01-28 15:36:09 +01:00
Mathias Vorreiter Pedersen
38b66e5a8e C++: Fix a few type errors. 2025-01-28 14:08:12 +00:00
Calum Grant
cc35ec49e4 C++: Remove linker-awareness FPs 2025-01-28 14:06:38 +00:00
Calum Grant
6df8fdc233 C++: Add test for cpp/wrong-type-format-argument 2025-01-28 14:04:33 +00:00
Mathias Vorreiter Pedersen
d40322f9eb C++: (Bugfix 3) Don't conflate summarized callables and source callables in 'nodeGetEnclosingCallable'. 2025-01-28 13:59:19 +00:00
Mathias Vorreiter Pedersen
06bc8add9d C++: (Bugfix 2) Don't remap isParameterOf. 2025-01-28 13:59:17 +00:00
Mathias Vorreiter Pedersen
662e74924b C++: (Bugfix 1) There should be a callable representing the source code even if there is a summarized version. 2025-01-28 13:59:16 +00:00
Mathias Vorreiter Pedersen
01d7ab93e2 C++: Add consistency check to the MaD folder. 2025-01-28 13:59:14 +00:00
Jonas Jensen
865073a75a QL spec: result of looking through float
I searched for `float` everywhere in the QL language reference and
considered whether each occurrence should be generalised to cover
`BigInt`.
2025-01-28 13:58:17 +01:00
Tom Hvitved
8b82eaa633 Rust: Fix data flow through callbacks passed to library functions 2025-01-28 13:44:27 +01:00
Erik Krogh Kristensen
f0755bfb5d Merge pull request #18601 from erik-krogh/del-deps-jan-2025
All: delete outdated deprecations
2025-01-28 13:31:41 +01:00
Geoffrey White
f2564c351f Rust: Changes to other tests - mostly MaD IDs :(. 2025-01-28 09:22:30 +00:00
Geoffrey White
6337f5a08b Merge pull request #18586 from geoffw0/floatguards
C++: Test and (perhaps) fix an issue with guards on floating point comparisons.
2025-01-28 09:05:13 +00:00
Asger F
16634e6dc9 Merge pull request #18540 from JarLob/bash
Actions: Improve bash support
2025-01-28 09:49:58 +01:00
Geoffrey White
dfd1865b96 Rust: Add some basic flow models. 2025-01-28 08:47:15 +00:00
Geoffrey White
9d42be8305 Rust: Alphabetize lang-core.model.yml. 2025-01-28 08:47:14 +00:00
Geoffrey White
c04d619a3c Rust: Add a couple of extra data flow test cases. 2025-01-28 08:47:13 +00:00
Geoffrey White
185a23b3c6 Rust: Allow implicit flow out of content at the test sinks, so that we see our results. 2025-01-28 08:43:06 +00:00
Geoffrey White
a1980d4d08 Rust: Make sources more accurate (Option / Result contents). 2025-01-28 08:43:05 +00:00
Geoffrey White
78d0c5c529 Merge pull request #18602 from geoffw0/reqwest2
Rust: Additional models for Reqwest
2025-01-28 08:40:38 +00:00
erik-krogh
c7fc164680 java: remove the 2 from SafeTransformerFactoryFlow, not that the previous naming conflict has been deleted 2025-01-28 09:13:59 +01:00
Geoffrey White
fd9fb10bb9 Rust: Accept changes from fixing the ]. 2025-01-27 22:50:09 +00:00
Geoffrey White
494d8f2da0 Rust: Update MaD IDs for an unrelated test. :( 2025-01-27 22:22:41 +00:00
Geoffrey White
9d6a13cec2 Rust: Accept improved results for rust/sql-injection. Note that the lost annotations are only sources, not results, and I suspect will return when we have sufficient flow in these cases. 2025-01-27 22:22:38 +00:00
erik-krogh
a1afa20d4b add change-notes 2025-01-27 22:43:13 +01:00
erik-krogh
d46a2d4e80 ruby: delete the remainders of the old deprecated typetracking library 2025-01-27 22:38:07 +01:00
erik-krogh
90b403b40b py: delete the remainder of the deprecated TypeTracker libary 2025-01-27 22:17:18 +01:00
erik-krogh
e1b14cb0be ruby: delete now dead Ruby method 2025-01-27 22:17:13 +01:00
erik-krogh
0056e923ea js: revert the JS deprecations. The old dataflow library is not that old yet 2025-01-27 22:17:07 +01:00
erik-krogh
7b1b366d98 ruby: update ruby tests after deleting deprecated test predicates 2025-01-27 22:17:00 +01:00
erik-krogh
bd8ed1dc04 cpp: revert two cpp dataflow deprecations that take more work 2025-01-27 22:16:54 +01:00
erik-krogh
34f5f61a10 all: use my script to delete outdated deprecations 2025-01-27 22:16:48 +01:00
Geoffrey White
9ea9f3ae19 Update rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-01-27 21:09:21 +00:00
Geoffrey White
7cf872baad Rust: Adjust the tests to work around test processing of /. 2025-01-27 21:00:08 +00:00
Geoffrey White
23ac35e5ca Rust: Model more Reqwest methods (.await still doesn't work though). 2025-01-27 20:52:31 +00:00
Geoffrey White
9583a2a7d3 Rust: Additional test cases for reqwest sources. 2025-01-27 20:42:35 +00:00
Mathias Vorreiter Pedersen
4e44201ba8 C++: Remap calls to source functions to the summarized function. 2025-01-27 16:58:53 +00:00
Mathias Vorreiter Pedersen
98265dda7b Revert "C++: Don't generate dataflow nodes for instructions inside summarized callables."
This reverts commit fc39df28b0.
2025-01-27 16:58:46 +00:00
Jeroen Ketema
37b67dd9eb C++: Update stats file 2025-01-27 15:42:35 +01:00
Owen Mansel-Chan
9f3572d15a Reformat inline expectations (space after $) 2025-01-27 14:36:26 +00:00
Owen Mansel-Chan
05fb22e8ff Make test easier to understand 2025-01-27 14:10:19 +00:00
Jonas Jensen
e7f3e03c40 QL spec: Fix up pre-BigInt language 2025-01-27 14:50:41 +01:00
Jeroen Ketema
f49d8209e5 C++: Add upgrade and downgrade scripts 2025-01-27 13:32:00 +01:00
Tom Hvitved
253ccd1210 Merge pull request #14303 from hvitved/ruby/must-flow
Ruby: Implement `localMustFlowStep `
2025-01-27 12:51:29 +01:00
Mathias Vorreiter Pedersen
67a905141c Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-01-27 10:55:56 +00:00
Erik Krogh Kristensen
87ad09bcdf Merge pull request #18595 from erik-krogh/erik-krogh/clear-text-example
JS: fix example in clear-text-logging qhelp to actually be bad
2025-01-27 11:45:50 +01:00
Jeroen Ketema
a32cfdab9f C++: Support mixed typedefs and usings 2025-01-27 11:43:17 +01:00
Geoffrey White
67a746eff1 Update cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-01-27 10:41:50 +00:00
Geoffrey White
f32fd38f74 Merge pull request #18582 from geoffw0/logging
Rust: Query for cleartext logging of sensitive information
2025-01-27 10:37:17 +00:00
erik-krogh
37a1727043 fix example in clear-text-logging qhelp to actually be bad 2025-01-27 11:31:28 +01:00
Michael Nebel
98d6353f12 Java: Address review comments. 2025-01-27 11:21:44 +01:00
Owen Mansel-Chan
1bacb99410 Merge pull request #18585 from owen-mc/go/1.24-support-prep
Go: 1.24 support - Tolerate type parameters on alias types
2025-01-27 10:14:36 +00:00
Tom Hvitved
f75ecdb16e Merge pull request #18570 from hvitved/csharp/dotnet3-integration-test
C#: Verify that downloaded .NET CLIs are executable
2025-01-27 10:28:04 +01:00
Michael Nebel
c27b611c76 Java: Deprecate MyBatisMapperXML as it is only used by experimental queries. 2025-01-27 10:22:22 +01:00
Michael Nebel
999f1f21e2 Java: Accept expected test output. 2025-01-27 10:22:20 +01:00
Michael Nebel
b552c8aba9 Java: Add change-note. 2025-01-27 10:22:19 +01:00
Michael Nebel
cc48cec1c7 Java: Deprecate experimental model activation. 2025-01-27 10:22:17 +01:00
Michael Nebel
e3997f65ed Java: Deprecate experimental queries. 2025-01-27 10:22:16 +01:00
Michael Nebel
501f9859bd C#: Add change note. 2025-01-27 10:13:26 +01:00
Michael Nebel
fc03c367e9 C#: Update expected test output. 2025-01-27 10:13:19 +01:00
Michael Nebel
0453ae8dbd C#: Use property- and indexer implementation location and extract the accessor implementations instead of declarations. 2025-01-27 10:09:42 +01:00
Michael Nebel
443a2a47b5 C#: Add indexer data flow test expected output file. 2025-01-27 10:09:40 +01:00
Michael Nebel
c481e82fdd C#: Add indexer data flow test. 2025-01-27 10:09:39 +01:00
Michael Nebel
568fd9c748 C#: Add some partial tests for Properties and Indexers. 2025-01-27 10:09:38 +01:00
Michael Nebel
5836c8d0ce C#: Update expected test output for data flow tests. 2025-01-27 10:09:36 +01:00
Michael Nebel
dae5ca81a2 C#: Add dataflow examples for partial properties. 2025-01-27 10:09:35 +01:00
Michael Nebel
e53c750876 C#: Update expected output for dispatch tests. 2025-01-27 10:09:28 +01:00
Michael Nebel
b3e56e6023 C#: Add dispatch examples for partial properties and indexers. 2025-01-27 10:06:56 +01:00
Michael Nebel
ff7719f96e C#: Updated expected test output. 2025-01-27 10:05:11 +01:00
Michael Nebel
963e658619 C#: Add partial properties and indexers examples. 2025-01-27 10:05:09 +01:00
Simon Friis Vindum
eaeeafeea4 Merge pull request #18590 from paldepind/rust-control-flow-test
Rust: Add two additional control flow tests
2025-01-27 09:05:20 +01:00
Mathias Vorreiter Pedersen
ad80b36074 C++: Don't generate parameter nodes for bodyless parameters when there is a summary of the enclosing function. 2025-01-24 20:16:04 +00:00
Mathias Vorreiter Pedersen
cda629b204 C++: Accept test changes. Notice the consistency failure. 2025-01-24 20:13:21 +00:00
Mathias Vorreiter Pedersen
de3b111f2f C++: Map a parameter node to the summarized callable if it exists. 2025-01-24 20:08:16 +00:00
Mathias Vorreiter Pedersen
fc39df28b0 C++: Don't generate dataflow nodes for instructions inside summarized callables. 2025-01-24 20:05:19 +00:00
Jeroen Ketema
4d2ec75ef2 Merge pull request #18588 from jketema/decl-entry
C++: Fix join-order problem in `UserType::getADeclarationEntry`
2025-01-24 19:38:54 +01:00
Geoffrey White
06bd394695 C++: Add a note for the other predicates as well. 2025-01-24 17:52:13 +00:00
Geoffrey White
1f962004a9 C++: Add a note in the QLDoc for comparesEq. 2025-01-24 17:52:03 +00:00
Geoffrey White
7664fd16e7 C++: Add more test cases for guards. 2025-01-24 17:51:45 +00:00
Geoffrey White
0a3d44c44e Rust: Re-apply suggested changes (I accidentally force-pushed them away). 2025-01-24 17:31:38 +00:00
Paul Hodgkinson
cda4b6ffcb Merge branch 'main' into angular-sources-sinks 2025-01-24 17:26:29 +00:00
Geoffrey White
117db8a9b2 Rust: Make the test runnable. 2025-01-24 17:22:42 +00:00
Florin Coada
41ee84b412 Merge pull request #18591 from github/changedocs/2.20.3
Add changelog entries for CodeQL CLI versions 2.20.1 to 2.20.3
2025-01-24 17:21:11 +00:00
Florin Coada
a76e9a4c21 Add changelog entries for CodeQL CLI versions 2.20.1 to 2.20.3 2025-01-24 16:59:30 +00:00
aegilops
5a191d42bd Merge branch 'angular-sources-sinks' of https://github.com/aegilops/codeql into angular-sources-sinks 2025-01-24 16:52:19 +00:00
aegilops
76da479550 Updated tests 2025-01-24 16:52:11 +00:00
Paul Hodgkinson
f033f179f7 Merge branch 'main' into angular-sources-sinks 2025-01-24 15:46:48 +00:00
aegilops
d248551e88 Updated expected test result files using HEAD version of codeql 2025-01-24 15:46:09 +00:00
Michael Nebel
d3d3cceb40 Merge pull request #18575 from michaelnebel/csharp/overloadresolution
C# 13: Overload resolution priority.
2025-01-24 16:14:18 +01:00
Jeroen Ketema
2e33a4287f C++: Apply review suggestion 2025-01-24 16:12:16 +01:00
Simon Friis Vindum
c195840ec8 Rust: Add two additional control flow tests 2025-01-24 16:09:32 +01:00
Chuan-kai Lin
e0e02c712f Merge branch 'main' into cklin/merge-back-2.20.2 2025-01-24 06:45:11 -08:00
Jeroen Ketema
4c256d17ae C++: Fix join-order problem in UserType::getADeclarationEntry
Before on `LRMPUT/PUTSLAM`:
```
Evaluated recursive predicate UserType::UserType.getADeclarationEntry/0#cea44e2f@7ce3a4hu in 22069ms on iteration 2 (delta size: 379076853).
Evaluated relational algebra for predicate UserType::UserType.getADeclarationEntry/0#cea44e2f@7ce3a4hu on iteration 2 running pipeline standard with tuple counts:
           126825  ~32%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0, Lhs.1
                           {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev`(FIRST 2)
        379076853  ~96%    {2}    | SCAN OUTPUT In.1, In.0
                           {2}    | AND NOT `_Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs`(FIRST 2)
        379076853  ~97%    {2}    | SCAN OUTPUT In.1, In.0
                           return r1

Evaluated named local _Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs@L0#7ce3a in 7459ms on iteration 2 (size: 0).
Evaluated relational algebra for predicate _Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs@L0#7ce3a on iteration 2 running pipeline main with tuple counts:
           126825  ~32%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        379076853  ~97%    {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev`(FIRST 2)

                0   ~0%    {2} r2 = r1 AND NOT usertypes_0#antijoin_rhs(FIRST 1)
                0   ~0%    {2}    | JOIN WITH type_decls_1#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.0

        379077929  ~95%    {3} r3 = JOIN r1 WITH `ResolveClass::resolveClass/1#ea47deee_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0
                0   ~0%    {2}    | JOIN WITH type_decls_1#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.2

                0   ~0%    {2} r4 = r2 UNION r3
                           return r4

Evaluated named local _Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs@L0#7ce3a in 1031ms on iteration 3 (size: 0).
Evaluated relational algebra for predicate _Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs@L0#7ce3a on iteration 3 running pipeline main with tuple counts:
        190114100   ~0%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
                0   ~0%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
                0   ~0%    {2}    | JOIN WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0, Lhs.1
                0   ~0%    {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev`(FIRST 2)

                0   ~0%    {2} r2 = r1 AND NOT usertypes_0#antijoin_rhs(FIRST 1)
                0   ~0%    {2}    | JOIN WITH type_decls_1#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.0

                0   ~0%    {3} r3 = JOIN r1 WITH `ResolveClass::resolveClass/1#ea47deee_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0
                0   ~0%    {2}    | JOIN WITH type_decls_1#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.2

                0   ~0%    {2} r4 = r2 UNION r3
                           return r4

Pipeline base for UserType::UserType.getADeclarationEntry/0#cea44e2f@7ce3a4hu was evaluated in 1 iterations totaling 149ms (delta sizes total: 224004).
         149171    ~17%    {1} r1 = JOIN type_decls_1#join_rhs WITH `ResolveClass::resolveClass/1#ea47deee` ON FIRST 1 OUTPUT Rhs.1
         125649     ~0%    {1}    | JOIN WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0
        1811817  ~1075%    {2}    | JOIN WITH `ResolveClass::resolveClass/1#ea47deee_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.0
        1812281  ~1172%    {2}    | JOIN WITH type_decls_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1
                           return r1

Pipeline standard for UserType::UserType.getADeclarationEntry/0#cea44e2f@7ce3a4hu was evaluated in 1 iterations totaling 22069ms (delta sizes total: 379076853).
           126825  ~32%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0, Lhs.1
                           {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev`(FIRST 2)
        379076853  ~96%    {2}    | SCAN OUTPUT In.1, In.0
                           {2}    | AND NOT `_Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs`(FIRST 2)
        379076853  ~97%    {2}    | SCAN OUTPUT In.1, In.0
                           return r1

Pipeline main for _Class::Class#9afdbffd_Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs_ResolveClass::r__#antijoin_rhs@L0#7ce3a was evaluated in 2 iterations totaling 8490ms (sizes total: 0).
        190240925   ~0%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        379076853  ~97%    {2}    | JOIN WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        379076853  ~97%    {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#prev`(FIRST 2)

                0   ~0%    {2} r2 = r1 AND NOT usertypes_0#antijoin_rhs(FIRST 1)
                0   ~0%    {2}    | JOIN WITH type_decls_1#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.0

        379077929  ~95%    {3} r3 = JOIN r1 WITH `ResolveClass::resolveClass/1#ea47deee_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0
                0   ~0%    {2}    | JOIN WITH type_decls_1#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.2

                0   ~0%    {2} r4 = r2 UNION r3
                           return r4
```

After:
```
[2025-01-24 15:22:19] Evaluated non-recursive predicate UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a@82645fgi in 8ms (size: 149661).
Evaluated relational algebra for predicate UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a@82645fgi with tuple counts:
        149661  ~5%    {2} r1 = JOIN `_ResolveClass::resolveClass/1#ea47deee_type_decls#shared` WITH UserType::UserType#21e9e463 ON FIRST 1 OUTPUT Lhs.0, Lhs.1
                       return r1

[2025-01-24 15:22:19] Evaluated non-recursive predicate project#UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a@22da38r1 in 10ms (size: 124540).
Evaluated relational algebra for predicate project#UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a@22da38r1 with tuple counts:
        149661  ~17%    {1} r1 = SCAN `UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a` OUTPUT In.0
        124540   ~0%    {1}    | STREAM DEDUP
                        return r1

[2025-01-24 15:22:20] Evaluated non-recursive predicate Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs@9c5150lt in 91ms (size: 764244).
Evaluated relational algebra for predicate Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs@9c5150lt with tuple counts:
        764244  ~2%    {2} r1 = SCAN `Class::Class.isConstructedFrom/1#dispred#390e01c8` OUTPUT In.1, In.0
                       return r1

Evaluated recursive predicate UserType::UserType.getADeclarationEntry/0#cea44e2f#fb@d5a154u4 in 8ms on iteration 1 (delta size: 25561).
Evaluated relational algebra for predicate UserType::UserType.getADeclarationEntry/0#cea44e2f#fb@d5a154u4 on iteration 1 running pipeline base with tuple counts:
        149661  ~2%    {2} r1 = SCAN `UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a` OUTPUT In.1, In.0
         25561  ~6%    {2}    | JOIN WITH type_def ON FIRST 1 OUTPUT Lhs.1, Lhs.0
                       return r1

Evaluated recursive predicate UserType::UserType.getADeclarationEntry/0#cea44e2f#fb@d5a154u4 in 108ms on iteration 2 (delta size: 763236).
Evaluated relational algebra for predicate UserType::UserType.getADeclarationEntry/0#cea44e2f#fb@d5a154u4 on iteration 2 running pipeline standard with tuple counts:
          3655  ~0%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#fb#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        763236  ~1%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        763236  ~1%    {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#fb#prev`(FIRST 2)
        763236  ~1%    {2}    | AND NOT `project#UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a`(FIRST 1)
                       return r1

Pipeline base for UserType::UserType.getADeclarationEntry/0#cea44e2f#fb@d5a154u4 was evaluated in 1 iterations totaling 8ms (delta sizes total: 25561).
        149661  ~2%    {2} r1 = SCAN `UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a` OUTPUT In.1, In.0
         25561  ~6%    {2}    | JOIN WITH type_def ON FIRST 1 OUTPUT Lhs.1, Lhs.0
                       return r1

Pipeline standard for UserType::UserType.getADeclarationEntry/0#cea44e2f#fb@d5a154u4 was evaluated in 1 iterations totaling 108ms (delta sizes total: 763236).
          3655  ~0%    {2} r1 = JOIN `UserType::UserType.getADeclarationEntry/0#cea44e2f#fb#prev_delta` WITH Class::Class#9afdbffd ON FIRST 1 OUTPUT Lhs.0, Lhs.1
        763236  ~1%    {2}    | JOIN WITH `Class::Class.isConstructedFrom/1#dispred#390e01c8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1
        763236  ~1%    {2}    | AND NOT `UserType::UserType.getADeclarationEntry/0#cea44e2f#fb#prev`(FIRST 2)
        763236  ~1%    {2}    | AND NOT `project#UserType::UserType.getADeclarationEntryBase/0#dispred#d07c0e9a`(FIRST 1)
                       return r1
```
2025-01-24 15:24:13 +01:00
Tom Hvitved
ac4f82cfbb C#: Verify that downloaded .NET CLIs are executable 2025-01-24 15:14:58 +01:00
Tom Hvitved
dcd87a9825 C#: Add .NET 3 integration test 2025-01-24 15:13:22 +01:00
Owen Mansel-Chan
29f6d48162 Retain previous check for alias types 2025-01-24 12:30:27 +00:00
Jaroslav Lobačevski
9521467a06 Update actions/ql/lib/codeql/actions/Bash.qll
Co-authored-by: Asger F <asgerf@github.com>
2025-01-24 12:59:41 +01:00
Asger F
a54e732aab Merge pull request #18572 from asgerf/rb/diff-informed2
Ruby: fix and improve diff-informed queries
2025-01-24 11:05:46 +01:00
Asger F
1b7977bf90 Merge pull request #18466 from asgerf/js/view-component-inputs
JS: Add view-component-input threat model
2025-01-24 10:59:25 +01:00
Asger F
60f9160822 Merge pull request #18574 from asgerf/js/diff-informed2
JS: fix and improve diff-informed queries
2025-01-24 10:58:22 +01:00
Simon Friis Vindum
a6cd53eeb8 Merge pull request #18497 from paldepind/shared-basic-block-library
Add shared basic block library
2025-01-24 10:49:33 +01:00
Owen Mansel-Chan
57fad4a837 Allow type parameters on alias types 2025-01-24 09:40:58 +00:00
Rasmus Wriedt Larsen
bafed4e098 Merge pull request #18560 from JarLob/downloadartifact
Actions: Fix version range for known vulnerable actions
2025-01-24 10:39:53 +01:00
Simon Friis Vindum
e13a7a224f Merge branch 'main' into shared-basic-block-library 2025-01-24 09:54:26 +01:00
Simon Friis Vindum
b84adec407 Merge pull request #18568 from paldepind/rust-container
Rust: Change array element content type into a general collection element content type
2025-01-24 09:40:46 +01:00
Simon Friis Vindum
e7ad091b0f Rust: Remove unnecessary characteristic predicate 2025-01-24 08:56:41 +01:00
Tom Hvitved
10f55133fe Merge pull request #18482 from hvitved/rust/nested-functions
Rust: Take nested functions into account when resolving variables
2025-01-24 08:41:34 +01:00
Chris Smowton
e27d8c1672 Amend extractor information expectation 2025-01-23 15:36:37 -05:00
Chris Smowton
660922fe4d Don't expect logged properties files in source archives 2025-01-23 15:36:27 -05:00
Paolo Tranquilli
91132b94a9 Swift: drop indisciminate printing of the env 2025-01-23 14:45:47 -05:00
Geoffrey White
037d496a68 Rust: Fix some more tests (MaD ID changes and extraction consistency issues). 2025-01-23 19:14:28 +00:00
Geoffrey White
814118d3e8 Merge remote-tracking branch 'upstream/main' into logging 2025-01-23 19:04:25 +00:00
Geoffrey White
f5459d7ba8 Rust: Accept changes to integration test results. 2025-01-23 18:48:51 +00:00
Geoffrey White
44b9a1188b Rust: Another .qhelp fix. 2025-01-23 18:46:35 +00:00
Geoffrey White
951d1fc9e0 Rust: Add missing file. 2025-01-23 18:38:48 +00:00
Geoffrey White
d27a71eaaf Rust: Minor fixes. 2025-01-23 18:21:27 +00:00
Geoffrey White
55705232f6 Update rust/ql/src/queries/security/CWE-312/CleartextLoggingBad.rs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-01-23 18:18:05 +00:00
Geoffrey White
613a1656f3 Rust: Simplify QL slightly. 2025-01-23 18:13:59 +00:00
Geoffrey White
4214c837b8 Rust: Clean up the query message. 2025-01-23 18:03:25 +00:00
Geoffrey White
ccc124360e Rust: Add .qhelp and examples. 2025-01-23 17:46:04 +00:00
Geoffrey White
e70816727b Rust: Add the sinks to metrics. 2025-01-23 17:17:25 +00:00
Geoffrey White
59c3ac6f80 Rust: Allow flow through reference taking (&). 2025-01-23 17:17:07 +00:00
Geoffrey White
78c58aa5f1 Rust: Allow implicit taint reads from tuple contents at sinks. 2025-01-23 17:17:05 +00:00
Geoffrey White
64444940a6 Rust: Add taint sinks for target and key-value arguments. 2025-01-23 17:17:04 +00:00
Geoffrey White
2bbf493991 Rust: Model assert_failed. 2025-01-23 17:17:03 +00:00
Geoffrey White
484331c303 Rust: Model StdoutLock, StderrLock methods and String.as_bytes. 2025-01-23 17:17:02 +00:00
Geoffrey White
1d2950c70c Rust: Add some sinks. 2025-01-23 17:17:00 +00:00
Geoffrey White
4297d05c05 Rust: Implement the query. 2025-01-23 17:16:59 +00:00
Geoffrey White
173cfd5c7b Rust: Add test cases for various std:: bits. 2025-01-23 17:16:58 +00:00
Simon Friis Vindum
9a6d651fee Rust: More renaming and adjusting for generic element content type 2025-01-23 18:15:17 +01:00
aegilops
c9a775d737 Merge branch 'angular-sources-sinks' of https://github.com/aegilops/codeql into angular-sources-sinks 2025-01-23 17:07:02 +00:00
aegilops
522f3d1337 Merge 2025-01-23 17:00:56 +00:00
Paul Hodgkinson
eacc322d4f Update Angular Renderer2 XSS sink details in change note 2025-01-23 16:39:18 +00:00
Simon Friis Vindum
a537f347d3 Shared: Tweak basic block documentation 2025-01-23 17:21:46 +01:00
Jeroen Ketema
4311553fa0 Merge pull request #18578 from aschackmull/cpp/join-order-fix-taintedallocationsize
C++: Fix join order problem in TaintedAllocationSize.
2025-01-23 17:16:03 +01:00
Chris Smowton
9c779c3cc9 Merge pull request #18573 from smowton/smowton/admin/remove-properties-file-expectations
Java: Don't expect logged properties files in source archives
2025-01-23 16:12:25 +00:00
Mathias Vorreiter Pedersen
ccb28ed0b3 Merge pull request #18556 from MathiasVP/remove-conflation-from-pure-functions
C++: Remove pointer/pointee conflation from models of "pure" functions
2025-01-23 15:50:39 +00:00
Paolo Tranquilli
13f1f8fdff Merge branch 'main' into redsun82/env-dump-integration-test 2025-01-23 15:55:26 +01:00
Paolo Tranquilli
e096bdb701 Merge pull request #18468 from github/redsun82/rust-readme
Rust: give more options for building in `README.md`
2025-01-23 15:54:45 +01:00
Tom Hvitved
d60a81dac1 Merge pull request #18576 from hvitved/rust/translate-mad-ids 2025-01-23 15:44:29 +01:00
Jeroen Ketema
8b2cfa9133 Merge pull request #18561 from jketema/jketema/scanf
C++: Fix join-order problem found on `IncorrectCheckScanf.ql`
2025-01-23 15:00:24 +01:00
Mathias Vorreiter Pedersen
7792839a25 C++: Add a 'isLocaleParameter' and clean up the model a bit. 2025-01-23 13:56:00 +00:00
Mathias Vorreiter Pedersen
67e3b69996 C++: Move comment. 2025-01-23 13:49:13 +00:00
Mathias Vorreiter Pedersen
fb12847360 Update cpp/ql/lib/semmle/code/cpp/models/implementations/Pure.qll
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-01-23 13:48:44 +00:00
Mathias Vorreiter Pedersen
2cdb52cad2 C++: Accept test changes after previous commit. 2025-01-23 13:46:47 +00:00
Tom Hvitved
33e07edcbf Rust: Translate more MaD IDs in tests 2025-01-23 14:45:33 +01:00
Mathias Vorreiter Pedersen
e0f2f1dd80 Update cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-01-23 13:41:48 +00:00
Mathew Payne
788ae2ae21 Merge branch 'main' into rust-rusqlite 2025-01-23 13:34:29 +00:00
Mathew Payne
c69bb15335 Update rust/ql/test/library-tests/frameworks/rusqlite/main.rs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-01-23 13:32:36 +00:00
Michael Nebel
dcdc12f9af Merge pull request #18562 from michaelnebel/csharp/implicitindex
C# 13: [TEST ONLY] Implicit index usage in initializers.
2025-01-23 14:31:15 +01:00
Michael Nebel
340f3c0fd5 C#: Add change note. 2025-01-23 14:24:24 +01:00
Anders Schack-Mulligen
1a4d21777d C++: Fix join order problem in TaintedAllocationSize. 2025-01-23 14:20:23 +01:00
Michael Nebel
0a2a8e9701 C#: Add attribute test for the OverloadResolutionAttribute attribute class. 2025-01-23 14:19:58 +01:00
Mathew Payne
eac63a3840 fix(rust): Update TaintFlowStep 2025-01-23 13:19:07 +00:00
Michael Nebel
a6d16e79d9 C#: Add overload resolution priority attribute class. 2025-01-23 14:17:52 +01:00
Mathew Payne
e205a6811f feat(rust:) Add initial rusqlite support 2025-01-23 13:09:25 +00:00
Michael Nebel
568d3cc161 C#: Update attributes test expected output. 2025-01-23 13:55:01 +01:00
Michael Nebel
08fc5644eb C#: Add some attributes test example code with overload resolution priority attribute. 2025-01-23 13:54:44 +01:00
Michael Nebel
5f7c28d1b9 C#: Add a using statement to the attributes test file and update test expected output. 2025-01-23 13:53:26 +01:00
Michael Nebel
d924b1a536 C#: Update test expected output. 2025-01-23 13:36:09 +01:00
Michael Nebel
bc11c23f08 C#: Add dispatch tests for overload resolution and update line numbers for existing test cases. 2025-01-23 13:33:53 +01:00
Geoffrey White
bb3be2f8af Rust: Add a test for the log crate + placeholder query. 2025-01-23 12:24:47 +00:00
Asger F
6423033db6 JS: Resolve inserted TODOs 2025-01-23 13:02:52 +01:00
Asger F
102b187c35 JS: Ignore experimental queries for now 2025-01-23 12:53:18 +01:00
Chris Smowton
09fe6091c2 Amend extractor information expectation 2025-01-23 11:33:45 +00:00
Chris Smowton
02edb1b9cb Don't expect logged properties files in source archives 2025-01-23 11:14:20 +00:00
Asger F
fcb8cac930 Ruby: resolve inserted TODOs 2025-01-23 11:48:46 +01:00
Michael Nebel
c38ad4acff C#: Add data flow tests for implicit index usage. 2025-01-23 11:18:24 +01:00
Michael Nebel
0430a9ee3f C#: Add test for implicit index usage. 2025-01-23 10:45:00 +01:00
Asger F
1c136e3cd0 Ruby: rerun patch query after bugfix 2025-01-23 10:33:58 +01:00
Asger F
dba76a0e4d JS: Rerun patch query after bugfix 2025-01-23 10:31:32 +01:00
Jaroslav Lobačevski
329ed5223a Update actions/ql/lib/change-notes/2025-01-22-version.md
Co-authored-by: Rasmus Wriedt Larsen <rasmuswriedtlarsen@gmail.com>
2025-01-23 10:25:58 +01:00
Geoffrey White
9286596c1e Merge pull request #18530 from geoffw0/sourcemodels2
Rust: Convert source models to models-as-data
2025-01-23 09:08:26 +00:00
Paolo Tranquilli
e448bc62a7 Merge pull request #18566 from github/redsun82/swift-stop-dump-env
Swift: drop indisciminate printing of the env in debug logs
2025-01-23 10:00:52 +01:00
Simon Friis Vindum
66b6ae70c2 Rust: Change array element content type into a general collection
element type
2025-01-23 09:49:23 +01:00
Paolo Tranquilli
cf430da602 Rust/Swift: add integration tests checking env dumping 2025-01-23 09:15:54 +01:00
Paolo Tranquilli
5c31edd6cb Swift: drop indisciminate printing of the env 2025-01-23 08:31:21 +01:00
Owen Mansel-Chan
577d9eb286 Add change note 2025-01-22 22:59:32 +00:00
Owen Mansel-Chan
f055a78abf Copy "Parameter" tests to ExternalValueFlow 2025-01-22 22:59:30 +00:00
Owen Mansel-Chan
08ea30ea8d Fix bug in InterpretNode.asCallable
It was only working for summarized callables.
2025-01-22 22:59:28 +00:00
Owen Mansel-Chan
8e481bdb7e Add failing tests for "Parameter" in MaD 2025-01-22 22:49:22 +00:00
Jaroslav Lobačevski
e242190e04 Fix rlespinasse/github-slug-action upper bound 2025-01-22 22:22:21 +00:00
Erik Krogh Kristensen
4bd4937e65 Merge pull request #18547 from erik-krogh/suffixCheck
JS: Fix FPs with js/incorrect-suffix-check
2025-01-22 21:13:27 +01:00
Dave Bartolomeo
546a4971d5 Merge pull request #18563 from mrecachinas/patch-1
Change includes paths in autobuild.sh
2025-01-22 14:51:19 -05:00
Dave Bartolomeo
1c9d7b3402 Add powershell versions 2025-01-22 12:23:58 -05:00
Michael Recachinas
661e9da799 Add comment for why we're adding reusable workflows to the autobuild script 2025-01-22 12:11:51 -05:00
Michael Recachinas
7c12da4f48 Include reusable workflows directories in autobuild script 2025-01-22 12:07:01 -05:00
Jaroslav Lobačevski
ab20625b8f Fix the upper bound of the range 2025-01-22 17:30:19 +01:00
Jaroslav Lobačevski
55df2b4302 Change notes 2025-01-22 17:30:19 +01:00
Jaroslav Lobačevski
83d13c6f20 Fix lower range for known vulnerable actions 2025-01-22 17:30:19 +01:00
Michael Recachinas
b2de1e9b9e Change includes paths in autobuild.sh 2025-01-22 11:25:21 -05:00
Óscar San José
ebb10e3318 Merge pull request #18525 from github/oscarsj/upgrade-workflows-to-ubuntu24
Upgrade workflows to ubuntu-24
2025-01-22 16:50:48 +01:00
Simon Friis Vindum
9547a5cd27 Shared: Update basic block documentation and make minor tweaks 2025-01-22 16:07:30 +01:00
Óscar San José
4fb2273153 Remove .devcontainer/swift files, as testing swift on ubuntu 24 is not supported 2025-01-22 15:55:56 +01:00
Edward Minnix III
28f307390a Merge pull request #18494 from egregius313/egregius313/csharp/blazor/buildless-integration-test
C#: Blazor: `build-mode: none` integration test
2025-01-22 09:11:48 -05:00
Paolo Tranquilli
bd2e8195c2 Rust: Apply suggestions from code review
Co-authored-by: Simon Friis Vindum <simonfv@gmail.com>
2025-01-22 14:56:56 +01:00
Paolo Tranquilli
429365f602 Merge pull request #18509 from github/redsun82/swift-ios
Swift: add skeleton iOS app for integration testing
2025-01-22 14:55:23 +01:00
Jeroen Ketema
68ec4b66e7 C++: Fix join-order problem found on IncorrectCheckScanf.ql
Before on `silentearth/curl2`:

```
Evaluated recursive predicate IRGuards::Cached::unary_compares_eq/5#7aa979d8@e3b01fca in 26109ms on iteration 2 (delta size: 4020).
Evaluated relational algebra for predicate IRGuards::Cached::unary_compares_eq/5#7aa979d8@e3b01fca on iteration 2 running pipeline standard with tuple counts:
                 0   ~0%    {5} r1 = JOIN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` WITH `IRGuards::Cached::BuiltinExpectCallValueNumber.getCondition/0#dispred#9b2b5da2_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4

           1835651   ~2%    {5} r2 = SCAN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` OUTPUT In.4, In.0, In.1, In.2, In.3
           1832833   ~0%    {5}    | JOIN WITH `IRGuards::AbstractValue.getDualValue/0#dispred#bfb2631d` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
              3996   ~0%    {5}    | JOIN WITH `IRGuards::Cached::LogicalNotValueNumber.getUnary/0#dispred#b2251f1f_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4

           1835651   ~7%    {5} r3 = SCAN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` OUTPUT In.1, In.0, In.2, In.3, In.4
           1835651   ~1%    {5}    | JOIN WITH `Operand::Operand.getAnyDef/0#dispred#8dbe2fb8` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4

                 0   ~0%    {5} r4 = JOIN r3 WITH project#Instruction::PointerSubInstruction#0d109780 ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4
                 0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
                 0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
                 0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 + In.6) KEEPING 5

                23  ~76%    {5} r5 = JOIN r3 WITH Instruction::SubInstruction#fc619901 ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4
                22  ~56%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
                22  ~56%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
                 0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 + In.6) KEEPING 5

                 0   ~0%    {5} r6 = JOIN r3 WITH project#Instruction::PointerAddInstruction#5233892c ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4

                 0   ~0%    {6} r7 = JOIN r6 WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
                 0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
                 0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

                 0   ~0%    {6} r8 = JOIN r6 WITH `Instruction::BinaryInstruction.getRightOperand/0#dispred#9ca710da` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
                 0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeft/0#dispred#5cf78406` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
                 0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

                12  ~49%    {5} r9 = JOIN r3 WITH Instruction::AddInstruction#7f8fb455 ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4

                12  ~49%    {6} r10 = JOIN r9 WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
                12  ~71%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
                 0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

                12  ~49%    {6} r11 = JOIN r9 WITH `Instruction::BinaryInstruction.getRightOperand/0#dispred#9ca710da` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
                12  ~49%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeft/0#dispred#5cf78406` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
                 0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

                 0   ~0%    {5} r12 = JOIN r1 WITH `IRGuards::Cached::BuiltinExpectCallValueNumber.getAUse/0#dispred#23233591` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
                 0   ~0%    {6}    | JOIN WITH `IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.2

                 0   ~0%    {6} r13 = JOIN r12 WITH project#IRGuards::Cached::CompareNEValueNumber#1aeec1bd ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.0, Lhs.4

                 0   ~0%    {6} r14 = JOIN r12 WITH project#IRGuards::Cached::CompareEQValueNumber#994b6833 ON FIRST 1 OUTPUT Lhs.4, Lhs.1, Lhs.2, Lhs.3, Lhs.0, Lhs.5
                 0   ~0%    {6}    | JOIN WITH `IRGuards::AbstractValue.getDualValue/0#dispred#bfb2631d_10#join_rhs` ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1

                 0   ~0%    {6} r15 = r13 UNION r14
                 0   ~0%    {7}    | JOIN WITH `Operand::Operand.getAnyDef/0#dispred#8dbe2fb8` ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                 0   ~0%    {7}    | REWRITE WITH Out.1 := 0
                 0   ~0%    {5}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 2 OUTPUT Lhs.5, Lhs.2, Lhs.3, Lhs.4, Lhs.6

        1901910478   ~1%    {5} r16 = JOIN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` WITH `ValueNumberingInternal::tvalueNumber/1#f03b58f9_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
        1902015678   ~4%    {5}    | JOIN WITH `Operand::Operand.getDef/0#dispred#a70e8079_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
        1902015678   ~3%    {6}    | JOIN WITH `Operand::Operand.getDef/0#dispred#a70e8079` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.0
        1901976207   ~4%    {5}    | JOIN WITH `IRGuards::Cached::isConvertedBool/1#9a130da2` ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.4
                74  ~10%    {6}    | JOIN WITH `IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.2

                54  ~10%    {6} r17 = JOIN r16 WITH project#IRGuards::Cached::CompareNEValueNumber#1aeec1bd ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.0, Lhs.4

                20   ~0%    {6} r18 = JOIN r16 WITH project#IRGuards::Cached::CompareEQValueNumber#994b6833 ON FIRST 1 OUTPUT Lhs.4, Lhs.1, Lhs.2, Lhs.3, Lhs.0, Lhs.5
                20   ~0%    {6}    | JOIN WITH `IRGuards::AbstractValue.getDualValue/0#dispred#bfb2631d` ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1

                74   ~5%    {6} r19 = r17 UNION r18
                74   ~5%    {7}    | JOIN WITH `Operand::Operand.getDef/0#dispred#a70e8079` ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
                74   ~4%    {7}    | REWRITE WITH Out.1 := 0
                66   ~0%    {5}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 2 OUTPUT Lhs.5, Lhs.2, Lhs.3, Lhs.4, Lhs.6

              4062   ~0%    {5} r20 = r1 UNION r2 UNION r4 UNION r5 UNION r7 UNION r8 UNION r10 UNION r11 UNION r15 UNION r19
              4020   ~0%    {5}    | AND NOT `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev`(FIRST 5)
                            return r20
```

After:
```
[2025-01-22 14:50:44] Evaluated non-recursive predicate _IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs_IRGuards::Cached::__#join_rhs@25668753 in 36ms (size: 47).
Evaluated relational algebra for predicate _IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs_IRGuards::Cached::__#join_rhs@25668753 with tuple counts:
        285951  ~0%    {4} r1 = JOIN `IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs` WITH `Operand::Operand.getDef/0#dispred#a70e8079` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0, Lhs.2
            47  ~2%    {3}    | JOIN WITH `IRGuards::Cached::isConvertedBool/1#9a130da2` ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.3
            47  ~0%    {3}    | JOIN WITH `Operand::Operand.getDef/0#dispred#a70e8079` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
            47  ~0%    {3}    | JOIN WITH `ValueNumberingInternal::tvalueNumber/1#f03b58f9` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
                       return r1
                       Evaluated recursive predicate IRGuards::Cached::unary_compares_eq/5#7aa979d8@a808bbfb in 63ms on iteration 2 (delta size: 4020).
Evaluated relational algebra for predicate IRGuards::Cached::unary_compares_eq/5#7aa979d8@a808bbfb on iteration 2 running pipeline standard with tuple counts:
              0   ~0%    {5} r1 = JOIN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` WITH `IRGuards::Cached::BuiltinExpectCallValueNumber.getCondition/0#dispred#9b2b5da2_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4

        1881864  ~10%    {5} r2 = SCAN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` OUTPUT In.4, In.0, In.1, In.2, In.3
        1879046   ~4%    {5}    | JOIN WITH `IRGuards::AbstractValue.getDualValue/0#dispred#bfb2631d` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
           3986   ~0%    {5}    | JOIN WITH `IRGuards::Cached::LogicalNotValueNumber.getUnary/0#dispred#b2251f1f_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4

        1881864  ~11%    {5} r3 = SCAN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` OUTPUT In.1, In.0, In.2, In.3, In.4
        1881864   ~2%    {5}    | JOIN WITH `Operand::Operand.getAnyDef/0#dispred#8dbe2fb8` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4

              0   ~0%    {5} r4 = JOIN r3 WITH project#Instruction::PointerSubInstruction#0d109780 ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4
              0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
              0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
              0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 + In.6) KEEPING 5

             16  ~14%    {5} r5 = JOIN r3 WITH Instruction::SubInstruction#fc619901 ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4
             16  ~14%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
             16  ~14%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
              0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 + In.6) KEEPING 5

              0   ~0%    {5} r6 = JOIN r3 WITH project#Instruction::PointerAddInstruction#5233892c ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4

              0   ~0%    {6} r7 = JOIN r6 WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
              0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
              0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

              0   ~0%    {6} r8 = JOIN r6 WITH `Instruction::BinaryInstruction.getRightOperand/0#dispred#9ca710da` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
              0   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeft/0#dispred#5cf78406` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
              0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

              8   ~0%    {5} r9 = JOIN r3 WITH Instruction::AddInstruction#7f8fb455 ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4

              8   ~0%    {6} r10 = JOIN r9 WITH `Instruction::BinaryInstruction.getLeftOperand/0#dispred#c8432d08` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
              8   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getRight/0#dispred#1f78e436` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
              0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

              8   ~0%    {6} r11 = JOIN r9 WITH `Instruction::BinaryInstruction.getRightOperand/0#dispred#9ca710da` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1
              8   ~0%    {6}    | JOIN WITH `Instruction::BinaryInstruction.getLeft/0#dispred#5cf78406` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 1 OUTPUT Lhs.1, Lhs.5, _, Lhs.3, Lhs.4, Lhs.2, Rhs.1
              0   ~0%    {5}    | REWRITE WITH Out.2 := (In.5 - In.6) KEEPING 5

             70   ~6%    {6} r12 = JOIN `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev_delta` WITH `_IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs_IRGuards::Cached::__#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Rhs.2, Lhs.1, Lhs.2, Lhs.3, Lhs.4

             50   ~2%    {6} r13 = JOIN r12 WITH project#IRGuards::Cached::CompareNEValueNumber#1aeec1bd ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2, Lhs.3, Lhs.4, Lhs.5

             20   ~0%    {6} r14 = JOIN r12 WITH project#IRGuards::Cached::CompareEQValueNumber#994b6833 ON FIRST 1 OUTPUT Lhs.5, Lhs.0, Lhs.1, Lhs.2, Lhs.3, Lhs.4
             20   ~0%    {6}    | JOIN WITH `IRGuards::AbstractValue.getDualValue/0#dispred#bfb2631d` ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.3, Lhs.4, Lhs.5, Rhs.1

             70   ~0%    {6} r15 = r13 UNION r14
             70   ~1%    {7}    | JOIN WITH `Operand::Operand.getDef/0#dispred#a70e8079` ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
             70   ~0%    {7}    | REWRITE WITH Out.1 := 0
             66   ~2%    {5}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 2 OUTPUT Lhs.2, Lhs.3, Lhs.4, Lhs.5, Lhs.6

              0   ~0%    {5} r16 = JOIN r1 WITH `IRGuards::Cached::BuiltinExpectCallValueNumber.getAUse/0#dispred#23233591` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4
              0   ~0%    {6}    | JOIN WITH `IRGuards::Cached::CompareValueNumber.hasOperands/2#dispred#7aa36763_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.2

              0   ~0%    {6} r17 = JOIN r16 WITH project#IRGuards::Cached::CompareNEValueNumber#1aeec1bd ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.0, Lhs.4

              0   ~0%    {6} r18 = JOIN r16 WITH project#IRGuards::Cached::CompareEQValueNumber#994b6833 ON FIRST 1 OUTPUT Lhs.4, Lhs.1, Lhs.2, Lhs.3, Lhs.0, Lhs.5
              0   ~0%    {6}    | JOIN WITH `IRGuards::AbstractValue.getDualValue/0#dispred#bfb2631d_10#join_rhs` ON FIRST 1 OUTPUT Lhs.5, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1

              0   ~0%    {6} r19 = r17 UNION r18
              0   ~0%    {7}    | JOIN WITH `Operand::Operand.getAnyDef/0#dispred#8dbe2fb8` ON FIRST 1 OUTPUT Rhs.1, _, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5
              0   ~0%    {7}    | REWRITE WITH Out.1 := 0
              0   ~0%    {5}    | JOIN WITH `IRGuards::Cached::int_value/1#f9d7a458` ON FIRST 2 OUTPUT Lhs.5, Lhs.2, Lhs.3, Lhs.4, Lhs.6

           4052   ~1%    {5} r20 = r1 UNION r2 UNION r4 UNION r5 UNION r7 UNION r8 UNION r10 UNION r11 UNION r15 UNION r19
           4020   ~1%    {5}    | AND NOT `IRGuards::Cached::unary_compares_eq/5#7aa979d8#prev`(FIRST 5)
                         return r20
```
2025-01-22 14:54:24 +01:00
Jonas Jensen
773a98a9eb Merge pull request #18340 from jbj/diff-informed-getASelectedLocation
Java: make more queries diff-informed with getASelectedLocation
2025-01-22 14:25:33 +01:00
Óscar San José
769c627022 Revert updating .net version 2025-01-22 12:28:31 +01:00
Óscar San José
208551c9f2 Update test expected strings for net9 2025-01-22 12:10:02 +01:00
Paolo Tranquilli
ea47d6b6ba Merge branch 'main' into redsun82/swift-ios 2025-01-22 12:06:43 +01:00
Asger F
051fa66af1 JS: Add change note 2025-01-22 11:49:48 +01:00
Óscar San José
82704c0426 Suggestions from PR 2025-01-22 11:31:25 +01:00
Anders Schack-Mulligen
5bfd22e60a Merge pull request #18552 from aschackmull/java/xss-regex-perf
Java: Improve performance of XSS regex.
2025-01-22 11:28:49 +01:00
Asger F
8771bf81b3 Mention view-component-input in docs and threat model grouping 2025-01-22 11:23:05 +01:00
Asger F
4161f455b8 Revert "Add view-component-input for testing"
This reverts commit 6954039a6d106e3611a0892972a979fd45310d1a.
2025-01-22 10:45:52 +01:00
Asger F
e5c0390972 Add view-component-input for testing 2025-01-22 10:45:50 +01:00
Asger F
d647c7b14d JS: Replace 'instanceof ClientSideRemoteFlowSource' 2025-01-22 10:45:49 +01:00
Asger F
3061d51b20 JS: Add ThreatModelSource#isCilentSideSource() 2025-01-22 10:45:48 +01:00
Asger F
327bdc0b02 JS: Use TypeScript types to restrict ViewComponentInputs in general 2025-01-22 10:45:47 +01:00
Asger F
b015c88c79 JS: Add view-component-input threat model 2025-01-22 10:45:46 +01:00
Jeroen Ketema
7fa9167ef9 Merge pull request #18553 from jketema/preprocblock
C++: Update `PreprocBlock.qll` QLDoc and add C++23 test
2025-01-22 10:31:51 +01:00
erik-krogh
04bbd5919a add change-note 2025-01-22 10:16:11 +01:00
Geoffrey White
24b35ed5a4 Rust: Fixup .expected after merge. 2025-01-22 09:14:31 +00:00
Geoffrey White
b9e523a4b2 Merge branch 'main' into sourcemodels2 2025-01-22 09:10:47 +00:00
Asger F
01f7d45e2d JS: Add meta query for reporting threat model sources 2025-01-22 09:51:32 +01:00
Asger F
30d192a1db JS: Move getName() to a shared location 2025-01-22 09:51:32 +01:00
Asger F
f845ac1dd8 Merge pull request #18550 from asgerf/js/vue-ts-notsconfig
JS: Avoid inconsistent DB when embedded TS has no associated tsconfig.json
2025-01-22 09:51:06 +01:00
Simon Friis Vindum
e5f419ce75 Shared: Define getNode inside cached module 2025-01-22 09:45:02 +01:00
Ed Minnix
7ed2b9ceeb fix Files text 2025-01-21 21:16:28 -05:00
Ed Minnix
b510107f39 Ignore DB-CHECK test 2025-01-21 17:27:26 -05:00
Erik Krogh Kristensen
f183bc9a65 Merge pull request #18557 from erik-krogh/ts57
JS: update missing TS support doc
2025-01-21 23:13:31 +01:00
erik-krogh
28dd2ca83c update missing TS support doc 2025-01-21 22:27:57 +01:00
Mathias Vorreiter Pedersen
a1449bf0bd C++: Accept test changes. 2025-01-21 20:43:54 +00:00
Mathias Vorreiter Pedersen
12666848c0 C++: Fix conflation in 'Pure' models. 2025-01-21 20:43:53 +00:00
Mathias Vorreiter Pedersen
503f018600 C++: Add taint test with false flow from conflation. 2025-01-21 20:43:52 +00:00
Jaroslav Lobačevski
6d94168ad9 gh view 2025-01-21 17:15:41 +00:00
Jeroen Ketema
442dad4ff9 C++: Update PreprocBlock.qll QLDoc and add C++23 test 2025-01-21 18:02:28 +01:00
Jeroen Ketema
91f6498e16 Merge pull request #18537 from jketema/elifdef
C++: Support `#elifdef`, `#elifndef`, and MSVC's `#import`
2025-01-21 16:44:27 +01:00
Owen Mansel-Chan
b4c8390991 Merge pull request #18137 from owen-mc/java/jax-rs-annotation-inheritance
Java: Update JAX-RS annotation inheritance
2025-01-21 15:26:47 +00:00
Jeroen Ketema
ac18e7494f C++: Update stats file 2025-01-21 16:14:29 +01:00
Jeroen Ketema
32ff8dc0f6 C++: Add upgrade and downgrade scripts 2025-01-21 16:14:27 +01:00
Jeroen Ketema
e0acf262d5 C++: Add change note 2025-01-21 16:14:18 +01:00
Jeroen Ketema
9fd95381dc C++: Support #elifdef #elifndef, and MSVC's #import 2025-01-21 16:14:16 +01:00
Jeroen Ketema
a0ef2888c7 C++: Add more preprocessor tests 2025-01-21 16:14:13 +01:00
Chris Smowton
531e637009 Merge pull request #18551 from github/post-release-prep/codeql-cli-2.20.2
Post-release preparation for codeql-cli-2.20.2
2025-01-21 14:21:56 +00:00
github-actions[bot]
ebe9088458 Post-release preparation for codeql-cli-2.20.2 2025-01-21 13:58:45 +00:00
Chris Smowton
9fa1ad9d8d Fix changelog typos 2025-01-21 13:58:44 +00:00
github-actions[bot]
f21784db9d Release preparation for version 2.20.2 2025-01-21 13:58:43 +00:00
Chris Smowton
fb140404b6 Revert "Release preparation for version 2.20.2" 2025-01-21 13:58:38 +00:00
Anders Schack-Mulligen
0f96e79264 Java: Improve performance of XSS regex. 2025-01-21 14:41:08 +01:00
Asger F
0b9187d76c JS: Add change note 2025-01-21 14:17:35 +01:00
Asger F
a9d21e70c2 JS: Bump extractor version string 2025-01-21 14:04:12 +01:00
Asger F
dd55460d7f JS: Update test output 2025-01-21 14:03:30 +01:00
Asger F
784d07c95b JS: Ensure embedded TypeScript is extracted even when not associated with a tsconfig 2025-01-21 14:02:32 +01:00
Asger F
f3b52adde6 JS: Add test showing DB-CHECK failure 2025-01-21 14:02:17 +01:00
Chris Smowton
02069b63ba Merge pull request #18549 from github/release-prep/2.20.2
Release preparation for version 2.20.2
2025-01-21 12:59:07 +00:00
Chris Smowton
ffa4e3b6d8 Fix changelog typos 2025-01-21 12:51:15 +00:00
github-actions[bot]
ec70b80a0a Release preparation for version 2.20.2 2025-01-21 12:47:53 +00:00
Michael Nebel
43bc3e5d99 Merge pull request #17911 from michaelnebel/csharp/deprecateexperimental
C#: Deprecate experimental queries.
2025-01-21 13:29:38 +01:00
Michael Nebel
93562950bb C#: Add change-note. 2025-01-21 13:14:27 +01:00
Michael Nebel
0932a0edb5 C#: Updated expected test output. 2025-01-21 13:14:26 +01:00
Michael Nebel
00de19ce13 C#: Deprecate experimental queries and libraries. 2025-01-21 13:14:24 +01:00
Chris Smowton
32fb6c4660 Merge pull request #18548 from github/revert-18539-release-prep/2.20.2
Revert "Release preparation for version 2.20.2"
2025-01-21 12:05:49 +00:00
Chris Smowton
90c396b46a Revert "Release preparation for version 2.20.2" 2025-01-21 12:02:52 +00:00
Jonas Jensen
eacc600b29 Java: annotate a query as not selecting sources
This is for performance in diff-informed mode but also for avoiding
spurious entries in the code scanning timeline and alert list.
2025-01-21 12:56:06 +01:00
Geoffrey White
ab9ab0e22f Merge pull request #18536 from GeekMasher/rust-postgres
Rust: Add Postgres crate Models
2025-01-21 11:17:15 +00:00
Owen Mansel-Chan
7b071ba91e Merge pull request #18544 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-01-21 10:04:15 +00:00
Mathew Payne
2b74061167 fix(rust): Update TaintFlowStep 2025-01-21 09:58:33 +00:00
Owen Mansel-Chan
19df33fb43 Remove another erroneous comment
Co-authored-by: Jami <57204504+jcogs33@users.noreply.github.com>
2025-01-21 09:25:37 +00:00
erik-krogh
2f1bd75ee9 remove redundant cast 2025-01-21 09:51:14 +01:00
erik-krogh
17afab7d0f support that two indexOf() calls use the same string-concatenation in getAnEquivalentIndexOfCall() 2025-01-21 09:43:57 +01:00
erik-krogh
d5529e3a7e ensure an indexOf call is equivalent with itself. (getAUse() is used later to find matching indexOf calls) 2025-01-21 09:42:30 +01:00
erik-krogh
905d904543 add a few failing tests 2025-01-21 09:40:24 +01:00
Paolo Tranquilli
de020f60e2 Merge branch 'main' into redsun82/swift-ios 2025-01-21 08:26:55 +01:00
github-actions[bot]
35462a4d09 Add changed framework coverage reports 2025-01-21 00:20:17 +00:00
Chris Smowton
fc841023c6 Merge pull request #18541 from github/post-release-prep/codeql-cli-2.20.2
Post-release preparation for codeql-cli-2.20.2
2025-01-20 22:11:14 +00:00
Owen Mansel-Chan
da86668cfd (Multiple languages) Use slightly clearer wording 2025-01-20 22:10:33 +00:00
Owen Mansel-Chan
7ff9fcb445 (Multiple languages) Simplify taint tracking example 2025-01-20 22:10:31 +00:00
Owen Mansel-Chan
d46899d37b (Multiple languages) Be clearer about which query is being discussed 2025-01-20 22:10:29 +00:00
Owen Mansel-Chan
6d9daec514 (Multiple languages) Use active voice 2025-01-20 22:10:27 +00:00
Owen Mansel-Chan
4585c8caf2 (Multiple languages) Clarify defn of barriers 2025-01-20 22:10:25 +00:00
Owen Mansel-Chan
d1d6b520e1 (Multiple languages) "global data flow paths" 2025-01-20 22:10:24 +00:00
Owen Mansel-Chan
ed44db71d2 Explain StringOps::Formatting::Range, with a link 2025-01-20 22:10:22 +00:00
Owen Mansel-Chan
6fa18be0cc Fix QLDocs 2025-01-20 22:07:01 +00:00
Owen Mansel-Chan
d472dfe4a3 Fix QLDocs 2025-01-20 21:36:30 +00:00
github-actions[bot]
fbb7f0a0c6 Post-release preparation for codeql-cli-2.20.2 2025-01-20 21:11:14 +00:00
Chris Smowton
cf9d773de0 Fix change-note typo 2025-01-20 21:11:13 +00:00
github-actions[bot]
a0512a50f2 Release preparation for version 2.20.2 2025-01-20 21:11:12 +00:00
Nick Rolfe
3e5707154a Merge pull request #18542 from github/nickrolfe/java-stats
Java: fix stats for databaseMetadata relation
2025-01-20 17:28:51 +00:00
Nick Rolfe
6b5974a372 Java: fix stats for databaseMetadata relation 2025-01-20 17:02:25 +00:00
Joe Farebrother
d248fbfe57 Merge pull request #18301 from joefarebrother/python-model-missing-builtins
Python: Add models for builtins `map`, `filter`, `zip`, and `enumerate`.
2025-01-20 16:39:37 +00:00
Jaroslav Lobačevski
88529d42d0 Remove comparison 2025-01-20 16:28:35 +00:00
Owen Mansel-Chan
489a87fbae Small QL improvement 2025-01-20 16:22:37 +00:00
Owen Mansel-Chan
f928e4cc87 Improve tests 2025-01-20 16:22:35 +00:00
Owen Mansel-Chan
4e59ac4819 Merge pull request #14873 from Kwstubbs/go-rs-cors
Go: Add Rs Cors Support
2025-01-20 16:16:50 +00:00
Paolo Tranquilli
c47177fd80 Merge branch 'main' into redsun82/swift-ios 2025-01-20 16:43:49 +01:00
Ian Lynagh
66777e6282 Merge pull request #18450 from igfoo/igfoo/kot2.1.20b1
Kotlin: Add support for 2.1.20-Beta1
2025-01-20 15:32:19 +00:00
Nick Rolfe
3846be450d Merge pull request #18529 from github/nickrolfe/java-databaseMetadata
Java: add `databaseMetadata` relation to dbscheme
2025-01-20 15:25:01 +00:00
Jaroslav Lobačevski
facceb6c2d Change note 2025-01-20 15:08:12 +00:00
Chris Smowton
411f3cd2f5 Merge pull request #17701 from smowton/smowton/feature/read-fields-before-executetemplate
Go: `template/text.Template` execution methods: support reading arbitrary content
2025-01-20 15:01:06 +00:00
Mathew Payne
7edb397de1 Merge branch 'main' into rust-postgres 2025-01-20 15:01:00 +00:00
Jaroslav Lobačevski
da9d612a47 Improve bash support 2025-01-20 14:59:30 +00:00
Chris Smowton
f1014abee6 Merge pull request #18539 from github/release-prep/2.20.2
Release preparation for version 2.20.2
2025-01-20 14:48:38 +00:00
Chris Smowton
7aab08810e Fix change-note typo 2025-01-20 14:47:40 +00:00
github-actions[bot]
ec1ca5dc25 Release preparation for version 2.20.2 2025-01-20 14:44:12 +00:00
Ian Lynagh
cec503eecd Kotlin: Fix build with 2.1.20-Beta1 2025-01-20 14:31:58 +00:00
Ian Lynagh
4e798b3db4 Kotlin: Add 2.1.20-Beta1 2025-01-20 14:31:57 +00:00
Ian Lynagh
ff328d6c04 Kotlin: Add 2.1.20-Beta1 deps 2025-01-20 14:31:57 +00:00
Paolo Tranquilli
af361ae245 Merge branch 'main' into redsun82/swift-ios 2025-01-20 14:57:35 +01:00
Geoffrey White
4cf0c8fee1 Merge pull request #18535 from GeekMasher/rust-sql-injection
Rust: Add Models As Data Sinks for SQL Injection
2025-01-20 13:37:33 +00:00
Simon Friis Vindum
9a4bf7513d Shared: Add more detailed documentation for immediatelyControls 2025-01-20 14:20:48 +01:00
Mathias Vorreiter Pedersen
35dbb6f370 Merge pull request #18531 from MathiasVP/remove-conflation-from-out-nodes
C++: Remove pointer/pointee conflation from parameter nodes
2025-01-20 13:05:15 +00:00
Paolo Tranquilli
e3e9a15525 Merge branch 'main' into redsun82/swift-ios 2025-01-20 13:53:47 +01:00
Simon Friis Vindum
f7e90497bc Shared: Implement getScope in BB module instead of CFG module 2025-01-20 13:44:51 +01:00
Mathias Vorreiter Pedersen
ed651294b6 Merge branch 'main' into remove-conflation-from-out-nodes 2025-01-20 12:42:26 +00:00
Anders Schack-Mulligen
28d0d65c41 Merge pull request #18515 from aschackmull/dataflow/simplify-rev-throughflow
Dataflow: Simplify the call-edge join in reverse through-flow.
2025-01-20 13:37:42 +01:00
Simon Friis Vindum
62a459d3d7 Shared: Address basic block review comments 2025-01-20 13:33:27 +01:00
Rasmus Wriedt Larsen
d7df8d798b Merge pull request #18519 from github/dbartol/actions-query-list
Add `actions` queries to generated list
2025-01-20 13:32:12 +01:00
Mathew Payne
39239fbeef fix(rust): Update formatting 2025-01-20 12:25:12 +00:00
Asger F
0097e49288 Merge pull request #18337 from asgerf/rb/diff-informed
Ruby: enable diff-informed data flow queries
2025-01-20 13:21:04 +01:00
Asger F
f31900378b Merge pull request #18528 from asgerf/jss/diff-informed
JS: Enable diff-informed queries
2025-01-20 13:20:36 +01:00
Mathew Payne
cba1c58dd7 feat(rust): Add ModelsAsDataSinks for SQL Injection 2025-01-20 12:14:34 +00:00
Mathew Payne
121f0584e4 feat(rust): Add models + tests 2025-01-20 12:06:09 +00:00
Mathew Payne
04ee557b31 feat(rust): Add initial Postgres support + tests 2025-01-20 12:01:23 +00:00
Jeroen Ketema
1b2d7bcbfa Merge pull request #18534 from jketema/uncomment
C++: Uncomment more preprocessor tests
2025-01-20 12:59:20 +01:00
Jeroen Ketema
4b85ea3bc6 Merge pull request #18502 from jketema/consteval
C++: Support `if consteval` and `if ! consteval`
2025-01-20 12:49:02 +01:00
Jeroen Ketema
1cbd57e2b9 C++: Uncomment more preprocessor tests 2025-01-20 11:48:01 +01:00
Asger F
29b829bf4a Revert "Add dummy extension with an empty diff"
This reverts commit 772c3363d2.
2025-01-20 11:20:57 +01:00
Asger F
683ebcaf16 Revert "JS: Add dummy extension with an empty diff"
This reverts commit 6e9b95d4e85f4829e788400575570bdb65eda6f6.
2025-01-20 11:20:35 +01:00
Asger F
a948915bb0 JS: Add dummy extension with an empty diff 2025-01-20 11:20:33 +01:00
Asger F
7c29ea9dda JS: Update ExternalAPIUsedwithUntrustedData 2025-01-20 11:20:32 +01:00
Asger F
ecbd7983ba JS: Update DifferentKindsComparisonBypassQuery.qll 2025-01-20 11:20:31 +01:00
Asger F
29da1fb6c8 JS: Update ConditionalBypassQuery.qll 2025-01-20 11:20:30 +01:00
Asger F
8fe622f572 JS: Update PrototypePollutingFunction.ql 2025-01-20 11:20:29 +01:00
Asger F
fd763a0883 JS: Auto-patch diff informed queries 2025-01-20 11:20:27 +01:00
Jeroen Ketema
a9e0f20861 C++: Simplify consteval if to be just a single class with an isNot predicate 2025-01-20 11:20:11 +01:00
Paolo Tranquilli
f66ea5e20b Merge branch 'main' into redsun82/swift-ios 2025-01-20 10:57:04 +01:00
Michael Nebel
ef034bce4e Merge pull request #18508 from michaelnebel/csharp/implicitinheritedtostring
C#: Also syntheize calls to inherited `ToString`.
2025-01-20 10:51:22 +01:00
Jeroen Ketema
a74189f6fa Update cpp/ql/lib/change-notes/2024-01-16-consteval-if.md
Co-authored-by: Calum Grant <42069085+calumgrant@users.noreply.github.com>
2025-01-20 10:43:25 +01:00
Jeroen Ketema
378f0368af Update cpp/downgrades/1aa71a4a687fc93f807d4dfeeef70feceeced242/stmts.ql 2025-01-20 10:43:00 +01:00
Geoffrey White
d970fe7768 Rust: remote-source -> remote. 2025-01-20 09:20:44 +00:00
Michael Nebel
75a80f2a36 Merge pull request #18520 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-01-20 09:52:30 +01:00
Kevin Stubbings
217bc74278 Fix documentation 2025-01-19 22:43:14 -08:00
github-actions[bot]
00dca29216 Add changed framework coverage reports 2025-01-20 00:21:01 +00:00
Mathias Vorreiter Pedersen
d1bb5970ce Merge branch 'main' into remove-conflation-from-out-nodes 2025-01-18 18:05:22 +00:00
Mathias Vorreiter Pedersen
d661158fed C++: Accept query test changes. 2025-01-18 18:04:40 +00:00
Mathias Vorreiter Pedersen
8de7d4e8ef C++: Accept test changes. 2025-01-18 02:11:52 +00:00
Mathias Vorreiter Pedersen
2448475141 C++: Ensure that 'argumentOf' does not map to multiple argument positions. 2025-01-18 02:11:50 +00:00
Geoffrey White
d6c5c00ca9 Rust: Autoformat. 2025-01-17 21:16:02 +00:00
Mathias Vorreiter Pedersen
9970f7837b C++: Add pointer/pointee conflation test. 2025-01-17 21:03:44 +00:00
Jeroen Ketema
d8b1d00905 Merge pull request #18516 from jketema/preproc-1
C++: Uncomment preprocessor test cases and add addition `#if` test case
2025-01-17 20:41:23 +01:00
Kevin Stubbings
e1c601dc52 oops 2025-01-17 10:18:59 -08:00
Geoffrey White
2d0c73acfe Merge pull request #18501 from geoffw0/rustmetrics
Rust: More metrics for tracking taint.
2025-01-17 16:15:58 +00:00
Mathias Vorreiter Pedersen
10608bce87 Merge pull request #18526 from MathiasVP/negated-conjunctions-2
C++: Guard conditions from simple boolean identities
2025-01-17 16:08:43 +00:00
Nick Rolfe
64f33955b5 Java: add databaseMetadata to dbscheme 2025-01-17 15:18:07 +00:00
Dave Bartolomeo
3be08e369a Merge branch 'main' into dbartol/actions-query-list 2025-01-17 10:03:42 -05:00
docs-bot
8b5bed1a46 Add actions-security-experimental.qls 2025-01-17 09:47:44 -05:00
Paolo Tranquilli
2961749df6 Merge branch 'main' into redsun82/swift-ios 2025-01-17 15:28:36 +01:00
Paolo Tranquilli
8c54f51cc9 Swift: use xcode fixture 2025-01-17 15:27:20 +01:00
Simon Friis Vindum
e382ffc5d2 Shared: Address review comments for basic block library 2025-01-17 15:12:11 +01:00
Geoffrey White
0ce1a1bef0 Rust: Make the qldoc for hasher-input MAD sinks a bit clearer. 2025-01-17 13:52:29 +00:00
Geoffrey White
ce982143fb Rust: Remove the now empty files. 2025-01-17 13:52:27 +00:00
Geoffrey White
b8aa518931 Rust: Re-model reqwest sources using models-as-data. 2025-01-17 13:52:22 +00:00
Geoffrey White
1a000c39c9 Rust: Remove QL models for reqwest sources. 2025-01-17 13:42:27 +00:00
Geoffrey White
5a73e0bd09 Rust: Re-model std::env sources using models-as-data. 2025-01-17 13:39:04 +00:00
Mathias Vorreiter Pedersen
5c494c3f66 C++: Infer 'b1 = true' and 'b2 = true' from 'b1 && b2 = true', and infer 'b1 = false' and 'b2 = false' from 'b1 || b2 = false'. 2025-01-17 13:07:41 +00:00
Mathias Vorreiter Pedersen
eadccf27ef C++: Add test cases with missing inferred equalities. 2025-01-17 13:01:03 +00:00
Mathias Vorreiter Pedersen
d8ec6dd155 Merge pull request #18490 from MathiasVP/generate-int-to-bool-conversion-instructions-2
C++: Generate int-to-bool conversions in C code
2025-01-17 12:57:55 +00:00
Mathias Vorreiter Pedersen
21f9e6763d C++: Remove an unnecessary conjunct. 2025-01-17 12:44:22 +00:00
Asger F
772c3363d2 Add dummy extension with an empty diff 2025-01-17 13:44:11 +01:00
Simon Friis Vindum
53b63bed00 Actions: Implement added predicates in CFG instantiation 2025-01-17 13:31:00 +01:00
Paolo Tranquilli
17d2e4a338 Merge pull request #18500 from github/redsun82/rust-aggregate-workspaces
Rust: aggregate projects into workspaces
2025-01-17 13:23:07 +01:00
Asger F
871cdb014d Ruby: fix TODOs left by the patch query 2025-01-17 13:21:54 +01:00
Asger F
4dc632f742 Ruby: mass enable diff-informed data flow 2025-01-17 13:21:52 +01:00
Mathias Vorreiter Pedersen
b39a932ae1 C++: Update comment in the char pred of 'GuardConditionFromNotExpr'. 2025-01-17 12:17:47 +00:00
Simon Friis Vindum
4d05b6a0a5 Shared: Address review comments for shared basic block library 2025-01-17 13:11:49 +01:00
yoff
15a18315b7 Merge pull request #18524 from github/redsun82/python-match-fps
Python: add some more FP tests around match
2025-01-17 12:55:56 +01:00
Paolo Tranquilli
e6cb376ad8 Rust: fix typo 2025-01-17 12:31:48 +01:00
Paolo Tranquilli
bbaff8b199 Rust: cleanup workspace aggregation 2025-01-17 12:19:56 +01:00
Asger F
aa0b9559bf Merge pull request #18472 from asgerf/js/test-suite
JS: Port three tests to use the new post processing-based inline test expectations
2025-01-17 12:06:32 +01:00
Óscar San José
8ef4c2c229 Remove ImplicitUsings label, not supported by Net 6.0 2025-01-17 11:35:34 +01:00
Óscar San José
bb47f5b6de Update csharp target framework to net9.0 2025-01-17 11:33:43 +01:00
Geoffrey White
db4370d149 Rust: Remove QL models for std::env sources. 2025-01-17 10:28:46 +00:00
Óscar San José
b39bfdbb04 Upgrade workflows to ubuntu-24 2025-01-17 11:22:15 +01:00
Paolo Tranquilli
4ab5650979 Python: add some more FP tests around match 2025-01-17 11:01:00 +01:00
Asger F
0d52541f0a Merge pull request #18458 from asgerf/js/angular2-xss-through-dom
JS: Add Angular2 DOM sources
2025-01-17 10:55:14 +01:00
Asger F
2c65946684 JS: Add setOtherInput example 2025-01-17 10:29:03 +01:00
Asger F
e983e26f68 JS: Add example with safe field 2025-01-17 10:28:07 +01:00
Asger F
7b3727b874 JS: Add change note 2025-01-17 10:27:02 +01:00
Asger F
37062763ae JS: Bump extractor version string 2025-01-17 10:27:01 +01:00
Asger F
859783c08b JS: Support [(ngModel)] 2025-01-17 10:26:57 +01:00
Asger F
d55c68c1f1 JS: Add test case with [(ngModel)] 2025-01-17 10:24:16 +01:00
Asger F
97f5559e64 JS: Recognise form input from NgForm 2025-01-17 10:22:20 +01:00
Asger F
1ec3a62242 JS: Add test with NgForm.value 2025-01-17 10:20:59 +01:00
Asger F
d4daa21318 JS: Add DOM event sources in Angular2 model 2025-01-17 10:20:22 +01:00
Asger F
b8ba50a9ac JS: Add Angular test case in XssThroughDom 2025-01-17 10:12:42 +01:00
Asger F
6f46a34873 JS: Refactor domEventSource() into a Range class 2025-01-17 10:12:40 +01:00
Asger F
26a11efc5b Merge branch 'main' into js/test-suite 2025-01-17 10:09:06 +01:00
Anders Schack-Mulligen
498bfd2160 Merge pull request #18512 from aschackmull/dataflow/join-fix2
Dataflow: Another minor join-order fix
2025-01-17 09:09:47 +01:00
Jeroen Ketema
65a11e4e82 Merge pull request #18514 from jketema/objc
C++: Remove some Objective-C specific query code
2025-01-17 08:18:05 +01:00
docs-bot
01c4dd81f0 Add actions queries to generated list 2025-01-16 18:02:46 -05:00
Owen Mansel-Chan
45e9957bd9 Merge pull request #18438 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-01-16 22:58:57 +00:00
Jeroen Ketema
e6eaf5e6ac Merge pull request #18510 from jketema/noreturn
C++: Support more "noreturn" attributes in DefaultOptions
2025-01-16 19:09:44 +01:00
Mathias Vorreiter Pedersen
d5b31eb98c C++: Add more tests. 2025-01-16 17:25:39 +00:00
Jeroen Ketema
ff0d4955cf C++: Fix change note 2025-01-16 17:55:45 +01:00
Mathias Vorreiter Pedersen
d0bd6eb2eb C++: Remove the type restriction on 'GuardConditionFromNotExpr' since this class also applies to C++. 2025-01-16 16:55:10 +00:00
Mathias Vorreiter Pedersen
54faba21ba C++: Add more tests. 2025-01-16 16:44:29 +00:00
Owen Mansel-Chan
8bfab55df7 Merge branch 'main' into workflow/coverage/update 2025-01-16 16:38:06 +00:00
Geoffrey White
e5faf92bab Rust: Make QL-for-QL happy (part 2). 2025-01-16 16:16:02 +00:00
Geoffrey White
5f9e1c3788 Apply suggestions from code review
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-01-16 16:14:33 +00:00
Michael Nebel
bae29aeee4 C#: Update implications test expected output. 2025-01-16 16:57:33 +01:00
Michael Nebel
b6db1a34d6 C#: Also make the implicitToString test print the type declaring the ToString call being synthesized. 2025-01-16 16:57:32 +01:00
Michael Nebel
aab88da117 C#: Update test expected output. 2025-01-16 16:57:30 +01:00
Michael Nebel
260ce805d1 C#: Also support implicit inherited ToString synthetic calls. 2025-01-16 16:57:29 +01:00
Michael Nebel
ec256c3277 C#: More implicit ToString examples. 2025-01-16 16:57:27 +01:00
Jeroen Ketema
dca87f3727 C++: Uncomment preprocessor test cases and add addition #if test case
Note that the new test case shows that line splicing is not correctly handled
in the case of `#if`.
2025-01-16 16:42:35 +01:00
Simon Friis Vindum
8b20b0d334 Shared: Add change note for basic block addition 2025-01-16 16:36:52 +01:00
Simon Friis Vindum
c051eecfb4 Shared: Add shared basic block library 2025-01-16 16:36:45 +01:00
Anders Schack-Mulligen
20af2d5fe2 Dataflow: Fix poor join-order 2025-01-16 16:22:56 +01:00
Anders Schack-Mulligen
3ffc616179 Dataflow: Slight join improvement. 2025-01-16 16:22:55 +01:00
Anders Schack-Mulligen
f310780257 Dataflow: Simplify the call-edge join in reverse through-flow. 2025-01-16 16:07:24 +01:00
Owen Mansel-Chan
549baba330 Update docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst
Co-authored-by: Chris Smowton <smowton@github.com>
2025-01-16 15:03:40 +00:00
Mathias Vorreiter Pedersen
00a1978b0c C++: Add a guard condition test with an example of a negated less-than relation. 2025-01-16 14:57:08 +00:00
Mathias Vorreiter Pedersen
2076c1c51f C++: Add an copy of a (slightly modified) syntax-zoo test as an IR test. 2025-01-16 14:33:25 +00:00
Mathias Vorreiter Pedersen
6ba5f3e472 Merge branch 'main' into generate-int-to-bool-conversion-instructions-2 2025-01-16 14:28:50 +00:00
Paolo Tranquilli
1cf2274629 Merge branch 'main' into redsun82/swift-ios 2025-01-16 15:20:25 +01:00
Jeroen Ketema
aec151dce9 C++: Remove some Objective-C specific query code
We have not supported Objective-C for a long time.
2025-01-16 15:17:30 +01:00
Ed Minnix
91b6b3ff1f Fix FindOneAndReplace 2025-01-16 08:59:52 -05:00
Ed Minnix
b558119b51 Add depstubber line 2025-01-16 08:59:33 -05:00
Owen Mansel-Chan
26b8758108 Fix indentation in code block 2025-01-16 13:48:46 +00:00
Paolo Tranquilli
133e2696ac Merge pull request #18513 from asgerf/js/fix-flow-summary-spec
JS: Fix semantic merge conflict: Implement new signature members in StepInputSig
2025-01-16 14:47:42 +01:00
Asger F
bd2febcf00 JS: Implementing new signature members in StepInputSig 2025-01-16 13:38:08 +01:00
Jeroen Ketema
52eef7c4c2 C++: Fix typo in test 2025-01-16 13:19:54 +01:00
Asger F
1964b347c7 Merge branch 'main' into js/test-suite 2025-01-16 13:19:07 +01:00
Jeroen Ketema
d027e0c06b C++: Add change note 2025-01-16 13:12:20 +01:00
Paolo Tranquilli
8189a8669c Swift: add skeleton iOS app for integration testing 2025-01-16 13:07:39 +01:00
Owen Mansel-Chan
75424f3010 Update java data flow docs: two misc improvements
Copied from the C# equivalent.
2025-01-16 12:06:23 +00:00
Owen Mansel-Chan
037ce3d3df Update java data flow docs: Add 5 missing "import java"s 2025-01-16 12:05:42 +00:00
Owen Mansel-Chan
9785aac8be Update java data flow docs: update use of deprecated class 2025-01-16 12:04:45 +00:00
Jeroen Ketema
bd40d249e3 C++: Support more "noreturn" attributes in DefaultOptions 2025-01-16 13:04:44 +01:00
Owen Mansel-Chan
4f2d7ade5b Delete old docs for data flow in Go 2025-01-16 12:03:14 +00:00
Owen Mansel-Chan
cab9c64fbc Add docs for data flow in Go
Mostly based on the java and C# equivalents.
2025-01-16 12:02:37 +00:00
Jeroen Ketema
f4f5f2899c C++: Add more noreturn attribute tests 2025-01-16 13:01:53 +01:00
Anders Schack-Mulligen
fbf25e43a4 Merge pull request #18507 from aschackmull/dataflow/join-fix
Dataflow: Minor join-order fix
2025-01-16 12:10:23 +01:00
Michael Nebel
9021214937 Merge pull request #18495 from michaelnebel/csharp/refstrucinterfacetests
C# 13: [TEST ONLY] ref structs are allowed to implement interfaces.
2025-01-16 11:46:22 +01:00
Michael Nebel
0452b4af3d Merge pull request #18498 from michaelnebel/csharp/refandunsafe
C# 13: [TEST ONLY] Test example with ref local, unsafe context and ref struct in async- and iterator methods.
2025-01-16 11:42:30 +01:00
Michael Nebel
ba2b7abce9 Merge pull request #18446 from michaelnebel/csharp/implicittostring2
C#: Adding synthetic implicit ToString calls in binary- and string interpolation expressions.
2025-01-16 11:37:21 +01:00
Asger F
6cd9752289 Merge pull request #18467 from github/js/shared-dataflow-branch
JS: Migrate to shared data flow library (targeting main!) 🚀
2025-01-16 11:28:57 +01:00
Anders Schack-Mulligen
4223971f14 Dataflow: Remove outdated comment. 2025-01-16 10:26:40 +01:00
Anders Schack-Mulligen
f11ae49312 Dataflow: Fix a poor join-order. 2025-01-16 10:25:55 +01:00
Jeroen Ketema
6ad342c567 C++: Add change note 2025-01-16 10:22:54 +01:00
Jeroen Ketema
4a3350bd41 C++: Update stats file 2025-01-16 08:18:09 +01:00
Jeroen Ketema
123f1d599a C++: Add upgrade and downgrade scripts 2025-01-16 08:18:07 +01:00
Jeroen Ketema
bc2f203c4b C++: Support if consteval and if ! consteval 2025-01-16 08:17:57 +01:00
Mathias Vorreiter Pedersen
5373e2222e C++: Improve IRGuads logic for 'unlikely' expressions. 2025-01-16 00:45:07 +00:00
Mathias Vorreiter Pedersen
7cca21364b C++: Accept test changes. 2025-01-16 00:39:39 +00:00
Mathias Vorreiter Pedersen
14db788125 C++: Ensure that 'x' in 'if(!x) is also an AST-based GuardCondition. 2025-01-16 00:39:37 +00:00
Mathias Vorreiter Pedersen
b5897e5727 C++: Accept sign analysis changes. 2025-01-16 00:39:36 +00:00
Mathias Vorreiter Pedersen
2d9036eb5f C++: Make 'getInstructionConvertedResultExpression' equivalent in C and C++. 2025-01-16 00:39:35 +00:00
Mathias Vorreiter Pedersen
ebb7f28d39 C++: Remove workaround for missing comparisons against 0 in C code. 2025-01-16 00:39:33 +00:00
Mathias Vorreiter Pedersen
9810a4f34d C++: Remove 'inNonZeroCase' from IRGuards since we now always have implicit comparisons against 0 in C code. 2025-01-16 00:39:32 +00:00
Mathias Vorreiter Pedersen
0d7adac601 C++: Accept Guards test changes. 2025-01-16 00:39:31 +00:00
Mathias Vorreiter Pedersen
5da57cd2b4 C++: Accept test changes. 2025-01-16 00:39:29 +00:00
Mathias Vorreiter Pedersen
65771614ef C++: Insert int-to-bool conversions at binary conditional expressions. 2025-01-16 00:39:28 +00:00
Mathias Vorreiter Pedersen
9d3bc7f510 C++: Accept test changes. 2025-01-16 00:39:26 +00:00
Mathias Vorreiter Pedersen
f30bfb63cf C++: Insert int-to-bool conversions at 'NotExpr's. 2025-01-16 00:39:25 +00:00
Mathias Vorreiter Pedersen
1e33593c79 C++: Accept test changes. 2025-01-16 00:39:23 +00:00
Mathias Vorreiter Pedersen
dd39b97ab0 C++: Insert int-to-bool conversions at conditions. 2025-01-16 00:39:22 +00:00
Mathias Vorreiter Pedersen
2e3d3494de C++: Accept test changes. 2025-01-16 00:39:20 +00:00
Mathias Vorreiter Pedersen
5acd2bb2fb C++: Adjust the result type at 'NotExpr' and at comparisons. 2025-01-16 00:39:17 +00:00
Mathias Vorreiter Pedersen
9429b03896 C++: Provide a hook for overriding 'getResultType'. 2025-01-16 00:39:16 +00:00
Mathias Vorreiter Pedersen
6dd1c5e809 C++: Split out 'NotExpr' to its own class. 2025-01-16 00:39:14 +00:00
Mathias Vorreiter Pedersen
a0d2213268 Merge pull request #18503 from MathiasVP/scanf-check-prepare-fix
C++: Harden `checkedForEof`
2025-01-16 00:38:51 +00:00
github-actions[bot]
09198d9c25 Add changed framework coverage reports 2025-01-16 00:20:36 +00:00
Mathias Vorreiter Pedersen
01cbd2f7f1 C++: Ensure that the instruction being compared is the result of the 'CallInstruction'. 2025-01-15 19:27:28 +00:00
Jeroen Ketema
84c674b992 C++: Fix typos in IR translation comments 2025-01-15 20:16:43 +01:00
Geoffrey White
90faab456d Merge pull request #18473 from geoffw0/sensitive2
Improve shared sensitive data library handling of snake_case variable names
2025-01-15 18:02:33 +00:00
Geoffrey White
bec01daa45 Rust: Update integration tests. 2025-01-15 17:57:16 +00:00
Geoffrey White
98e0b64266 Rust: Make QL-for-QL happy. 2025-01-15 17:51:49 +00:00
Geoffrey White
787a6d11a3 Rust: Autoformat. 2025-01-15 17:25:44 +00:00
Geoffrey White
65b33f3f96 Rust: Improve rust/summary/summary-statistics organization. 2025-01-15 17:16:49 +00:00
Geoffrey White
5a037bcbc4 Rust: Count taint edges as well. 2025-01-15 16:18:58 +00:00
Geoffrey White
72c62ac192 Rust: Add taint reach to rust/summary/summary-statistics. 2025-01-15 16:18:56 +00:00
Geoffrey White
7904ed965b Rust: Add query sink counts query for getting a breakdown. 2025-01-15 16:18:51 +00:00
Paolo Tranquilli
3c064284b0 Rust: aggregate projects into workspaces 2025-01-15 17:17:19 +01:00
Geoffrey White
c6a7be671b Rust: Add both totals to rust/summary/summary-statistics. 2025-01-15 16:16:49 +00:00
Geoffrey White
75f0a7f529 Rust: Add summary query rust/summary/query-sinks. 2025-01-15 16:16:26 +00:00
Ed Minnix
f5045abe9e Fix files test 2025-01-15 10:43:01 -05:00
Simon Friis Vindum
ce5c886ad4 Rust, Ruby: Add basic block test 2025-01-15 15:24:26 +01:00
Michael Nebel
ca23e1b1fc C#: Test example with ref local, unsafe context and ref struct in async and iterator methods. 2025-01-15 15:16:56 +01:00
Michael Nebel
8b6e5521a8 C#: Add some an implements test. 2025-01-15 13:08:07 +01:00
Jeroen Ketema
02ac61f328 Merge pull request #18483 from jketema/extractor-fixes
C++: Fix types of struct/union templates and fix assumptions on proxy classes
2025-01-15 12:01:25 +01:00
Jeroen Ketema
a3cd66844c C++: Add change note 2025-01-15 11:38:09 +01:00
Jeroen Ketema
cd5e77348b C++: Add upgrade and downgrade scripts 2025-01-15 11:38:07 +01:00
Jeroen Ketema
8e39eb9020 C++: Fix incorrect dbscheme assumptions on proxy classes 2025-01-15 11:38:05 +01:00
Jeroen Ketema
13e8853277 C++: Update expected test results after extractor changes 2025-01-15 11:38:03 +01:00
Jeroen Ketema
537feddf06 C++: Introduce usertypes for structs and unions 2025-01-15 11:38:01 +01:00
Joe Farebrother
344dd2dab5 Qldoc fix 2025-01-15 10:26:37 +00:00
Joe Farebrother
2aea356756 Add change note + fix tests 2025-01-15 10:24:18 +00:00
Joe Farebrother
6a6585e415 Add tests for zip and enumerate 2025-01-15 09:57:15 +00:00
Paolo Tranquilli
f62a3ace9a Merge pull request #18491 from hvitved/rust/ql-test-recurse
Rust: Include nested `.rs` files in `codeql test run`
2025-01-15 10:10:55 +01:00
Tom Hvitved
1bbb3fde96 Rust: Take nested functions into account when resolving variables 2025-01-15 09:44:53 +01:00
Tom Hvitved
fe216aefc7 Rust: Add tests for nested functions 2025-01-15 09:43:43 +01:00
Michael Nebel
3de5b224c6 C#: Update other existing tests expected output. 2025-01-15 09:23:34 +01:00
Paolo Tranquilli
e60468e2c7 Rust: add nested test file example 2025-01-15 09:21:57 +01:00
Tom Hvitved
3ceec93499 Merge pull request #18462 from hvitved/rust/variable-without-location
Rust: Avoid location-based variable analysis
2025-01-15 09:20:10 +01:00
Ed Minnix
239a10642a Blazor: buildless integration test 2025-01-14 22:48:33 -05:00
Ed Minnix
4ac59795b9 Change note 2025-01-14 22:41:49 -05:00
Ed Minnix
55422d27fb mongodb tests 2025-01-14 22:36:13 -05:00
Ed Minnix
9a7f14f717 Add Database::Watch 2025-01-14 22:35:34 -05:00
Ed Minnix
68ab767189 Sort models in alphabetical order 2025-01-14 22:04:03 -05:00
Ed Minnix
6a8945c55d Add missing models 2025-01-14 22:04:00 -05:00
Ed Minnix
831cea663b mongodb models 2025-01-14 22:03:58 -05:00
Chris Smowton
9504f3611f Restrict text/template modelling to known call targets
Otherwise it's too easy to define a common interface to both text/template, which doesn't sanitize, and html/template, which does.
2025-01-14 17:52:02 +00:00
Chris Smowton
016bda04a5 Autoformat 2025-01-14 17:52:01 +00:00
Chris Smowton
24eb774921 Change note 2025-01-14 17:52:00 +00:00
Chris Smowton
bf34860ad0 Test deeply ntested taint 2025-01-14 17:51:59 +00:00
Chris Smowton
3573ff10c7 Update to account for changes on main 2025-01-14 17:51:58 +00:00
Chris Smowton
9c409f1280 Apply cosmetic review feedback 2025-01-14 17:51:57 +00:00
Chris Smowton
5548662a74 Switch to implementation using a universal read-only ContentSet 2025-01-14 17:51:55 +00:00
Chris Smowton
ae34a9c80e template/text.Template execution methods: support reading arbitrary content 2025-01-14 17:51:54 +00:00
Geoffrey White
4ed4f6878f Rust: Add summary query rust/summary/cryptographic-ops. 2025-01-14 17:32:44 +00:00
Michael Nebel
0c5c2a3509 C#: Add implicit to string test. 2025-01-14 17:17:21 +01:00
Michael Nebel
6a406b28d1 C#: Do not insert a synthetic ToString call in interpolation expressions, if the type implements IFormattable. 2025-01-14 17:14:57 +01:00
Michael Nebel
ab70a945e4 C#: Add a summary model for PathString.ToString. 2025-01-14 17:14:12 +01:00
Michael Nebel
024de5eafc C#: Update virtual call in constructor expected test output. 2025-01-14 17:14:11 +01:00
Michael Nebel
2bff2d646f C#: Disregards compiler generated virtual calls as problematic virtual calls. 2025-01-14 17:14:09 +01:00
Michael Nebel
77f9f4c532 C#: Add implicit to string usage in constructor. 2025-01-14 17:14:07 +01:00
Michael Nebel
d40c1bebbf C#: Update expected testoutput for Nullness tests. 2025-01-14 17:14:06 +01:00
Michael Nebel
e62846e4c5 C#: Disregard compiler generated method calls as possible null dereferences. 2025-01-14 17:14:04 +01:00
Michael Nebel
6a31fd7893 C#: Add ImplicitToString example in nullness tests. 2025-01-14 17:14:02 +01:00
Michael Nebel
cd7d2d4ca4 C#: Add change note. 2025-01-14 17:14:00 +01:00
Michael Nebel
20c2b2b2a2 C#: Update other existing tests expected output. 2025-01-14 17:13:59 +01:00
Michael Nebel
f239ab1fbf C#: Update PrintAst expected test output. 2025-01-14 17:13:57 +01:00
Michael Nebel
53c2f76385 C#: Update AST printing to include generated cast (wrapping) expressions and generated ToString calls. 2025-01-14 17:13:56 +01:00
Michael Nebel
6c6e58b337 C#: Add PrintAst test to implicit ToString test. 2025-01-14 17:13:54 +01:00
Michael Nebel
a4049b1d9a C#: Modify compiler generated strip logic to also take generated ToString calls into account. 2025-01-14 17:13:53 +01:00
Michael Nebel
8bf67e37fe C#: Update test expected output. 2025-01-14 17:13:51 +01:00
Michael Nebel
5f539c5515 C#: Make synthetic ToString calls in string interpolation expressions. 2025-01-14 17:13:50 +01:00
Michael Nebel
e9beeac60f C#: Update test expected output. 2025-01-14 17:13:48 +01:00
Michael Nebel
908a3e3563 C#: Make synthetic ToString calls in binary add expressions. 2025-01-14 17:13:46 +01:00
Michael Nebel
f905be4df3 C#: Add a RedundantToStringCall test case. 2025-01-14 17:13:45 +01:00
Michael Nebel
261b8db144 C#: Add some implicit toString data flow test cases. 2025-01-14 17:13:43 +01:00
Geoffrey White
6402aa5332 Merge pull request #18471 from geoffw0/weakhash
Rust: Weak hashing query
2025-01-14 15:54:42 +00:00
Chris Smowton
b2bb143689 Merge pull request #18305 from smowton/smowton/admin/agent-extracted-file-test
Java: Add test for a JavacTool-based compiler that doesn't use standard JavaFileObjects
2025-01-14 15:52:55 +00:00
Chris Smowton
060161cd5e Add change note 2025-01-14 14:22:27 +00:00
Chris Smowton
5ca7d26cf3 Add test for a JavacTool-based compiler that doesn't use standard JavaFileObjects 2025-01-14 14:22:26 +00:00
Tom Hvitved
ed07da4327 Rust: Include nested .rs files in codeql test run 2025-01-14 14:35:34 +01:00
Chris Smowton
3e10e78c95 Merge pull request #18480 from github/smowton/admin/document-serialization-proxy
Java: document serialization proxy pattern
2025-01-14 12:34:01 +00:00
Mathias Vorreiter Pedersen
0ff37f1205 Merge pull request #18486 from MathiasVP/indirect-instruction-barriers
C++: Add a `BarrierGuard` module for indirect instruction/operand nodes.
2025-01-14 11:37:58 +00:00
Simon Friis Vindum
7196892867 Merge pull request #18461 from paldepind/cpp-conditional-expr-range-analysis
C++: Only propagate smallest/largest range bound in conditional expressions
2025-01-14 12:31:21 +01:00
Mathias Vorreiter Pedersen
aa55b8e726 Merge pull request #18485 from MathiasVP/speed-up-cpp-unbounded-write
C++: Speed up the `cpp/unbounded-write` query for an upcoming change
2025-01-14 10:39:03 +00:00
Jeroen Ketema
a2aefc9d61 Merge pull request #18478 from jketema/stats-try
C++: Update stats file
2025-01-14 10:47:20 +01:00
Jeroen Ketema
4951571dd4 Merge pull request #18488 from geoffw0/cleanup
C++: Fix a couple of typos.
2025-01-14 10:46:56 +01:00
Joe Farebrother
460de3f7d5 Reduce generality of map and zip for performance 2025-01-14 09:39:57 +00:00
Joe Farebrother
4e36008ed9 Add tests 2025-01-14 09:39:56 +00:00
Joe Farebrother
642f9dcbea Model missing builtins 2025-01-14 09:39:54 +00:00
Geoffrey White
96008469d4 C++: QLDoc correction. 2025-01-14 09:19:50 +00:00
Paolo Tranquilli
23612b47a4 Merge pull request #18484 from github/redsun82/rust-discover-once
Rust: run sysroot discovery once
2025-01-14 09:54:58 +01:00
Owen Mansel-Chan
883301938b Merge pull request #18161 from owen-mc/java/weak-crypto-algo-more-informative
Java: Make `java/weak-cryptographic-algorithm` give  a reason why the algo is insecure
2025-01-13 23:43:04 +00:00
yoff
599411b440 Merge pull request #17787 from yoff/shared/add-location-to-typetracking-nodes
shared: Add locations to type tracking nodes
2025-01-13 23:06:09 +01:00
Mathias Vorreiter Pedersen
d9d0d9348c C++: Add change note. 2025-01-13 18:53:59 +00:00
Mathias Vorreiter Pedersen
91992e2f3f C++: Accept test changes. 2025-01-13 18:34:42 +00:00
Mathias Vorreiter Pedersen
6f3a2c41b3 C++: Fill in skeleton for indirect instruction/operand barrier nodes. 2025-01-13 18:34:32 +00:00
Mathias Vorreiter Pedersen
4e3b27e920 C++: Add a testcase that needs indirect instruction/operand nodes. 2025-01-13 18:33:52 +00:00
Mathias Vorreiter Pedersen
d63b73406c C++: Add dataflow skeleton for barrier guards on indirect instruction/operand nodes. 2025-01-13 18:33:18 +00:00
Mathias Vorreiter Pedersen
2d44b33598 C++: Speed up the 'cpp/unbounded-write' query. 2025-01-13 16:03:30 +00:00
Paolo Tranquilli
7988729ee6 Rust: run sysroot discovery once 2025-01-13 16:13:55 +01:00
Ian Lynagh
6b182c5ebd Merge pull request #18396 from igfoo/igfoo/path_transformer
Kotlin: Add CODEQL_PATH_TRANSFORMER support
2025-01-13 15:11:41 +00:00
Michael Nebel
c68b55b957 Merge pull request #18385 from michaelnebel/csharp/allowsrefstruct
C# 13: Allows ref struct.
2025-01-13 16:04:03 +01:00
Michael Nebel
d0d5e0d157 C#: Address review comment. 2025-01-13 14:56:24 +01:00
Paolo Tranquilli
ca28087a16 Merge pull request #18479 from github/redsun82/rust-upgrade
Rust: update dependencies
2025-01-13 14:31:49 +01:00
Simon Friis Vindum
e9f2a8b017 C++: Extend nested ternary test with two more terms in the addition 2025-01-13 13:54:05 +01:00
Chris Smowton
0b62338cda Java: document serialization proxy pattern
Note I haven't included a reference because I can't find a sufficiently-authoritative source -- only a blog quoting Effective Java seems close to appropriate, and I suspect that's pirated.
2025-01-13 11:49:36 +00:00
Paolo Tranquilli
cae7236f61 Rust: update dependencies 2025-01-13 12:43:43 +01:00
Simon Friis Vindum
dcdc43933b C++: Minor refactor and documentation tweak to simple range analysis 2025-01-13 12:15:09 +01:00
Simon Friis Vindum
0c9ee4d029 C++: Only propagate smallest/largest bound in conditional expressions 2025-01-13 12:11:45 +01:00
Simon Friis Vindum
847f3f1fc2 C++: Add test for nested ternary expressions of literals 2025-01-13 12:08:50 +01:00
Geoffrey White
e61d6aec22 Rust: Autoformat. 2025-01-13 10:51:49 +00:00
Geoffrey White
676141bbb9 Rust: More suggestions from review. 2025-01-13 10:45:30 +00:00
Geoffrey White
722b7bb55b Apply suggestions from code review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-01-13 10:28:08 +00:00
Tom Hvitved
33e6d6392c Rust: Avoid location-based variable analysis 2025-01-13 11:08:00 +01:00
Tom Hvitved
d03b284a0a Rust: Add more variable tests 2025-01-13 10:46:54 +01:00
Tom Hvitved
7376449d38 Rust: Rename variables.rs to main.rs 2025-01-13 10:46:53 +01:00
Jeroen Ketema
3f093aea35 C++: Fix join order problem after stats file update
Tuple counts before the change (terminated early):
```
[2025-01-11 17:49:42] (297s) Tuple counts for AliasedSSA::getResultMemoryLocation/1#eb4efd2d/2@c513392o after 13.5s:
                      0          ~0%       {3} r1 = JOIN `_SSAConstruction::getInstructionOpcode/2#ec2d1f97_10#join_rhs__AliasedSSA::canReuseSsaForOldResult/1__#shared` WITH Opcode::MayWriteOpcode#class#21b7b7f2 ON FIRST 1 OUTPUT Lhs.1, Lhs.2 'instr', _
                      0          ~0%       {3}    | REWRITE WITH Out.2 := true

                      30500      ~124%     {2} r2 = SCAN `_AliasedSSA::canReuseSsaForOldResult/1#280fbda5_Opcode::Opcode.getWriteMemoryAccess/0#dispred#531702__#shared` OUTPUT In.1, In.0 'instr'
                                           {2}    | AND NOT `_Opcode::MayWriteOpcode#class#21b7b7f2__SSAConstruction::getInstructionOpcode/2#ec2d1f97_10#join_rhs__#antijoin_rhs#1`(FIRST 2)
                      30500      ~134%     {3}    | SCAN OUTPUT In.0, In.1 'instr', _
                      30500      ~120%     {3}    | REWRITE WITH Out.2 := false

                      30500      ~120%     {3} r3 = r1 UNION r2

                      8000       ~738%     {2} r4 = JOIN r3 WITH num#MemoryAccessKind::TEscapedMemoryAccess#a0368c86 ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                                           {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)
                      4000       ~699%     {2}    | SCAN OUTPUT In.1, In.0 'instr'
                      1501792000 ~686%     {3}    | JOIN WITH num#AliasedSSA::TAllAliasedMemory#4bb632db_102#join_rhs ON FIRST 1 OUTPUT Rhs.2 'result', Lhs.1 'instr', Rhs.1
                      1501788000 ~709%     {3}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2, Lhs.0 'result'
                      0          ~0%       {2}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#d26c0476` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.2 'result'

                      8000       ~674%     {2} r5 = JOIN r3 WITH num#MemoryAccessKind::TNonLocalMemoryAccess#b2a59f45 ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                                           {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)
                      4000       ~689%     {2}    | SCAN OUTPUT In.1, In.0 'instr'
                      310509500  ~547%     {3}    | JOIN WITH num#AliasedSSA::TAllNonLocalMemory#7ba9f6c9_102#join_rhs ON FIRST 1 OUTPUT Rhs.2 'result', Lhs.1 'instr', Rhs.1
                      310504500  ~527%     {3}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2, Lhs.0 'result'
                      0          ~0%       {2}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#d26c0476` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.2 'result'

                      5000       ~2%       {2} r6 = JOIN r3 WITH `AliasedSSA::isIndirectOrBufferMemoryAccess/1#a6492554` ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                      5000       ~2%       {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)

                                           {2} r7 = r6 AND NOT `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#7`(FIRST 1)
                      0          ~0%       {2}    | SCAN OUTPUT In.1, In.0 'instr'
                      0          ~0%       {3}    | JOIN WITH num#AliasedSSA::TUnknownMemoryLocation#e0c2a990_102#join_rhs ON FIRST 1 OUTPUT Rhs.2 'result', Lhs.1 'instr', Rhs.1
                      0          ~0%       {3}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2, Lhs.0 'result'
                      0          ~0%       {2}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#d26c0476` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.2 'result'

                      5000       ~0%       {2} r8 = JOIN r3 WITH num#MemoryAccessKind::TEntireAllocationMemoryAccess#503d0afb ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                      5000       ~0%       {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)
                      4500       ~2%       {4}    | JOIN WITH `Instruction::Instruction.getResultAddressOperand/0#dispred#619d4407` ON FIRST 1 OUTPUT Rhs.1, Lhs.0 'instr', _, Lhs.1
                      4500       ~4%       {3}    | REWRITE WITH Out.2 := booleanNot(In.3) KEEPING 3
                      0          ~0%       {3}    | JOIN WITH `project#AliasAnalysis::addressOperandAllocationAndOffset/3#c64a9862` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'instr', Lhs.2
                      0          ~0%       {4}    | JOIN WITH num#AliasedSSA::TEntireAllocationMemoryLocation#85bb24dd ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2, Rhs.1, Rhs.2 'result'
                                           {4}    | REWRITE WITH TEST InOut.1 != InOut.2
                      0          ~0%       {2}    | SCAN OUTPUT In.3 'result', In.0 'instr'
                      0          ~0%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      4500       ~0%       {5} r9 = JOIN r6 WITH `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#5_0512346#join_rhs` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.1, Rhs.2, Rhs.6, _
                                           {4}    | REWRITE WITH Tmp.4 := false, TEST InOut.3 != Tmp.4 KEEPING 4
                      0          ~0%       {5}    | SCAN OUTPUT In.2, _, In.0 'instr', _, In.1
                      0          ~0%       {4}    | REWRITE WITH Out.1 := false, Out.3 := booleanNot(In.4) KEEPING 4
                      0          ~0%       {4}    | JOIN WITH `AliasedSSA::getGroupedMemoryLocation/3#14ef79fc#ffbf_0213#join_rhs` ON FIRST 2 OUTPUT Lhs.2 'instr', Lhs.3, Rhs.2, Rhs.3 'result'
                                           {4}    | REWRITE WITH TEST InOut.1 != InOut.2
                      0          ~0%       {2}    | SCAN OUTPUT In.3 'result', In.0 'instr'
                      0          ~0%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      4500       ~0%       {8} r10 = JOIN r6 WITH `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#5_0512346#join_rhs` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.1, Rhs.2, Rhs.3, Rhs.4, Rhs.5, Rhs.6, _
                                           {7}    | REWRITE WITH Tmp.7 := false, TEST InOut.6 = Tmp.7 KEEPING 7
                      4000       ~0%       {6}    | SCAN OUTPUT In.2, In.3, In.4, In.5, In.0 'instr', In.1
                      3500       ~1%       {8}    | JOIN WITH num#AliasedSSA::TVariableMemoryLocation#8e8cb20c_013456#join_rhs ON FIRST 4 OUTPUT Rhs.5 'result', Lhs.4 'instr', Lhs.5, Lhs.0, Lhs.1, Lhs.2, Lhs.3, Rhs.4
                      3000       ~0%       {8}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.3, Lhs.4, Lhs.5, Lhs.6, Lhs.2, Lhs.7, Lhs.0 'result'
                      2500       ~2%       {5}    | JOIN WITH `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#6` ON FIRST 6 OUTPUT Lhs.0 'instr', Lhs.6, Lhs.7 'result', _, Lhs.5
                                           {4}    | REWRITE WITH Out.3 := booleanNot(In.4), TEST Out.3 != InOut.1 KEEPING 4
                      2000       ~0%       {2}    | SCAN OUTPUT In.0 'instr', In.2 'result'

                      2000       ~0%       {2} r11 = r4 UNION r5 UNION r7 UNION r8 UNION r9 UNION r10
                                           return r11
```

Tuple counts after:
```
[2025-01-11 17:52:46] (9s) Tuple counts for AliasedSSA::getResultMemoryLocation/1#eb4efd2d/2@6c9e69ae after 6.1s:
                      1283623 ~5%       {3} r1 = JOIN `_SSAConstruction::getInstructionOpcode/2#ec2d1f97_10#join_rhs__AliasedSSA::canReuseSsaForOldResult/1__#shared` WITH Opcode::MayWriteOpcode#class#21b7b7f2 ON FIRST 1 OUTPUT Lhs.1, Lhs.2 'instr', _
                      1283623 ~0%       {3}    | REWRITE WITH Out.2 := true

                      2965447 ~0%       {2} r2 = SCAN `_AliasedSSA::canReuseSsaForOldResult/1#280fbda5_Opcode::Opcode.getWriteMemoryAccess/0#dispred#531702__#shared` OUTPUT In.1, In.0 'instr'
                                        {2}    | AND NOT `_Opcode::MayWriteOpcode#class#21b7b7f2__SSAConstruction::getInstructionOpcode/2#ec2d1f97_10#join_rhs__#antijoin_rhs#1`(FIRST 2)
                      1681824 ~1%       {3}    | SCAN OUTPUT In.0, In.1 'instr', _
                      1681824 ~0%       {3}    | REWRITE WITH Out.2 := false

                      2965447 ~0%       {3} r3 = r1 UNION r2

                      1334818 ~0%       {2} r4 = JOIN r3 WITH num#MemoryAccessKind::TEscapedMemoryAccess#a0368c86 ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                      1334818 ~0%       {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)
                      1334818 ~6%       {3}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#d26c0476` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 'instr'
                      1334818 ~4%       {2}    | JOIN WITH num#AliasedSSA::TAllAliasedMemory#4bb632db ON FIRST 2 OUTPUT Rhs.2 'result', Lhs.2 'instr'
                      1334818 ~2%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      363138  ~1%       {2} r5 = JOIN r3 WITH num#MemoryAccessKind::TNonLocalMemoryAccess#b2a59f45 ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                      363138  ~1%       {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)
                      363138  ~5%       {3}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#d26c0476` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 'instr'
                      363138  ~0%       {2}    | JOIN WITH num#AliasedSSA::TAllNonLocalMemory#7ba9f6c9 ON FIRST 2 OUTPUT Rhs.2 'result', Lhs.2 'instr'
                      363138  ~0%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      1086950 ~5%       {2} r6 = JOIN r3 WITH `AliasedSSA::isIndirectOrBufferMemoryAccess/1#a6492554` ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                      1086950 ~5%       {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)

                      141434  ~0%       {2} r7 = r6 AND NOT `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#7`(FIRST 1)
                      141434  ~0%       {3}    | JOIN WITH `SSAConstruction::getInstructionEnclosingIRFunction/1#d26c0476` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 'instr'
                      141434  ~5%       {2}    | JOIN WITH num#AliasedSSA::TUnknownMemoryLocation#e0c2a990 ON FIRST 2 OUTPUT Rhs.2 'result', Lhs.2 'instr'
                      141434  ~0%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      180541  ~0%       {2} r8 = JOIN r3 WITH num#MemoryAccessKind::TEntireAllocationMemoryAccess#503d0afb ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2
                      180541  ~0%       {2}    | AND NOT `AliasedSSA::canReuseSsaForOldResult/1#280fbda5`(FIRST 1)
                      180541  ~3%       {4}    | JOIN WITH `Instruction::Instruction.getResultAddressOperand/0#dispred#619d4407` ON FIRST 1 OUTPUT Rhs.1, Lhs.0 'instr', _, Lhs.1
                      180541  ~0%       {3}    | REWRITE WITH Out.2 := booleanNot(In.3) KEEPING 3
                      175074  ~2%       {3}    | JOIN WITH `project#AliasAnalysis::addressOperandAllocationAndOffset/3#c64a9862` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'instr', Lhs.2
                      349412  ~0%       {4}    | JOIN WITH num#AliasedSSA::TEntireAllocationMemoryLocation#85bb24dd ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.2, Rhs.1, Rhs.2 'result'
                                        {4}    | REWRITE WITH TEST InOut.1 != InOut.2
                      174706  ~1%       {2}    | SCAN OUTPUT In.3 'result', In.0 'instr'
                      174706  ~3%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      946577  ~0%       {5} r9 = JOIN r6 WITH `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#5_0512346#join_rhs` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.1, Rhs.2, Rhs.6, _
                                        {4}    | REWRITE WITH Tmp.4 := false, TEST InOut.3 != Tmp.4 KEEPING 4
                      2122    ~6%       {5}    | SCAN OUTPUT In.2, _, In.0 'instr', _, In.1
                      2122    ~0%       {4}    | REWRITE WITH Out.1 := false, Out.3 := booleanNot(In.4) KEEPING 4
                      4244    ~104%     {4}    | JOIN WITH `AliasedSSA::getGroupedMemoryLocation/3#14ef79fc#ffbf_0213#join_rhs` ON FIRST 2 OUTPUT Lhs.2 'instr', Lhs.3, Rhs.2, Rhs.3 'result'
                                        {4}    | REWRITE WITH TEST InOut.1 != InOut.2
                      2122    ~98%      {2}    | SCAN OUTPUT In.3 'result', In.0 'instr'
                      1061    ~0%       {2}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.0 'result'

                      946577  ~0%       {8} r10 = JOIN r6 WITH `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#5_0512346#join_rhs` ON FIRST 2 OUTPUT Lhs.0 'instr', Lhs.1, Rhs.2, Rhs.3, Rhs.4, Rhs.5, Rhs.6, _
                                        {7}    | REWRITE WITH Tmp.7 := false, TEST InOut.6 = Tmp.7 KEEPING 7
                      944455  ~0%       {6}    | SCAN OUTPUT In.2, In.3, In.4, In.5, In.0 'instr', In.1
                      1183383 ~2%       {8}    | JOIN WITH num#AliasedSSA::TVariableMemoryLocation#8e8cb20c_013456#join_rhs ON FIRST 4 OUTPUT Rhs.5 'result', Lhs.4 'instr', Lhs.5, Lhs.0, Lhs.1, Lhs.2, Lhs.3, Rhs.4
                      1183383 ~0%       {8}    | JOIN WITH AliasedSSA::MemoryLocation#4b9f223c ON FIRST 1 OUTPUT Lhs.1 'instr', Lhs.3, Lhs.4, Lhs.5, Lhs.6, Lhs.2, Lhs.7, Lhs.0 'result'
                      1183383 ~0%       {5}    | JOIN WITH `project#AliasedSSA::hasResultMemoryAccess/9#732473d4#6` ON FIRST 6 OUTPUT Lhs.0 'instr', Lhs.6, Lhs.7 'result', _, Lhs.5
                                        {4}    | REWRITE WITH Out.3 := booleanNot(In.4), TEST Out.3 != InOut.1 KEEPING 4
                      944455  ~3%       {2}    | SCAN OUTPUT In.0 'instr', In.2 'result'

                      2959612 ~0%       {2} r11 = r4 UNION r5 UNION r7 UNION r8 UNION r9 UNION r10
                                        return r11
```
2025-01-11 17:50:51 +01:00
Jeroen Ketema
fb047a67d6 C++: Update stats file 2025-01-11 17:40:18 +01:00
Jeroen Ketema
fcf6c3c4e8 Merge pull request #18474 from jketema/cpp20-beta
Drop C++20 beta notification from docs
2025-01-10 17:32:44 +01:00
Jeroen Ketema
35f90a6101 Drop C++20 beta notification from docs 2025-01-10 16:17:46 +01:00
Geoffrey White
edd1f257ad Rust: Attempt to fix the test on CI. 2025-01-10 14:51:15 +00:00
Edward Minnix III
fd878a1f33 Merge pull request #18465 from egregius313/egregius313/go/mad/database/beego-orm
Go: `database` source models for `github.com/beego/beego/client/orm`
2025-01-10 09:41:32 -05:00
Geoffrey White
1b6c289cb4 Rust: Unrelated MaD test impact. :( 2025-01-10 14:38:05 +00:00
Ed Minnix
0f038355ff Fix provenance in test 2025-01-10 09:26:58 -05:00
Geoffrey White
19d3e9dbca Rust: Correct the qhelp. 2025-01-10 14:19:12 +00:00
Michael B. Gale
1cba147087 Merge pull request #18469 from github/mbg/csharp/fix-crash-if-proxy-env-vars-are-already-set
C#: Fix crash if proxy environment variables are already set
2025-01-10 14:11:27 +00:00
Tom Hvitved
b5982643c7 Merge pull request #18445 from hvitved/rust/format-args-index
Rust: Remove `Format.getArgument`
2025-01-10 15:06:43 +01:00
Jeroen Ketema
8c3e5b6f56 Merge pull request #18368 from github/jketema/template-parameters-7
C++: Handle requires clauses and type template type constraints
2025-01-10 15:02:41 +01:00
Ed Minnix
43771d8f19 Fix formatting 2025-01-10 08:50:09 -05:00
Joe Farebrother
a7fb73a2b2 Merge pull request #18185 from joefarebrother/python-lxml
Python: Model additional flow steps for the lxml framework
2025-01-10 13:40:16 +00:00
Tom Hvitved
0795c244e9 Rust: Move QL doc into annotations.py 2025-01-10 14:27:53 +01:00
Ed Minnix
bff243367c Rename test functions to include package name 2025-01-10 08:26:46 -05:00
Edward Minnix III
4bd43b4e70 Reword change note to be more general
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2025-01-10 08:22:28 -05:00
Ed Minnix
46f9448043 Add Ormer models for v1 of the beego ORM 2025-01-10 08:20:26 -05:00
Asger F
bc34a045d3 JS: Triage discrepancies and update test 2025-01-10 14:18:31 +01:00
Asger F
18ab066e79 JS: Remove OK comments that don't provide further explanation 2025-01-10 14:18:30 +01:00
Asger F
c2b65b1f85 JS: Port IncompleteUrlSubstringSanitization test 2025-01-10 14:18:29 +01:00
Asger F
6b4be13a8e JS: Move annotations to the correct line 2025-01-10 14:18:28 +01:00
Asger F
95e20a045b JS: Port IncompleteUrlSchemeCheck test 2025-01-10 14:18:26 +01:00
Asger F
563471dd52 JS: Triage discrepancies and update test 2025-01-10 14:18:25 +01:00
Asger F
48f7a58d01 JS: Update IncompleteHostnameRegExp test to match reality 2025-01-10 14:18:24 +01:00
Asger F
a83508a828 JS: Port IncompleteHostNameRegExt test 2025-01-10 14:18:23 +01:00
Asger F
ce8912ddcc Test: Handle 'problems' result set as an alias for '#select' 2025-01-10 14:18:21 +01:00
Geoffrey White
ad268220bf Rust: Address QL-for-QL comments. 2025-01-10 12:53:12 +00:00
Geoffrey White
39a38c4c53 Rust: Tweak .qhelp layout. 2025-01-10 12:48:53 +00:00
Geoffrey White
bb4322cf7c Rust: Make a type more accurate. 2025-01-10 12:39:10 +00:00
Geoffrey White
c115169dbe Rust: Move ModelledHashOperation to a more logical location. 2025-01-10 12:36:05 +00:00
Geoffrey White
ae26cd6c32 Rust: Update test for changes on main. 2025-01-10 12:36:04 +00:00
Geoffrey White
9b8f561614 Rust: Add another reference. 2025-01-10 12:36:03 +00:00
Geoffrey White
59386597c3 Rust: Add .qhelp. 2025-01-10 12:36:01 +00:00
Geoffrey White
babfa758a3 Rust: Add models for an alternative md5 library. 2025-01-10 11:56:27 +00:00
Geoffrey White
ae0f4f10de Rust: Add hash function sinks. 2025-01-10 11:56:26 +00:00
Geoffrey White
d72b978bc7 Rust: Add sensitive data sources. 2025-01-10 11:56:25 +00:00
Geoffrey White
8f4a52001f Rust: Add query framework. 2025-01-10 11:56:24 +00:00
Geoffrey White
509c6ffb7a Rust: Add tests for weak hashing. 2025-01-10 11:56:23 +00:00
Tom Hvitved
166f8916cc Rust: Remove Format.getArgument 2025-01-10 12:51:42 +01:00
Michael B. Gale
b0f0a24b6a C#: Override env vars in DotNetCliInvoker if already set 2025-01-10 11:36:02 +00:00
Michael B. Gale
f78c6e0924 C#: Remove incorrect log message from DependabotProxy 2025-01-10 11:35:14 +00:00
Geoffrey White
5ef5b04aac Add change notes. 2025-01-10 11:16:53 +00:00
Paolo Tranquilli
7c0409da35 Rust: add instructions for codegen in README.md 2025-01-10 11:50:49 +01:00
Tom Hvitved
303b11ec36 Merge pull request #18298 from hvitved/rust/mad-source-sink
Rust: Add support for MaD sources and sinks with access paths
2025-01-10 11:49:51 +01:00
Paolo Tranquilli
70df1b9abe Rust: give more options for building in README.md 2025-01-10 11:45:55 +01:00
Owen Mansel-Chan
0728b3bd60 Update test expectation 2025-01-10 10:37:05 +00:00
Geoffrey White
488738a8b8 Swift: Remove special case that is now redundant. 2025-01-10 10:31:55 +00:00
Geoffrey White
f8659c0a4e Sync identical files. 2025-01-10 10:26:13 +00:00
Geoffrey White
9a8a852277 Rust: Support snake case more widely in SensitiveDataHeuristics.qll. 2025-01-10 10:23:55 +00:00
Mathias Vorreiter Pedersen
a35dc7ea69 Merge pull request #18463 from MathiasVP/add-sysalloc-models
C++: Add MaD models for `SysAllocString` and friends
2025-01-10 10:10:06 +00:00
Geoffrey White
88e351ad4f Rust: Expand sensitive data test cases. 2025-01-10 10:00:13 +00:00
Jeroen Ketema
0a292fbaf5 C++: Add upgrade and downgrade scripts 2025-01-10 10:20:51 +01:00
Jeroen Ketema
7f5772b8a4 C++: Update dbscheme stats file 2025-01-10 10:19:45 +01:00
Jeroen Ketema
3f6a2850cc C++: Add change note 2025-01-10 10:19:44 +01:00
Jeroen Ketema
2c9af9ea30 C++: Add support for requires clauses and constraints on template parameters 2025-01-10 10:19:34 +01:00
Michael Nebel
b358f33f9e C#: Address review comment. 2025-01-10 10:00:44 +01:00
Tom Hvitved
039b2ecf9b Merge pull request #18457 from hvitved/dataflow/disallowed-return-inline-late
Data flow: Fix a bad join order
2025-01-10 09:37:58 +01:00
Ed Minnix
592b46bea8 Change note 2025-01-09 21:55:05 -05:00
Ed Minnix
baec4adbb1 beego models 2025-01-09 21:54:00 -05:00
Chad Bentz
1a4c2058a0 codeql query format 2025-01-09 19:39:06 -05:00
Chad Bentz
f413c4f467 Remove codeql config references from query doc 2025-01-09 19:32:06 -05:00
Chad Bentz
26074bb7fe Make docs less verbose regarding codeql config + enhance changlog to highlight extensibility 2025-01-09 19:30:02 -05:00
Jeroen Ketema
204afab427 Merge pull request #18367 from github/jketema/template-parameters-6
C++: Handle template variable specializations
2025-01-09 22:21:03 +01:00
Chad Bentz
b144c2f597 Merge branch 'github:main' into felickz/actions-trusted-owner-data-extensions 2025-01-09 15:07:49 -05:00
aegilops
da68a04cd1 Merge branch 'angular-sources-sinks' of https://github.com/aegilops/codeql into angular-sources-sinks 2025-01-09 18:03:39 +00:00
Paul Hodgkinson
1ada51130f Merge branch 'main' into angular-sources-sinks 2025-01-09 18:03:04 +00:00
aegilops
b07e801c10 Add new test for new XSS sink, update expected to match 2025-01-09 18:02:45 +00:00
Mathias Vorreiter Pedersen
1822dc4860 C++: Add change note. 2025-01-09 17:56:07 +00:00
Mathias Vorreiter Pedersen
7a84132a6b C++: Add models and accept testcases. 2025-01-09 17:32:34 +00:00
Mathias Vorreiter Pedersen
23acc31885 C++: Add testcases with missing models. 2025-01-09 17:30:37 +00:00
aegilops
e7881a8c7f Fix typo 2025-01-09 17:11:06 +00:00
aegilops
62599b2a12 Formatted 2025-01-09 17:02:37 +00:00
aegilops
98b4c35844 Set doc string on getElementNode predicate 2025-01-09 17:00:01 +00:00
Paolo Tranquilli
928c66aea3 Merge pull request #18443 from github/redsun82/cargo-upgrade
Rust: update rust-analyzer
2025-01-09 17:33:26 +01:00
Jeroen Ketema
12048aefad Merge pull request #18408 from jketema/config-silence
C++: Silence alerts coming from CMake test compilation files
2025-01-09 16:31:55 +01:00
Geoffrey White
0ce409efd7 Update cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/CMakeFiles/CMakeScratch/TryCompile-abcdef/CheckFunctionExists.c
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2025-01-09 15:17:57 +00:00
Paolo Tranquilli
6ded99ccb1 Merge branch 'main' into redsun82/cargo-upgrade 2025-01-09 16:05:48 +01:00
Erik Krogh Kristensen
70a1a6454d Merge pull request #18452 from asgerf/js/import-spec-strings
JS: Fix crash in case of string literal in export specifier
2025-01-09 15:50:40 +01:00
Paolo Tranquilli
4f79199498 Rust: replace std::fs::canonicalize with dunce::canonicalize
Rust-analyzer turned out to be quite picky about paths, where
`//?/`-prefixed paths can lead to flaky failures. See

https://github.com/rust-lang/rust-analyzer/issues/18894

for details.

This makes paths always be canonicalized with `dunce`. Previously,
`dunce` was used as a fallback, but that stopped working somewhere
after version 0.0.248 of rust-analyzer.
2025-01-09 15:43:15 +01:00
Paolo Tranquilli
cd95cc8f94 Rust: update rust-analyzer to 0.0.257 2025-01-09 15:34:07 +01:00
Michael B. Gale
14cfac506e Merge pull request #18456 from owen-mc/go/fix-test-jmoiron
Go: Fix stub that is making test fail
2025-01-09 13:20:08 +00:00
yoff
b263132ab2 Merge pull request #17998 from yoff/shared/locations-in-range-analysis 2025-01-09 14:05:54 +01:00
Jeroen Ketema
347edc4ff6 C++: Add upgrade and downgrade scripts 2025-01-09 13:26:33 +01:00
Jeroen Ketema
74bc28534f C++: Update dbscheme stats file 2025-01-09 13:23:25 +01:00
Jeroen Ketema
0a57587189 C++: Add change note 2025-01-09 13:23:23 +01:00
Jeroen Ketema
17127356e8 C++: Handle template variable specializations 2025-01-09 13:23:21 +01:00
Nora Dimitrijević
09571135e6 Merge pull request #18425 from d10c/d10c/BigInt.bitLength
Language reference: mention BigInt.bitLength()
2025-01-09 13:19:25 +01:00
Tom Hvitved
653d1227e3 Data flow: Cache known{Source,Sink}Model 2025-01-09 13:11:29 +01:00
Jeroen Ketema
60ae374a88 Merge pull request #18366 from github/jketema/template-parameters-5
C++: Support concept id expressions
2025-01-09 13:02:19 +01:00
Tom Hvitved
91b6a6573c Data flow: Fix a bad join order 2025-01-09 12:58:16 +01:00
Owen Mansel-Chan
1812be7fa8 Fix stub 2025-01-09 11:43:36 +00:00
Asger F
0f6e8bf140 Merge pull request #18451 from asgerf/jss/cleanup-todos
JS: Clean up some TODO comments
2025-01-09 11:50:35 +01:00
Tom Hvitved
a7bb95249b Rust: Implement known{Source,Sink}Model 2025-01-09 11:47:57 +01:00
Jeroen Ketema
ac05bfcf4e C++: Remove some redundant toStrings 2025-01-09 11:04:07 +01:00
Jeroen Ketema
6325dd2ce1 C++: Simplify toString 2025-01-09 11:03:41 +01:00
Asger F
a7fbfb2c2d JS: Change note 2025-01-09 10:48:52 +01:00
Asger F
fd5a3dad90 JS: One more test 2025-01-09 10:46:45 +01:00
Asger F
138b000891 JS: Coerce the local export node to an Identifier 2025-01-09 10:42:25 +01:00
Asger F
db98880163 JS: Add crash reproduction to test case 2025-01-09 10:39:30 +01:00
Tom Hvitved
de0deabe4c Ruby: Implement localMustFlowStep 2025-01-09 10:37:43 +01:00
Asger F
9c4d378a1d JS: Remove TODO comment
It is not subsumed by the other case, both cases are needed
2025-01-09 10:17:16 +01:00
Asger F
3f2882e1c6 JS: Remove an obsolete comment
The RHS of an assignment actually has a post-update node now
2025-01-09 09:59:23 +01:00
Asger F
b2d62a080b JS: Move a test failure explanation into the test suite
We have an issue for fixing the underlying problem
2025-01-09 09:57:44 +01:00
Asger F
d9da9444fa JS: Rephrase TODO
This is useful info, but not something that can be fixed locally in this query, so a TODO comment isn't helping
2025-01-09 09:45:39 +01:00
Asger F
3def8ecdee JS: Remove unimportant TODO 2025-01-09 09:43:03 +01:00
Asger F
388dd871e1 JS: Remove TODO tracked by an issue.
This requires changes to the shared data flow library, not something we should track with a TODO in the JS codebase
2025-01-09 09:41:40 +01:00
Asger F
8b060c4294 JS: Remove TODO about evaluating legacy steps
There is an issue for tracking this. It's not a small fix.
2025-01-09 09:40:29 +01:00
Asger F
a8f93cac05 JS: Remove obsolete comment
The test case actually has the correct result now
2025-01-09 09:39:32 +01:00
Asger F
dd37c474d8 JS: Remove mention of results from comments 2025-01-09 09:39:30 +01:00
Asger F
fb54a3bde8 JS: Remove obsolete TODO comment 2025-01-09 09:39:29 +01:00
Asger F
b29ee2acde JS: Remove references to localFieldStep
These are tracked in https://github.com/github/codeql-javascript-team/issues/456
2025-01-09 09:39:27 +01:00
Asger F
7766f97232 JS: Remove obsolete TODO 2025-01-09 09:39:26 +01:00
Asger F
8ac08db5c2 JS: Remove TODOs about WithArrayElement not being a taint step
This isn't going to become a taint step, the workaround is the permanent solution
2025-01-09 09:39:23 +01:00
Tom Hvitved
07910b09d0 Ruby: Add more callback flow tests 2025-01-09 09:30:08 +01:00
Asger F
3cc1525985 JS: Remove obsolete TODOs 2025-01-09 09:19:30 +01:00
Asger F
1997e0a7b6 Merge pull request #18427 from asgerf/jss/change-note
JS: Add migration guide and change note
2025-01-09 09:13:16 +01:00
Paolo Tranquilli
ca05697365 Merge pull request #18429 from github/redsun82/rust-ast-generator-mustache
Rust: make ast-generator use mustache templates
2025-01-09 08:37:07 +01:00
Jeroen Ketema
f08d10065c C++: Add upgrade and downgrade scripts 2025-01-09 00:44:39 +01:00
Jeroen Ketema
7cba263bc4 C++: Update dbscheme stats file 2025-01-09 00:44:38 +01:00
Jeroen Ketema
033f35fe42 C++: Improve PrintAST for concept ids
If a type would be used in multiple places in the AST, rendering of the
AST would be broken. Hence, we cannot directly use types as AST nodes.
2025-01-09 00:44:37 +01:00
Jeroen Ketema
f8458f6025 C++: Add change note 2025-01-09 00:44:36 +01:00
Jeroen Ketema
c48fcf1fb2 C++: Support concept id expressions 2025-01-09 00:44:26 +01:00
Dave Bartolomeo
554ea29547 Merge pull request #18437 from github/post-release-prep/codeql-cli-2.20.1
Post-release preparation for codeql-cli-2.20.1
2025-01-08 14:33:34 -05:00
Geoffrey White
3363235b1c Merge pull request #18414 from geoffw0/sensitive
Rust: Sensitive data library
2025-01-08 17:38:18 +00:00
aegilops
4b57d5feb2 Added XSS sink for innerHTML/outerHTML using new Angular attribute def 2025-01-08 16:36:46 +00:00
aegilops
2dc9e7bab7 Moved def from AngularJSCore to Angular2 2025-01-08 16:36:10 +00:00
Edward Minnix III
af15ebad7e Merge pull request #18426 from egregius313/egregius313/go/mad/database/sqlx
Go: Add `database` source models for the `jmoiron/sqlx` package
2025-01-08 11:31:36 -05:00
Owen Mansel-Chan
0f8f5d2793 Merge branch 'main' into post-release-prep/codeql-cli-2.20.1 2025-01-08 16:28:23 +00:00
Owen Mansel-Chan
5cc34a16d1 Merge pull request #18439 from egregius313/egregius313/go/mad/database-sql/revert-varargs
Go: Revert MaD models for `database/sql` to use QL instead
2025-01-08 16:24:04 +00:00
Paolo Tranquilli
53b0a3464d Merge branch 'main' into redsun82/rust-ast-generator-mustache 2025-01-08 17:09:39 +01:00
Paolo Tranquilli
3bf2416e56 Merge pull request #18313 from github/redsun82/rust-mute-warnings-in-uncompiled-blocks
Rust: exclude extraction of code excluded by `cfg`
2025-01-08 17:03:29 +01:00
Taus
4141b4fb8a Python: Add metrics query for type annotations
Adds a query that counts the number of type annotations of various
kinds. Intended to be used with something like MRVA to inform our
modelling decisions.

Currently the query counts the following "interesting" types in addition
to the total number of types:
- Built-in types (which are less likely to be interesting from a
modelling perspective)
- Forward declarations (i.e. annotations inside strings) which will
require a fair bit of QL machinery to interpret.
- Simple types (stuff like `foo` or `foo.bar.baz`)
- Optional types (stuff like `Optional[foo]` which from a modelling
perspective should likely be treated the same as `foo`)
- Complex types (anything that contains more complex type constructions
such as instantiations of generic types)
2025-01-08 15:41:31 +00:00
yoff
21e7a0e828 Merge branch 'main' into shared/locations-in-range-analysis 2025-01-08 16:40:59 +01:00
Ed Minnix
8e4939ee5d Add tests for Conn 2025-01-08 10:25:57 -05:00
Ed Minnix
a4afff2c3c Add extra variable for tracking flow 2025-01-08 10:25:55 -05:00
Ed Minnix
e7f99cdfb7 Order DB, NamedStmt, Stmt, Tx in tests 2025-01-08 10:25:54 -05:00
Ed Minnix
4ed0f7fc40 Alphabetical ordering 2025-01-08 10:25:52 -05:00
Ed Minnix
cc54e75235 Remove duplicate stubs 2025-01-08 10:25:51 -05:00
Ed Minnix
67070e0f2a Change note 2025-01-08 10:25:49 -05:00
Ed Minnix
22a4cd3698 sqlx tests 2025-01-08 10:25:48 -05:00
Ed Minnix
89a68fed7c Vendor sqlx stubs for test 2025-01-08 10:25:42 -05:00
Ed Minnix
4966ed1280 Add missing models 2025-01-08 10:24:12 -05:00
Ed Minnix
b916a7b5a7 Remove duplicate models 2025-01-08 10:24:10 -05:00
Ed Minnix
05ffffe651 jmoiron/sqlx models 2025-01-08 10:24:06 -05:00
Ed Minnix
bc68e4456a Fix test results 2025-01-08 10:22:00 -05:00
Edward Minnix III
7a589c4081 Merge pull request #18405 from egregius313/egregius313/go/mad/database/gorm
Go: Model sources from the `gorm.io/gorm` package
2025-01-08 10:20:10 -05:00
Edward Minnix III
6ac82d6af2 Merge pull request #18440 from egregius313/egregius313/csharp/blazor/traced-integration-tests
C#: Traced-mode integration tests for Blazor
2025-01-08 10:19:12 -05:00
Tom Hvitved
9e5a814f72 Merge pull request #18315 from hvitved/ruby/dataflow-types
Ruby: Track types in data flow
2025-01-08 15:26:38 +01:00
Tom Hvitved
868caf948c Rename {Source,Sink}Node to {Source,Sink}Element 2025-01-08 15:21:43 +01:00
Asger F
10d5d09ad1 JS: Polish taint-tracking section in response to review comment 2025-01-08 14:45:31 +01:00
Tom Hvitved
0dccbb9349 Rust: Add two more AST consistency checks 2025-01-08 14:30:01 +01:00
Tom Hvitved
033cd1778e Rust: Include index in Format.getArgument 2025-01-08 14:04:48 +01:00
Nora Dimitrijević
b5935fcd2d Language reference: mention BigInt.bitLength() 2025-01-08 14:01:01 +01:00
yoff
f02995d72b shared: add qldoc 2025-01-08 13:33:03 +01:00
yoff
aca5a51a78 Merge branch 'main' into shared/add-location-to-typetracking-nodes 2025-01-08 12:47:05 +01:00
Asger F
ecccc7ce8c Update docs/codeql/codeql-language-guides/migrating-javascript-dataflow-queries.rst
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2025-01-08 12:26:42 +01:00
Asger F
26d85d5ece Apply suggestions from code review
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2025-01-08 12:26:18 +01:00
Paolo Tranquilli
c7a9889606 Rust: update rust-analyzer 2025-01-08 11:14:08 +01:00
Asger F
b6b93dcead Merge pull request #18392 from asgerf/jss/deprecate-modules
JS: Deprecate some .qll files
2025-01-08 11:10:28 +01:00
Paolo Tranquilli
bca5f4b74c Merge pull request #18441 from github/redsun82/cargo-upgrade
Ruby, Rust: upgrade all cargo dependencies (excluding `rust-analyzer`)
2025-01-08 10:56:58 +01:00
Paolo Tranquilli
d2c7decd02 Rust/Ruby: upgrade all cargo dependencies excluding rust-analyzer
The rust-analyzer update will need more work as it seems to break rust
analysis on windows.

This was carried out using `cargo upgrade` from `cargo-edit`:
* getting exclusions options for rust-analyzer with
   ```bash
   cargo upgrade -i --dry-run | grep -o 'ra_ap_\S\+' | sort -u | sed 's/^/--exclude=/' > /tmp/exclude
   ```
* running
   ```bash
   cargo upgrade -i $(cat /tmp/exclude)
   misc/bazel/3rdparty/update_cargo_deps.sh
   ```
2025-01-08 09:57:11 +01:00
Tom Hvitved
96bf81ad6c Merge pull request #18333 from hvitved/dataflow/stage1-param-self-prune
Data flow: Prune parameter-self flow in stage 1
2025-01-08 09:16:12 +01:00
Asger F
062391334e JS: Remove notes about changing API in the future 2025-01-08 09:15:13 +01:00
Asger F
df9b95575e JS: Add deprecation qldoc to Configuration classes 2025-01-08 09:15:12 +01:00
Asger F
e7d267e5d2 JS: Add migration guide and change note 2025-01-08 09:12:38 +01:00
Asger F
36f0d2f63e JS: Move VarAccessBarrier outside the deprecated Configuration.qll file 2025-01-08 08:56:53 +01:00
Asger F
c47419e66d JS: Remove an obsolete TODO comment (this has been fixed) 2025-01-08 08:54:41 +01:00
Ed Minnix
819bd3b56f Remove build-mode: none tests 2025-01-07 22:59:42 -05:00
Ed Minnix
ba8489624d Change order of test results 2025-01-07 22:57:37 -05:00
Ed Minnix
32fe74dd01 Remove environment-specific path 2025-01-07 22:57:35 -05:00
Ed Minnix
ea5248912d .NET SDK version 2025-01-07 22:57:34 -05:00
Ed Minnix
144053baea Fix test results 2025-01-07 22:57:32 -05:00
Ed Minnix
068acfd36a Fix path segment 2025-01-07 22:57:31 -05:00
Ed Minnix
e9ac32fbd1 Simplify generated file paths 2025-01-07 22:57:29 -05:00
Ed Minnix
9089c9ca16 Remove line blocking tests 2025-01-07 22:57:27 -05:00
Ed Minnix
6b7f2a725e Make .NET 9 test properly .NET 9 2025-01-07 22:57:26 -05:00
Ed Minnix
b249ee5a01 Basic integration tests 2025-01-07 22:57:23 -05:00
Ed Minnix
e7b0329d5d Test missing models 2025-01-07 22:08:37 -05:00
Ed Minnix
55c6bea08b Add missing models 2025-01-07 22:08:21 -05:00
Ed Minnix
4e5d2e27b1 user.go for example type 2025-01-07 22:07:58 -05:00
Ed Minnix
c086945a9e Fix typo 2025-01-07 21:14:25 -05:00
Ed Minnix
6a862f2f80 Add Rows::Next back 2025-01-07 21:10:48 -05:00
Ed Minnix
ca1e9d7c75 Revert "database/sql summary models for Row types"
This reverts commit 80ad349a48.
2025-01-07 21:08:43 -05:00
Chad Bentz
6b3098d26c Add configuration instructions for trusted Action publishers using data extensions 2025-01-07 19:26:18 -05:00
Chad Bentz
bccec0a711 Format 2025-01-07 17:25:40 -05:00
Chad Bentz
3e94a4c2bf Refactor trusted actions owner model
- use existing data extensions config and yml folder
- rename from trustedActionsOwner to trustedActionsOwnerDataModel
- update related predicates
2025-01-07 17:22:24 -05:00
github-actions[bot]
fb20f6ca63 Post-release preparation for codeql-cli-2.20.1 2025-01-07 22:07:40 +00:00
Chad Bentz
35587ed3e7 Format lib 2025-01-07 17:02:37 -05:00
Chad Bentz
e4cfd97069 Format 2025-01-07 17:01:33 -05:00
Dave Bartolomeo
d42788844f Merge pull request #18436 from github/release-prep/2.20.1
Release preparation for version 2.20.1
2025-01-07 15:59:15 -05:00
Dave Bartolomeo
4c53caf021 Update python/ql/lib/change-notes/released/3.1.0.md 2025-01-07 15:58:28 -05:00
Dave Bartolomeo
45c00d6880 Update python/ql/lib/CHANGELOG.md 2025-01-07 15:58:19 -05:00
Chad Bentz
8f9aecd76f Add change notes for expanding Trusted Action owner list using data extensions 2025-01-07 15:55:58 -05:00
github-actions[bot]
88b6f1e79a Release preparation for version 2.20.1 2025-01-07 20:50:36 +00:00
Dave Bartolomeo
1fb597376e Merge pull request #18434 from github/dbartol/revert-go
Revert two Go PRs
2025-01-07 15:43:46 -05:00
Chad Bentz
22e7b9a825 Convert trusted actions list to data extension 2025-01-07 15:35:12 -05:00
Dave Bartolomeo
1323b3f067 Revert "Merge pull request #18235 from owen-mc/go/varargs-out-param"
This reverts commit 4f8645b4dd, reversing
changes made to 22aaf74184.
2025-01-07 14:59:31 -05:00
Dave Bartolomeo
3dcf49cea0 Revert "Merge pull request #18275 from owen-mc/go/mad/variadic-params-sources"
This reverts commit 7ab06fca2f, reversing
changes made to 0c5e260ae6.
2025-01-07 14:55:06 -05:00
Dave Bartolomeo
f12ff2d77f Merge pull request #18432 from github/revert-18430-release-prep/2.20.1
Revert "Release preparation for version 2.20.1"
2025-01-07 13:35:59 -05:00
Dave Bartolomeo
72a53c4b23 Revert "Release preparation for version 2.20.1" 2025-01-07 13:32:23 -05:00
Dave Bartolomeo
3da6adf1e8 Merge pull request #18430 from github/release-prep/2.20.1
Release preparation for version 2.20.1
2025-01-07 12:24:41 -05:00
Dave Bartolomeo
cb31394729 Update python/ql/lib/CHANGELOG.md 2025-01-07 12:23:52 -05:00
Dave Bartolomeo
2e46d26eca Update python/ql/lib/change-notes/released/3.1.0.md 2025-01-07 12:22:31 -05:00
github-actions[bot]
fbf9f2fff8 Release preparation for version 2.20.1 2025-01-07 17:20:13 +00:00
Dave Bartolomeo
de2460e8b1 Merge pull request #18428 from github/revert-18419-release-prep/2.20.1
Revert "Release preparation for version 2.20.1"
2025-01-07 12:17:25 -05:00
Dave Bartolomeo
22e030584c Revert "Release preparation for version 2.20.1" 2025-01-07 12:14:27 -05:00
Owen Mansel-Chan
7688f46650 Add change note 2025-01-07 17:08:23 +00:00
Paolo Tranquilli
b390fac105 Rust: make ast-generator use mustache templates
This simplifies the code and decouples the code template from the data
that is fed into it.
2025-01-07 18:05:59 +01:00
Owen Mansel-Chan
5959a736ac Only recommend GCM, and tighten wording 2025-01-07 16:55:10 +00:00
Owen Mansel-Chan
9cc614ac2d Allow jax-rs path annotation inheritance 2025-01-07 16:44:12 +00:00
Jeroen Ketema
0258ce70a4 Merge pull request #18362 from github/jketema/template-parameters-4
C++: Support concept templates
2025-01-07 16:42:56 +01:00
Owen Mansel-Chan
de1b374e0e Test JAX-RS class/interface annotation inheritance 2025-01-07 15:28:41 +00:00
Joe Farebrother
35961e454b Fix tests to check for the correct type 2025-01-07 15:23:07 +00:00
Joe Farebrother
8b174ea07c Apply suggestions from code review - update doc comments
Co-authored-by: yoff <lerchedahl@gmail.com>
2025-01-07 15:21:19 +00:00
Ian Lynagh
b18230af23 Merge pull request #18409 from igfoo/igfoo/supJ
Java: Clarify supported language features
2025-01-07 15:07:15 +00:00
Chris Smowton
1761721ef6 Merge pull request #18415 from smowton/smowton/feature/exclude-writereplace-from-serializable-checks
Java: exclude `writeReplace`-defining classes from `Serializable` check
2025-01-07 15:55:47 +01:00
Tom Hvitved
aa024010b1 Address review comment 2025-01-07 14:23:54 +01:00
Jeroen Ketema
b6f412bbad C++: Add change notes 2025-01-07 14:21:45 +01:00
Jeroen Ketema
06f6bac169 C++: Silence alerts coming from CMake test compilation files 2025-01-07 14:12:55 +01:00
Jeroen Ketema
ede801ed88 C++: Add CMake test compilation test 2025-01-07 14:12:11 +01:00
Anders Schack-Mulligen
148b78a5f8 Merge pull request #18423 from aschackmull/dataflow/del-deadcode
Dataflow: Remove some dead code.
2025-01-07 14:08:37 +01:00
Jeroen Ketema
91f9fb24d9 Merge pull request #18424 from jketema/rm-change
Remove change note that somehow occurs in the CodeQL root directory
2025-01-07 13:52:16 +01:00
Ian Lynagh
8652f611b7 Update docs/codeql/reusables/supported-versions-compilers.rst
Co-authored-by: Edward Minnix III <egregius313@github.com>
2025-01-07 12:51:21 +00:00
Ed Minnix
d28e03cda5 Change note 2025-01-07 07:34:27 -05:00
Ed Minnix
c7be77c1af Add gorm tests 2025-01-07 07:34:25 -05:00
Ed Minnix
f38008e73d Add test vendoring 2025-01-07 07:34:23 -05:00
Ed Minnix
20d1ae1396 Fix Association model 2025-01-07 07:34:22 -05:00
Ed Minnix
796a81a0ba gorm models 2025-01-07 07:34:20 -05:00
Jeroen Ketema
4b7b2a2580 Remove change note that somehow occurs in the CodeQL root directory 2025-01-07 13:32:25 +01:00
Edward Minnix III
651052ba7a Merge pull request #18402 from egregius313/egregius313/go/mad/database/database-sql
Go: Add `database` source models for the `database/sql` and `database/sql/driver` packages
2025-01-07 07:31:06 -05:00
Michael B. Gale
96797b4570 Merge pull request #18422 from github/dependabot/go_modules/go/extractor/extractor-dependencies-a7e3f36068
Bump golang.org/x/tools from 0.28.0 to 0.29.0 in /go/extractor in the extractor-dependencies group
2025-01-07 12:11:27 +00:00
Paolo Tranquilli
b4811906ea Rust: address review 2025-01-07 13:05:19 +01:00
Paolo Tranquilli
ce2877da5d Merge branch 'main' into redsun82/rust-mute-warnings-in-uncompiled-blocks 2025-01-07 13:00:04 +01:00
Anders Schack-Mulligen
eea85d8f82 Dataflow: Remove some dead code. 2025-01-07 12:56:26 +01:00
Ed Minnix
b3d8c6b2e8 Add error handling to test 2025-01-07 06:46:54 -05:00
Ed Minnix
60cf1eccae Update test results 2025-01-07 06:41:39 -05:00
Ed Minnix
0f06ddcff0 Change note 2025-01-07 06:41:37 -05:00
Ed Minnix
128c02b488 database/sql/driver tests 2025-01-07 06:41:36 -05:00
Ed Minnix
3e65c8de36 database/sql tests 2025-01-07 06:41:34 -05:00
Ed Minnix
e9fdc8a34c database source tests 2025-01-07 06:41:33 -05:00
Ed Minnix
80ad349a48 database/sql summary models for Row types 2025-01-07 06:41:31 -05:00
Ed Minnix
8093d57781 database/sql and database/sql/driver source models 2025-01-07 06:41:30 -05:00
Edward Minnix III
27852ddd05 Merge pull request #18398 from egregius313/egregius313/go/add-postprocessing-to-storedxss-qlref
Go: Add post-processing to StoredXss.qlref test
2025-01-07 06:36:05 -05:00
Jeroen Ketema
0f5b70a802 C++: Add upgrade and downgrade scripts 2025-01-07 11:30:22 +01:00
Jeroen Ketema
2d7256862a C++: Update dbscheme stats file 2025-01-07 11:28:32 +01:00
Jeroen Ketema
3812ee463d C++: Add change note 2025-01-07 11:26:20 +01:00
Jeroen Ketema
a2d66ee155 C++: Extend the dbscheme with concept templates 2025-01-07 11:26:16 +01:00
Asger F
abea019751 Merge pull request #18412 from asgerf/jss/perf-fixes
JS: Fix a few perf issues
2025-01-07 11:20:57 +01:00
Asger F
f17cc5af15 JS: Move all hidden node definitions into DataFlowPrivate 2025-01-07 10:44:09 +01:00
Asger F
47cc3c09f5 JS: Deprecate an import 2025-01-07 10:43:40 +01:00
Tamás Vajk
e67f4be699 Merge pull request #18407 from tamasvajk/fix/razor-relative-path
C#: Change source generated razor file paths to be relative to csproj
2025-01-07 08:35:56 +01:00
dependabot[bot]
d7eaf9012f Bump golang.org/x/tools
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/tools` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-07 03:20:27 +00:00
Chris Smowton
dd0012edcb ASCII 2025-01-06 23:28:02 +01:00
Chris Smowton
03c6529961 Spelling 2025-01-06 22:46:22 +01:00
Mathias Vorreiter Pedersen
7a9d341cb7 Merge pull request #18416 from MathiasVP/more-robust-param-name-matching-arrays
C++: Also resolve typedefs nested inside `ArrayType`s
2025-01-06 18:34:29 +00:00
Dave Bartolomeo
5d0c55ec33 Merge pull request #18419 from github/release-prep/2.20.1
Release preparation for version 2.20.1
2025-01-06 13:27:00 -05:00
Dave Bartolomeo
8a2398aaf0 Update python/ql/lib/CHANGELOG.md 2025-01-06 13:26:09 -05:00
github-actions[bot]
a121c5a5d0 Release preparation for version 2.20.1 2025-01-06 18:20:22 +00:00
aegilops
4530118681 Comment out hardcoded definition of sink 2025-01-06 17:33:31 +00:00
aegilops
820fe6cd04 Formatting 2025-01-06 16:59:04 +00:00
Cornelius Riemenschneider
0c2e05717f Merge pull request #18417 from github/redsun82/cpp-analysis
Swift: fix CodeQL analysis workflow
2025-01-06 17:53:21 +01:00
aegilops
564df365cb Merge branch 'main' of https://github.com/github/codeql into angular-sources-sinks 2025-01-06 16:53:02 +00:00
aegilops
322c731ac3 Attempt at AttributeDefinition to generalise Angular Renderer2 support 2025-01-06 16:52:38 +00:00
aegilops
6fb201372b Update changelog note to remove new source 2025-01-06 16:51:59 +00:00
aegilops
e414b8c5be Remove @Input() decorated members as remote sources, in favour of a later Threat Model 2025-01-06 16:51:35 +00:00
Paolo Tranquilli
370af8ac18 Swift: fix CodeQL analysis workflow 2025-01-06 17:12:37 +01:00
aegilops
8dac00aa83 Change from getParameter() to getArgument() 2025-01-06 15:43:47 +00:00
Mathias Vorreiter Pedersen
d935e9fb0f C++: Also resolve typedefs nested inside arrays. 2025-01-06 14:50:37 +00:00
Mathias Vorreiter Pedersen
fdc305298d C++: Add testcase with missing MaD support for resolving typedefs inside arrays. 2025-01-06 14:46:55 +00:00
Chris Smowton
d0eab598b1 Change note 2025-01-06 14:44:12 +00:00
Chris Smowton
5c2df36786 Exclude classes with a writeReplace method from serializability checks 2025-01-06 14:42:44 +00:00
Mathias Vorreiter Pedersen
493e75728c Merge pull request #18386 from MathiasVP/more-robust-param-name-matching
C++: Resolve `typedef`s when matching MaD parameters
2025-01-06 14:40:17 +00:00
Geoffrey White
9d178ab8d6 Rust: Fix the failing integration tests. 2025-01-06 14:05:02 +00:00
Geoffrey White
f93aac07c2 Rust: Correct / clarify some QLDoc. 2025-01-06 13:50:41 +00:00
Asger F
0cdda87161 JS: Restrict AP length in prototype-polluting function 2025-01-06 14:33:41 +01:00
Mathias Vorreiter Pedersen
99ad184f57 Update cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-01-06 13:32:11 +00:00
Mathias Vorreiter Pedersen
75a3b6b613 Update cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-01-06 13:32:04 +00:00
Mathias Vorreiter Pedersen
f3085fc865 Update cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-01-06 13:30:59 +00:00
Mathias Vorreiter Pedersen
bfd18bc3e3 Update cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-01-06 13:30:50 +00:00
Asger F
7ccb476b1b JS: Restrict AP length in ExceptionXss 2025-01-06 14:28:58 +01:00
Asger F
23d7420cec JS: Hide default exceptional return node 2025-01-06 14:27:20 +01:00
Geoffrey White
e1e980c2e8 Rust: Add sensitive data to summary queries. 2025-01-06 13:26:27 +00:00
Geoffrey White
821eb4f3e6 Rust: Add sensitive data library. 2025-01-06 13:26:26 +00:00
Geoffrey White
c77bf2b4eb Rust: Add a test for sensitive data. 2025-01-06 13:26:25 +00:00
Simon Friis Vindum
7248fb70c3 Merge pull request #18394 from paldepind/rust-format
Rust: Value flow and taint flow through formatting strings
2025-01-06 13:55:04 +01:00
Jeroen Ketema
01a7a5323b Merge pull request #18360 from github/jketema/template-parameters-3
C++: Support arguments and instantiations of template template parameters
2025-01-06 13:41:45 +01:00
Ian Lynagh
c5ebc19a28 Java: Clarify supported langauge features 2025-01-06 12:31:46 +00:00
Jeroen Ketema
0942945fa1 Update cpp/ql/lib/semmle/code/cpp/TemplateParameter.qll
Co-authored-by: Calum Grant <42069085+calumgrant@users.noreply.github.com>
2025-01-06 13:30:43 +01:00
Tom Hvitved
1b31c90d26 Implement FlowSummaryImpl stubs 2025-01-06 13:26:51 +01:00
Tom Hvitved
8f6ae6274d Rust: Add support for MaD sources and sinks with access paths 2025-01-06 13:26:49 +01:00
Tom Hvitved
37212cc43f Ruby: Add change note 2025-01-06 13:26:13 +01:00
Tom Hvitved
978a816f11 Ruby: Track types in data flow 2025-01-06 13:26:10 +01:00
Tom Hvitved
06ba814929 Data flow: Prune parameter-self flow in stage 1 2025-01-06 13:23:03 +01:00
Asger F
e2af19b946 JS: Restrict "get" step to Map objects 2025-01-06 13:17:32 +01:00
Simon Friis Vindum
c55b256d47 Rust: Remove accidentally commited expected files 2025-01-06 12:01:03 +01:00
Paolo Tranquilli
2e1e46c866 Merge pull request #18352 from github/redsun82/rust-codeql-config
Rust: extend `paths-ignore` to all `rust/ql`
2025-01-06 11:53:33 +01:00
Tamas Vajk
31dbadcbeb Add change note 2025-01-06 11:41:11 +01:00
Tamas Vajk
c9fab0b071 C#: Change source generated razor file paths to be relative to csproj 2025-01-06 11:10:28 +01:00
Asger F
4c9f406e34 JS: Exclude some sinks in UnvalidatedDynamicMethodCall 2025-01-06 10:32:11 +01:00
Paolo Tranquilli
10d8aa454b Merge branch 'main' into redsun82/rust-mute-warnings-in-uncompiled-blocks 2025-01-06 10:01:57 +01:00
Ed Minnix
c02430607a Add post-processing to StoredXss.qlref test 2025-01-03 13:26:29 -05:00
aegilops
aba8be2902 Changelog for Angular source/sink update 2025-01-03 17:07:35 +00:00
aegilops
7128700003 Simplified AngularInputUse class 2025-01-03 17:02:55 +00:00
aegilops
4891c1e5fe Added QLdoc and simplified QL in source class 2025-01-03 16:50:47 +00:00
aegilops
4773917876 Formatting 2025-01-03 16:43:00 +00:00
Paul Hodgkinson
a23f4ee007 Merge branch 'main' into angular-sources-sinks 2025-01-03 16:38:48 +00:00
aegilops
0f64822356 New remote source - reading from an @Input() decorated class member 2025-01-03 16:34:15 +00:00
aegilops
09e4c78b0f New XSS sink - writing to innerHTML using the Angular Renderer2 API 2025-01-03 16:33:42 +00:00
Ian Lynagh
78b277b46f Java/Kotlin: Add a changenote for CODEQL_PATH_TRANSFORMER support. 2025-01-03 16:02:36 +00:00
Ian Lynagh
dedb0cb11f Kotlin: Support CODEQL_PATH_TRANSFORMER 2025-01-03 16:02:36 +00:00
Simon Friis Vindum
5c64a8c948 Rust: Accept expected changes and fix other CI complaints 2025-01-03 16:38:11 +01:00
Michael Nebel
caaf29115c C#: Add change note. 2025-01-03 16:27:03 +01:00
Michael Nebel
ff32a382b0 C#: Update test expected output. 2025-01-03 16:27:02 +01:00
Michael Nebel
cac1e04de8 C#: Improve unification logic to handle ref structs. 2025-01-03 16:27:00 +01:00
Michael Nebel
5ddc37867e C#: Update test expected output. 2025-01-03 16:26:58 +01:00
Michael Nebel
c439beb4b4 C#: Introduce a class for ref structs. 2025-01-03 16:26:57 +01:00
Michael Nebel
33939a8041 C#: Update test expected output. 2025-01-03 15:36:08 +01:00
Michael Nebel
ef5ae3f1ae C#: Add some unification and viable callable test cases. 2025-01-03 15:36:07 +01:00
Michael Nebel
b9fce5eb9d C#: Update boxing conversion expected output. 2025-01-03 15:36:06 +01:00
Michael Nebel
ef9f09ebfc C#: Do not consider ref struct as being convertible to object, dynamic and valuetype. 2025-01-03 15:36:04 +01:00
Michael Nebel
9a2edc3d5c C#: Add ref struct boxing example (false positive). 2025-01-03 15:36:02 +01:00
Michael Nebel
41dc4a5503 C#: Add extractor support for the allows ref struct general type parameter constraint. 2025-01-03 15:36:00 +01:00
Michael Nebel
d9158c8cd5 Fixup of second commit. 2025-01-03 15:35:59 +01:00
Michael Nebel
958d8f1f01 C#: Add extractor support for the notnull general type parameter constraint. 2025-01-03 15:35:49 +01:00
Jeroen Ketema
b0062fc727 Merge pull request #18387 from jketema/change-tweak
C++: Slightly tweak change note to make it more consistent with others
2025-01-03 15:32:56 +01:00
Michael Nebel
c0974f364e C#: General type constraints tests. 2025-01-03 15:12:35 +01:00
Michael Nebel
7a7d8e40a7 Merge pull request #18384 from michaelnebel/csharp13/escapechars
C# 13: [TEST ONLY] Add test using the new escape char for ESCAPE.
2025-01-03 15:09:27 +01:00
Michael Nebel
49abfdfe4a Merge pull request #18348 from michaelnebel/csharp/locktype
C# 13: [TEST ONLY] Add test using the System.Threading.Lock type.
2025-01-03 15:08:46 +01:00
Michael Nebel
7cdaa799fc Merge pull request #18329 from michaelnebel/csharp/params
C# 13: params modifier on collection types.
2025-01-03 15:07:47 +01:00
Simon Friis Vindum
cd957ba63b Rust: Add models for functions used inside format! macro 2025-01-03 14:09:23 +01:00
Simon Friis Vindum
0d19fb6040 Rust: Add taint from children of format_args to format_args 2025-01-03 14:06:47 +01:00
Simon Friis Vindum
2ef9339d00 Rust: Generate CFG node for FormatArgsArg 2025-01-03 13:58:25 +01:00
Simon Friis Vindum
42d125676e Rust: Value flow through macro calls 2025-01-03 13:47:29 +01:00
Simon Friis Vindum
f09632df58 Rust: Add data flow tests for macros and format_args 2025-01-03 13:28:19 +01:00
Asger F
25f5ecba25 JS: Deprecate the Configuration.qll file 2025-01-03 11:41:41 +01:00
Asger F
0339bd0f3e JS: Deprecate forward/backward exploration modules 2025-01-03 11:41:39 +01:00
Asger F
7e4fbe2f14 Merge pull request #18326 from asgerf/js/shared-dataflow-bump
JS: Merge 'main' into shared dataflow branch
2025-01-03 11:24:37 +01:00
Mathias Vorreiter Pedersen
9672af333a C++: Cache 'interpretElement'. This reduces DIL size of 'cpp/unbounded-write' by about 8%. 2025-01-03 10:46:57 +01:00
Jeroen Ketema
8e660190a9 C++: Add dbscheme upgrade and downgrade script 2025-01-02 21:32:03 +01:00
Jeroen Ketema
795278d5ac C++: Add change note 2025-01-02 21:31:58 +01:00
Jeroen Ketema
cfb98acbf1 C++: Slightly tweak change note to make it more consistent with others 2025-01-02 21:29:04 +01:00
Jeroen Ketema
6bf08f550e C++: Update dbscheme stats file 2025-01-02 17:59:16 +01:00
Jeroen Ketema
84775b71c3 C++: Support arguments and instantiations of template template parameters 2025-01-02 17:59:06 +01:00
Mathias Vorreiter Pedersen
682dd42caa C++: Accept test changes. 2025-01-02 16:10:19 +01:00
Mathias Vorreiter Pedersen
3d3feb6354 C++: Also resolve typedefs when parsing MaD model parameter names. 2025-01-02 16:06:46 +01:00
Mathias Vorreiter Pedersen
5ccc12cea1 C++: Add a testcase that demonstrates the problem with MaD and typedefs. 2025-01-02 16:06:45 +01:00
Mathias Vorreiter Pedersen
f23e56bdca Merge pull request #18261 from MathiasVP/add-more-atl-string-models
C++: Add more MaD models for ATL string classes
2025-01-02 15:06:04 +00:00
Mathias Vorreiter Pedersen
cda007bae7 C++: Fix constructor model. 2025-01-02 15:39:31 +01:00
Mathias Vorreiter Pedersen
289b938b4d C++: Fix testcase. 2025-01-02 15:37:39 +01:00
Mathias Vorreiter Pedersen
d8cfa711ad C++: Fix testcase for conversion operator. 2025-01-02 15:35:21 +01:00
Mathias Vorreiter Pedersen
c1b997b2cb C++: Make the string constructors value-preserving. 2025-01-02 15:25:23 +01:00
Mathias Vorreiter Pedersen
b8e54627f4 C++: Make some of the string models taint instead of value-preserving. 2025-01-02 15:22:42 +01:00
Mathias Vorreiter Pedersen
052b6f6ec4 C++: Accept test changes. 2025-01-02 15:22:10 +01:00
Mathias Vorreiter Pedersen
71ca9412b0 Update cpp/ql/lib/ext/CSimpleStringT.model.yml
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-01-02 14:16:31 +00:00
Michael Nebel
75e562d0f0 C#: Add test using the new escape char for ESCAPE. 2025-01-02 12:51:22 +01:00
Michael Nebel
fe4ec59b4e C#: Address review comments. 2025-01-02 11:21:29 +01:00
Michael Nebel
596fdf0cfa C#: Add change-note. 2025-01-02 11:13:14 +01:00
Michael Nebel
4b7a6c5c7f C#: Let the params test look in reference assemblies and update params to allow ParamsCollectionType. 2025-01-02 11:13:13 +01:00
Michael Nebel
c8e72c08fb C#: Update tests expected output. 2025-01-02 11:13:12 +01:00
Michael Nebel
8f5b8f494f C#: Update dispatch logic and other libraries to handle params collection types. 2025-01-02 11:13:10 +01:00
Michael Nebel
89c16abf59 C#: Add more tests for params and update expected output. 2025-01-02 11:13:09 +01:00
Michael Nebel
8e9551dff7 C#: Exclude non source parameters from arguments test cases (otherwise the test reports indexer access and calls to Add for list and collection creations). 2025-01-02 11:13:07 +01:00
Michael Nebel
68ca307ac9 Merge pull request #18357 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-01-02 10:15:04 +01:00
github-actions[bot]
829cfa9517 Add changed framework coverage reports 2025-01-02 00:20:39 +00:00
Mathias Vorreiter Pedersen
e7773770fa C++: Fix missing return value flow out of 'operator=' in lots of MaD models. 2024-12-23 12:00:41 +01:00
Paolo Tranquilli
c95f8d797c Merge pull request #18347 from github/redsun82/rust-include-test-code-again
Rust: reinstate extraction of test code
2024-12-21 09:00:37 +01:00
Edward Minnix III
f06ad7c728 Merge pull request #18322 from egregius313/egregius313/csharp/blazor/modeling/sources
C#: Add common sources for Blazor components
2024-12-20 17:11:48 -05:00
Dave Bartolomeo
2aba49f074 Merge pull request #18356 from github/dbartol/actions-suites
Update suites for Actions queries
2024-12-20 15:54:44 -05:00
Dave Bartolomeo
90efbf5172 Update suites for Actions queries 2024-12-20 14:37:46 -05:00
Dave Bartolomeo
e9a04b8839 Mark UnversionedImmutableAction query as internal 2024-12-20 14:37:32 -05:00
Andrew Eisenberg
553e2c5757 Merge pull request #18354 from github/aeisenberg/actions-ownership
Update CODEOWNERS
2024-12-20 11:10:29 -08:00
Jeroen Ketema
b60c86077d Merge pull request #18353 from jketema/template-parameters-2
C++: Handle `sizeof...` for types and template template parameters
2024-12-20 19:15:50 +01:00
Andrew Eisenberg
9bff89c910 Update CODEOWNERS
Add ownership for the actions queries.

We don't yet have a `codeql-actions` team. So, using the dynamic team for this.
2024-12-20 09:30:15 -08:00
Andrew Eisenberg
fd7bd6b07d Merge pull request #18351 from KyFaSt/clarify-immutable-actions-text
Clarify immutable actions help text
2024-12-20 09:28:01 -08:00
Kylie Stradley
690924f72b Update actions/ql/src/Security/CWE-829/UnversionedImmutableAction.md
Co-authored-by: Andrew Eisenberg <aeisenberg@github.com>
2024-12-20 12:04:42 -05:00
Jeroen Ketema
659ec66b5e Merge pull request #18350 from jketema/test-cleanup-2
C++: Simplify more `semmle-extractor-options`
2024-12-20 17:23:54 +01:00
Kylie Stradley
dc705ad623 indicate immutable actions are only available for internal use at this time 2024-12-20 11:19:15 -05:00
Jeroen Ketema
e9b9dc23f8 Update cpp/ql/lib/change-notes/2024-12-20-sizeof-pack.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2024-12-20 17:11:38 +01:00
Jeroen Ketema
46e9d0aa0c Merge pull request #18334 from jketema/template-parameters-1
C++: Update test after extractor changes
2024-12-20 17:08:31 +01:00
Paolo Tranquilli
b7437a4550 Rust: extend paths-ignore to all rust/ql
This will also exclude code examples in `rust/ql/src/queries`.
2024-12-20 16:13:51 +01:00
Jeroen Ketema
46b230ae92 C++: Simplify more semmle-extractor-options
This will allow us to drop a number of special cases from the
extractor.
2024-12-20 16:01:19 +01:00
Kylie Stradley
2dd3adac51 clarify immutable actions help text 2024-12-20 09:51:51 -05:00
Michael Nebel
1aa7c3fdcc C#: Add test for the new lock type. 2024-12-20 15:02:36 +01:00
Michael Nebel
29a0db8053 C#: Update test expected output. 2024-12-20 15:00:54 +01:00
Michael Nebel
4a716c6005 C#: Add a test example in the statements test. 2024-12-20 15:00:30 +01:00
Paolo Tranquilli
f13d03b18c Rust: fix typo (thanks copilot!) 2024-12-20 14:18:36 +01:00
Florin Coada
5f812342a8 Merge pull request #18338 from github/changedocs/2.20.0
Update CodeQL changelog for versions 2.19.4 and 2.20.0
2024-12-20 15:12:55 +02:00
Paolo Tranquilli
485586f780 Rust: reinstate extraction of test code
Users will still be able to opt out:
* for unit tests, by providing the `cargo_cfg_overrides=-test` extractor
  option
* for integration tests, by excluding the test files from the analysis
  using `paths-ignore` in the codescanning configuration file

We may want to revisit whether we want a single option for both. Also
further work will be needed to restrict our security queries to non-test
code on the QL side.
2024-12-20 14:12:41 +01:00
Jeroen Ketema
6ecaf20cdd C++: Update expected test results 2024-12-20 13:53:35 +01:00
Jeroen Ketema
ecf3c53eba C++: Introduce SizeofPackOperator subclasses for expressions and types
Note that template template parameters are considered types in this context.
2024-12-20 13:51:45 +01:00
Jeroen Ketema
90d8fb1a05 Merge pull request #18335 from jketema/test-cleanup
C++: Simplify some semmle-extractor-options in tests
2024-12-20 13:43:59 +01:00
Arthur Baars
2b2a37353b Merge pull request #18328 from github/redsun82/fix-cargo-fmt-checks
CI: fix rust formatting
2024-12-20 13:41:28 +01:00
Jonas Jensen
2b1c70c33b Java: Diff-informed PolynomialReDoS.ql
This and other queries would also benefit from making `RegexFlow`
diff-informed. That will come later.
2024-12-20 13:01:09 +01:00
Jonas Jensen
5bebae9abf Java: Diff-informed ImproperIntentVerification.ql 2024-12-20 13:01:07 +01:00
Jonas Jensen
e799bff744 Java: Diff-informed TaintedPermissionsCheck.ql 2024-12-20 13:01:06 +01:00
Jonas Jensen
011d667f06 Java: Diff-informed PredictableSeed.ql 2024-12-20 13:01:05 +01:00
Jonas Jensen
a928a0d2b5 Java: Diff-informed BrokenCryptoAlgorithm.ql 2024-12-20 13:01:04 +01:00
Jonas Jensen
fea260bd55 Java: Diff-informed UnsafeHostnameVerification.ql
This commit also adds a test case that would fail under `codeql test run
--check-diff-informed` if not for the override of
`getASelectedSourceLocation`. There was no existing such test since all
the existing tests used anonymous classes whose location was on the same
line as the source.
2024-12-20 12:58:59 +01:00
Calum Grant
d5571c5f68 Merge pull request #18309 from github/calumgrant/bmn/return-stack-allocated-memory
C++: Fix FPs to cpp/return-stack-allocated-memory
2024-12-20 10:54:24 +00:00
Florin Coada
82fdd1125c Update docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.20.0.rst
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-20 12:50:05 +02:00
Jeroen Ketema
dd021fdcbf Merge pull request #18339 from jketema/typo
C++: Remove duplicate word from change note
2024-12-20 11:50:01 +01:00
Jeroen Ketema
51f625b90c C++: Allow sizeof pack in sizeof_bind 2024-12-20 11:49:37 +01:00
Florin Coada
5c5049e5fd Fix typo in CodeQL changelog entry 2024-12-20 12:35:40 +02:00
Jonas Jensen
8224ef6929 Java: Diff-informed InsecureTrustManager.ql 2024-12-20 11:22:58 +01:00
Jonas Jensen
eac1a4c002 Java: Diff-informed SqlTainted.ql 2024-12-20 11:22:57 +01:00
Jonas Jensen
2561cec80c Java: Diff-informed CommandLineQuery 2024-12-20 11:22:56 +01:00
Jonas Jensen
40529d1e51 DataFlow: Add the concept of selected locations
This extension allows queries to be diff-informed even when the elements
they select are different from the sources and sinks found by data flow.
2024-12-20 11:22:55 +01:00
Florin Coada
66f3b718a6 Update docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.20.0.rst
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-20 12:19:53 +02:00
Jeroen Ketema
757d5d6e6d C++: Remove duplicate word from change note 2024-12-20 11:18:26 +01:00
Paolo Tranquilli
8e28d99a62 QL for QL: accept test changes 2024-12-20 10:42:19 +01:00
Florin Coada
3bd8d7c0bb Update CodeQL changelog for versions 2.19.4 and 2.20.0 2024-12-20 11:37:33 +02:00
Calum Grant
3193fe856a C++: Update comments 2024-12-20 09:11:58 +00:00
Jeroen Ketema
6f9968d2c2 C++: Update test after extractor changes 2024-12-20 08:27:39 +01:00
Edward Minnix III
453913cd9f Remove Parameter from this PR 2024-12-19 23:11:07 -05:00
Dave Bartolomeo
772b972e7d Merge pull request #18321 from github/dbartol/actions-merge
Migrate Actions queries to public repo
2024-12-19 16:04:49 -05:00
Jeroen Ketema
6200a1d5b9 C++: Simplify some semmle-extractor-options in tests 2024-12-19 21:46:33 +01:00
Rasmus Wriedt Larsen
22b35f5fe7 Merge pull request #18318 from RasmusWL/fastapi-request
Python: Model FastAPI requests
2024-12-19 19:52:17 +01:00
Dave Bartolomeo
30dbc3b172 Merge pull request #18332 from github/dbartol/actions-changenote
Add `actions` as a supported language for change notes
2024-12-19 12:23:52 -05:00
Dave Bartolomeo
2b4161e16c Add actions as a supported language for change notes 2024-12-19 12:15:00 -05:00
Paolo Tranquilli
42422632ba Merge pull request #18331 from github/redsun82/rust-paths-exclude
Rust: support `paths` and `paths-ignore` from the code scanning configuration file
2024-12-19 17:59:49 +01:00
Paolo Tranquilli
73a5a3f7ee Rust: support paths and paths-ignore from the code scanning configuration file
This is done by simply adding the autobuilder from the shared
tree-sitter extractor library.
2024-12-19 17:37:56 +01:00
Calum Grant
7abe7003dc Update cpp/ql/test/query-tests/Likely Bugs/Memory Management/ReturnStackAllocatedMemory/test.cpp
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-19 16:01:05 +00:00
Dave Bartolomeo
e4bce701a0 Add change notes 2024-12-19 10:53:23 -05:00
Jeroen Ketema
84b60d2676 Merge pull request #18320 from jketema/template-parameters
C++: Support non-type template parameters
2024-12-19 16:21:49 +01:00
Dave Bartolomeo
bfa105fc0d Fix typo 2024-12-19 10:00:20 -05:00
Paolo Tranquilli
2ff0394a10 Rust: add --no-deps to clippy checks 2024-12-19 15:58:45 +01:00
Paolo Tranquilli
2e150772fd Merge branch 'main' into redsun82/fix-cargo-fmt-checks 2024-12-19 15:52:36 +01:00
Dave Bartolomeo
8b132274b5 Revert "Accept DB consistency check for now"
This reverts commit dba6f0bb9f.
2024-12-19 09:47:42 -05:00
Dave Bartolomeo
3e2fe46993 Merge remote-tracking branch 'origin/main' into dbartol/actions-merge 2024-12-19 09:34:29 -05:00
Calum Grant
e067ac92a7 C++: Address review comments 2024-12-19 14:27:13 +00:00
Asger F
942ba189f7 JS: Minor test output change in nodes/edges
I suspect this is due to some fixes in the DeduplicatePathGraph module
2024-12-19 15:25:49 +01:00
Asger F
f8dc7eb25b JS: Update output from tests that changed on main 2024-12-19 15:25:47 +01:00
Asger F
4a6030c592 JS: Update expected with some absent result sets 2024-12-19 15:25:46 +01:00
Asger F
cd6ebb103e JS: Make test not assume implicit through for maps 2024-12-19 15:25:45 +01:00
Asger F
dc2f39c399 JS: Add model of Map#groupBy 2024-12-19 15:25:43 +01:00
Asger F
de5e6ddeed JS: Update with changes in TaintTracking test 2024-12-19 15:25:42 +01:00
Asger F
c204527c08 JS: Update Array test output (new tests added on main) 2024-12-19 15:25:41 +01:00
Asger F
33e8bd5032 JS: Update testUtilities import 2024-12-19 15:25:39 +01:00
Ed Minnix
d0c9ba19d7 Fix test results 2024-12-19 09:02:06 -05:00
Ed Minnix
ae6752adf7 Update tests 2024-12-19 09:02:05 -05:00
Ed Minnix
84936c0fc0 Change note 2024-12-19 09:02:02 -05:00
Ed Minnix
b618ae06e8 Model Blazor attributes as marking sources
The attributes

- `[Parameter]`
- `[SupplyParameterFromFormAttribute]`
- `[SupplyParameterFromQueryAttribute]`

Tell Blazor to initialize the variables with parameters defined by the
route/form values/query parameters/etc. Values derived from the URI or
form should be classified as `remote` flow sources.
2024-12-19 09:01:56 -05:00
Edward Minnix III
90dbc34c16 Merge pull request #18323 from egregius313/egregius313/csharp/blazor/navigation-manager/typo
Fix typo in `NavigationManager` name in models
2024-12-19 09:00:17 -05:00
Rasmus Wriedt Larsen
a9704d8de0 Update change-note wording
Co-authored-by: Aditya Sharad <6874315+adityasharad@users.noreply.github.com>
2024-12-19 14:08:23 +01:00
Simon Friis Vindum
5141f7b87c Merge pull request #18330 from paldepind/rust-variables-macro
Rust: Add variables example with let statement in macro
2024-12-19 13:47:43 +01:00
Simon Friis Vindum
a28ddd642c Rust: Add variables example with let statement in macro 2024-12-19 13:12:45 +01:00
Paolo Tranquilli
df39610029 Rust: skip injected sources in clippy and fmt checks 2024-12-19 12:29:27 +01:00
Paolo Tranquilli
110d3994ea Rust: fix workflow 2024-12-19 12:23:36 +01:00
Paolo Tranquilli
7f5b8fdcec Rust: remove clippy warnings 2024-12-19 12:22:40 +01:00
Paolo Tranquilli
1d9a9fef76 CI: fix rust formatting
`cargo fmt --all` should be avoided in CI as that will include `rust/ast-generator`
which has sources provided by bazel (`bazel run //rust/ast-generator:inject_sources`
can provide those sources in-tree).

Now the formatting checks are limited to the sources that trigger the jobs, and a
check is added to `rust/ast-generator`.
2024-12-19 12:01:53 +01:00
Asger F
3acd4814de Merge branch 'main' into js/shared-dataflow-merge-main 2024-12-19 10:14:38 +01:00
Paolo Tranquilli
b392391138 Merge pull request #18319 from github/redsun82/rust-fetch-ungram
Rust: fetch ungram and rust-analyzer code instead of checking it in
2024-12-19 08:16:09 +01:00
Ed Minnix
b1bba731b4 Remove irrelevant test results 2024-12-18 21:05:52 -05:00
Ed Minnix
00ecdb0a83 Fix typo in NavigationManager name in model 2024-12-18 20:52:00 -05:00
Dave Bartolomeo
9b9df4c7e0 Temporarily disable QlDoc checks for Actions
https://github.com/github/codeql-team/issues/3656
2024-12-18 17:02:02 -05:00
Dave Bartolomeo
dba6f0bb9f Accept DB consistency check for now
Failure tracked in https://github.com/github/codeql-team/issues/3655
2024-12-18 16:54:34 -05:00
Dave Bartolomeo
4743dfa601 Fix result of getAPrimaryQlClass() 2024-12-18 16:22:37 -05:00
Dave Bartolomeo
a66ba4ebae Remove printCfg.ql
This file not yet fully implemented and does not compile
2024-12-18 16:11:54 -05:00
Dave Bartolomeo
99bdef1268 Fix compilation warnings 2024-12-18 15:56:49 -05:00
Dave Bartolomeo
d66cb7e8c7 Fix formatting 2024-12-18 15:48:34 -05:00
Dave Bartolomeo
7891134a87 Fix formatting 2024-12-18 15:43:53 -05:00
Jeroen Ketema
2209ee6747 C++: Update stats file 2024-12-18 20:53:34 +01:00
Dave Bartolomeo
47e364a13b Remove placeholder code 2024-12-18 14:51:24 -05:00
Dave Bartolomeo
c7efe5d0f5 Update lock files 2024-12-18 14:42:13 -05:00
Dave Bartolomeo
dbc1fa6450 Merge Actions queries from github/codeql-actions 2024-12-18 14:39:43 -05:00
Dave Bartolomeo
ee7680df84 Move into actions subdirectory to prepare for migration to github/codeql 2024-12-18 14:35:15 -05:00
Dave Bartolomeo
237a6f11f9 Bump version 2024-12-18 13:32:55 -05:00
Dave Bartolomeo
501e3b3e92 Merge remote-tracking branch 'origin/master' into dbartol/move-to-codeql 2024-12-18 13:26:21 -05:00
Jeroen Ketema
87f12ac801 C++: Add NonTypeTemplateParameter class 2024-12-18 17:37:15 +01:00
Paolo Tranquilli
c4a7abda0a Bazel: resync 3rd party dependencies and skip buildifier on them 2024-12-18 17:33:39 +01:00
Paolo Tranquilli
d6b8d42936 Bazel: fix 3rdparty update script 2024-12-18 17:20:05 +01:00
Jeroen Ketema
a99c9b58bb C++: Add upgrade and downgrade scripts for non-type template parameters 2024-12-18 17:01:51 +01:00
Jeroen Ketema
8b626266c4 C++: Support non-type template parameters in the database scheme 2024-12-18 16:53:06 +01:00
Paolo Tranquilli
290a1043b1 Rust: fetch ungram and rust-analyzer code instead of checking it in
* The ungram file is now taken from the rust-analyzer dependencies
  pulled in by bazel
* the grammar parsing code is not published, so it must be taken
  directly from rust-analyzer code. That part should be less prone to be
  updated than the ungram file, so it does not necessarily need to be
  in sync with the rust-analyzer version is used elsewhere.
* both need some patches. The former is patched during build, the latter
  during loading in `MODULE.bazel`.
2024-12-18 16:37:24 +01:00
Rasmus Wriedt Larsen
2b3fc9b36c Python: Add change-note 2024-12-18 16:02:02 +01:00
Arthur Baars
023f48ff1c Merge pull request #18295 from github/aibaars/update-rust-ungram
Rust: update rust-analyzer
2024-12-18 16:01:50 +01:00
Rasmus Wriedt Larsen
34631a8784 Python: Model FastAPI requests
Co-authored-by: Joe Farebrother <joefarebrother@github.com>
2024-12-18 15:58:51 +01:00
Rasmus Wriedt Larsen
79dfbf7b21 Python: Add FastAPI request test
Co-authored-by: Joe Farebrother <joefarebrother@github.com>
2024-12-18 15:48:29 +01:00
Calum Grant
fabacebd4b C++: Change note 2024-12-18 14:37:43 +00:00
Simon Friis Vindum
508c7e6e85 Merge pull request #18314 from paldepind/rust-tuple-ref-patterns
Rust: Add read steps for tuple and reference patterns
2024-12-18 14:13:08 +01:00
Asger F
be939dca29 Merge pull request #14350 from asgerf/shared/deduplicate-path-graph
Shared: Add DataFlow::DeduplicatePathGraph
2024-12-18 14:04:29 +01:00
Tom Hvitved
00688ebd79 Merge pull request #18312 from hvitved/rust/operator-overloading-test
Rust: Add data flow tests for operator overloading
2024-12-18 13:58:39 +01:00
Paolo Tranquilli
218bc8069b Rust: exclude extraction of code excluded by cfg 2024-12-18 13:34:40 +01:00
Simon Friis Vindum
09fd27af80 Rust: Add read steps for tuple and reference patterns 2024-12-18 13:22:05 +01:00
Mathias Vorreiter Pedersen
927d359cfa Merge pull request #18310 from MathiasVP/fix-recursion-through-forex-in-sign-analysis
C++: Fix `forex` recursion in sign analysis
2024-12-18 12:19:33 +00:00
Simon Friis Vindum
b5b8af3aa2 Rust: Add data flow tests for borrows 2024-12-18 13:00:38 +01:00
Arthur Baars
a6ec51a951 Rust: update expected output 2024-12-18 13:00:14 +01:00
Arthur Baars
71959f5faa Rust: address clippy warnings 2024-12-18 13:00:13 +01:00
Tom Hvitved
3a63dbcd5d Apply suggestions from code review
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2024-12-18 12:46:11 +01:00
Mathias Vorreiter Pedersen
4ffe70dd3b C++: Respond to review comments. 2024-12-18 11:26:41 +00:00
Simon Friis Vindum
87b9e6001d Merge pull request #18291 from paldepind/rust-data-flow-models
Rust: Data flow improvements to unlock flow in sqlx test
2024-12-18 11:53:26 +01:00
Michael Nebel
ef2215dd53 Merge pull request #18303 from michaelnebel/refactorlibrarylocations
C#: Move external api declarations to the library pack.
2024-12-18 11:43:35 +01:00
Simon Friis Vindum
049fab4c72 Rust: Remove taint steps 2024-12-18 11:22:56 +01:00
Jeroen Ketema
66b2b5df8d Merge pull request #18308 from jketema/template-parameters
C++: Introduce a new base class for template parameters
2024-12-18 10:38:03 +01:00
Jeroen Ketema
ccd3681f83 C++: Expand QLDoc of TemplateParameterBase 2024-12-18 09:45:51 +01:00
Tom Hvitved
025a67384f Rust: Add data flow tests for operator overloading 2024-12-18 09:26:17 +01:00
Kevin Stubbings
4b95ea0987 Merge branch 'main' into go-rs-cors 2024-12-17 17:35:29 -08:00
Mathias Vorreiter Pedersen
0b2b341283 C++: Work around suboptimal codegen for recursive 'forex'. 2024-12-17 23:58:57 +00:00
Jeroen Ketema
b7d1da8741 C++: Introduce a new base class for template parameters
This will enable us to support non-type template parameters, which we
currently do not support, and error template parameters, which might
become relevant in the `build-mode: none` context.
2024-12-17 20:25:41 +01:00
Mathias Vorreiter Pedersen
dfb34832fd Merge pull request #18307 from MathiasVP/fix-more-join-orders-in-dataflow
C++: Fix two more dataflow-related joins
2024-12-17 18:56:12 +00:00
Mathias Vorreiter Pedersen
2cc6ffbd28 C++: Fix ql-for-ql findings. 2024-12-17 16:55:52 +00:00
Simon Friis Vindum
c1e21974c6 Rust: Address review comments 2024-12-17 17:24:42 +01:00
Calum Grant
14cef6a207 C++: Fix FPs to cpp/return-stack-allocated-memory 2024-12-17 15:58:39 +00:00
Mathias Vorreiter Pedersen
5ed0222b1a C++: Sync identical files. 2024-12-17 15:28:04 +00:00
Mathias Vorreiter Pedersen
f351558547 C++: While here, let's avoid materializing 'ensuresEq' and 'ensuresLt' when computing unreachable nodes in dataflow. 2024-12-17 15:27:54 +00:00
Mathias Vorreiter Pedersen
9b6f39c1fe C++: Apply similar join order fixes to the other cases. 2024-12-17 15:26:49 +00:00
Mathias Vorreiter Pedersen
eea7804b62 C++: Join with value number only after joining with 'controls'. 2024-12-17 15:25:16 +00:00
Simon Friis Vindum
d8c301a96b Merge branch 'main' into rust-data-flow-models 2024-12-17 16:09:59 +01:00
Michael Nebel
1ef5b595ae C#: Add change-note. 2024-12-17 15:11:27 +01:00
Michael Nebel
bd9f656be2 C#: Add ql doc to TestLibrary. 2024-12-17 14:40:01 +01:00
Michael Nebel
a91c1dc715 C#: Move external api declarations to the library pack. 2024-12-17 14:39:59 +01:00
Asger F
729efff6a4 Merge pull request #18265 from asgerf/jss/flow-labels2
JS: Migrate all queries to proper flow states and deprecate FlowLabel
2024-12-17 14:37:11 +01:00
Arthur Baars
23e6a825aa Rust: fix QL code 2024-12-17 14:07:48 +01:00
Arthur Baars
029e2604a3 Rust: //rust/codegen 2024-12-17 14:07:44 +01:00
Arthur Baars
c13e173681 Rust: fix codegeneration for AsmOptions 2024-12-17 14:05:53 +01:00
Arthur Baars
93972fcb2e Run: misc/bazel/3rdparty/update_cargo_deps.sh 2024-12-17 14:05:51 +01:00
Arthur Baars
8e7eedc172 Update codegen/grammar 2024-12-17 14:05:50 +01:00
Arthur Baars
3928efe05f Rust: update rust.ungram 2024-12-17 14:05:12 +01:00
Tom Hvitved
8efd870192 Merge pull request #18292 from hvitved/rust/never-skip-lhs
Rust: Never skip assignment LHS in data flow
2024-12-17 13:18:17 +01:00
Tom Hvitved
d8c05b5388 Merge pull request #18290 from hvitved/rust/perf-fixes
Rust: Fix two bad joins
2024-12-17 13:18:05 +01:00
Simon Friis Vindum
ee87d4c948 Merge branch 'main' into rust-data-flow-models 2024-12-17 13:12:32 +01:00
Asger F
e34fbc8bd1 Shared: autoformat 2024-12-17 11:26:56 +01:00
Asger F
8340841d54 Shared: Fix propagation of call bit 2024-12-17 11:16:04 +01:00
Asger F
950ae44d03 Shared: Show test failures 2024-12-17 11:15:57 +01:00
Michael Nebel
132dbd7517 Merge pull request #18285 from github/workflow/coverage/update
Update CSV framework coverage reports
2024-12-17 09:17:33 +01:00
github-actions[bot]
f9d739c173 Add changed framework coverage reports 2024-12-17 00:22:24 +00:00
Jeroen Ketema
fa5cc90167 Merge pull request #18281 from jketema/changenote
C++: Add word missing from change note
2024-12-16 20:23:47 +01:00
Mathias Vorreiter Pedersen
a3ef0b94b9 Merge pull request #18207 from MathiasVP/fix-fp-in-missing-check-scanf-fixing-take-3
C++: Fix some FPs in cpp/missing-check-scanf (third attempt!)
2024-12-16 16:55:44 +00:00
Andrew Eisenberg
91f4ffafd1 Merge pull request #111 from github/UnversionedImmutableAction-typo
Fix typo in UnversionedImmutableAction.md
2024-12-16 08:06:22 -08:00
Paolo Tranquilli
d6246707e4 Merge pull request #18294 from github/redsun82/extract-self-param-ref
Rust: extract `isRef` for `SelfParam`
2024-12-16 17:00:47 +01:00
Sam Partington
2949098a27 Fix typo in UnversionedImmutableAction.md 2024-12-16 15:40:38 +00:00
Simon Friis Vindum
402d4e11c4 Rust: Re-add inline expectations query tags 2024-12-16 16:36:30 +01:00
Edward Minnix III
9a80c403a0 Merge pull request #18278 from egregius313/egregius313/csharp/markup-string
C#: Add `html-injection` sinks for Blazor `MarkupString`
2024-12-16 10:21:04 -05:00
Edward Minnix III
360398481b Merge pull request #18280 from egregius313/egregius313/csharp/blazor/runtime-helpers/typecheck
C#: Add summary for `Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelper::TypeCheck<T>`
2024-12-16 10:19:38 -05:00
Asger F
e5ae7e0231 JS: Fix bad join in isOptionallySanitizedEdgeInternal
This was previously called from isBarrier(node, state) but without restricting the state. The call was therefore moved to isBarrier(node), but this caused some optimisation changes resulting in a bad join.
2024-12-16 15:35:54 +01:00
Asger F
947b785d47 JS: Remove reference to deprecated step relation that's empty anyway 2024-12-16 15:35:53 +01:00
Asger F
0b2914ff13 JS: A few more deprecation updates 2024-12-16 15:35:50 +01:00
Asger F
db00dad033 JS: Avoid deprecation warnings in some tests 2024-12-16 15:35:49 +01:00
Asger F
cf6d166d29 JS: Also update tutorial code 2024-12-16 15:35:47 +01:00
Asger F
079294e55f JS: Mass rename to node1,state1,node2,state2 naming convention 2024-12-16 15:35:46 +01:00
Asger F
ac6da6c2b1 JS: Add some missing qldoc 2024-12-16 15:35:44 +01:00
Asger F
d993c888b1 JS: Deprecate the FlowLabel class 2024-12-16 15:35:43 +01:00
Asger F
69b361ae70 JS: Migrate a test to use flow state 2024-12-16 15:35:42 +01:00
Asger F
73af3f3536 JS: Migrate PrototypePollutingFunction 2024-12-16 15:35:40 +01:00
Asger F
ebe596f227 JS: Migrate CorsPermissiveConfiguration 2024-12-16 15:35:39 +01:00
Asger F
d83ddfabaa JS: Migrate an experimental CodeInjection query 2024-12-16 15:35:38 +01:00
Asger F
a398599bfb JS: Rename an experimental query
Having the same name as a standard query is just confusing
2024-12-16 15:35:36 +01:00
Asger F
c951a29e2a JS: Migrate UnvalidatedDynamicMethodCall 2024-12-16 15:35:34 +01:00
Paolo Tranquilli
a333453bd7 Merge pull request #18289 from github/redsun82/swift-remove-linux
Swift: improve diagnostics for OS incompatibility
2024-12-16 15:18:52 +01:00
Tom Hvitved
ddd05b5d1b Rust: Never skip match scrutinee/patterns in data flow 2024-12-16 15:12:16 +01:00
Tom Hvitved
9f2b436d35 Rust: Never skip assignment LHS in data flow 2024-12-16 15:12:15 +01:00
Paolo Tranquilli
54ba14d181 Merge pull request #18276 from github/redsun82/bazel-installer-as-test
Bazel: add a test wrapper around installation scripts
2024-12-16 15:07:19 +01:00
Paolo Tranquilli
4975e7b739 Merge branch 'main' into redsun82/extract-self-param-ref 2024-12-16 15:06:16 +01:00
Paolo Tranquilli
9f2b962fe8 Merge pull request #18297 from hvitved/rust/fix-semantic-merge
Rust: Fix semantic merge conflicts
2024-12-16 15:06:00 +01:00
Mathias Vorreiter Pedersen
913357b70d C++: Fix incorrect QLDoc. 2024-12-16 14:02:50 +00:00
Mathias Vorreiter Pedersen
5a90b25c45 C++: Remove the released change note and add a new change note. 2024-12-16 14:02:48 +00:00
Mathias Vorreiter Pedersen
5327847744 C++: No need to exclude static and global initializers now that we inline the predicates. 2024-12-16 14:02:46 +00:00
Mathias Vorreiter Pedersen
3bdfdd0573 C++: Change all the 'ensures' and (and most 'compares') predicates to be inlined to prevent explosions. Also remove the caching since this is't necessary now that the main recursion is cached. 2024-12-16 14:02:44 +00:00
Mathias Vorreiter Pedersen
404dd33498 C++: Move the main recursion into to a cached module. 2024-12-16 14:02:42 +00:00
Mathias Vorreiter Pedersen
6f73aa552d C++: Convert IRGuards to use final abstract classes. 2024-12-16 14:02:40 +00:00
Mathias Vorreiter Pedersen
20dfbdc5cc Revert "Merge pull request #18057 from jketema/codeql-cli-2.19.4"
This reverts commit ed922f6519, reversing
changes made to aa4cc72f30.
2024-12-16 14:02:38 +00:00
Tom Hvitved
5ed03e266a Rust: Fix semantic merge conflicts 2024-12-16 14:47:13 +01:00
Michael Nebel
32bfbb832b Merge pull request #18293 from michaelnebel/fixmain
Fix failing tests on main.
2024-12-16 14:26:25 +01:00
Jeroen Ketema
da3fcda4fc C++: Address review comments 2024-12-16 14:25:41 +01:00
Paolo Tranquilli
4c4a8d7619 Rust: extract isRef for SelfParam 2024-12-16 14:24:56 +01:00
Michael Nebel
d0e9c3bb70 Fix failing tests on main. 2024-12-16 14:16:47 +01:00
Paolo Tranquilli
e4eb2697eb Swift: fix typo in autobuild.cmd 2024-12-16 13:44:33 +01:00
Michael Nebel
aaf0cd5dee Merge pull request #17968 from michaelnebel/java/movetestutils
Move test utilities to the query pack.
2024-12-16 13:41:30 +01:00
Asger F
f2968f4e14 Shared: Ensure subpath-induced edges are handled properly
Argument-passing and flow-through edges are present in 'edges' in addition to 'subpaths', but the implementation didn't take this into account.
2024-12-16 13:21:43 +01:00
Simon Friis Vindum
cad4f39aee Rust: Database name capitalization 2024-12-16 13:15:42 +01:00
Asger F
0edb30638a Apply suggestions from code review
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2024-12-16 13:14:27 +01:00
Simon Friis Vindum
defbbb2a24 Rust: Add additional models for stdlib and sqlx 2024-12-16 11:46:57 +01:00
Simon Friis Vindum
aab3428bc7 Rust: Model address-of and dereference as stores and loads 2024-12-16 11:31:15 +01:00
Simon Friis Vindum
df0375103c Rust: Add data flow tests 2024-12-16 11:09:22 +01:00
Tom Hvitved
aabcc108dd Rust: Fix bad join
```
[2024-12-16 10:10:36] (247s) Tuple counts for DataFlowImpl::RustDataFlow::storeStep/3#98e80e57/3@0618fdm6 after 3m8s:
                      33711       ~0%        {3} r1 = SCAN `DataFlowImpl::VariableCapture::storeStep/3#cb0fdcf6` OUTPUT In.1, In.0 'node1', In.2 'node2'
                      33711       ~6%        {3}    | JOIN WITH DataFlowImpl::TSingletonContentSet#9b15eaba ON FIRST 1 OUTPUT Lhs.1 'node1', Rhs.1 'cs', Lhs.2 'node2'

                      0           ~0%        {3} r2 = JOIN `FlowSummaryImpl::Private::Steps::summaryStoreStep/3#2c853d0d` WITH DataFlowImpl::TFlowSummaryNode#2b28ecb7 ON FIRST 1 OUTPUT Lhs.2, Lhs.1 'cs', Rhs.1 'node1'
                      0           ~0%        {3}    | JOIN WITH DataFlowImpl::TFlowSummaryNode#2b28ecb7 ON FIRST 1 OUTPUT Lhs.2 'node1', Lhs.1 'cs', Rhs.1 'node1'

                      1554        ~0%        {3} r3 = JOIN _DataFlowImpl::TExprNode#83a34c2e__DataFlowImpl::TArrayElement#b9fb9b7b_DataFlowImpl::TSingletonCont__#shared WITH `CfgNodes::ArrayRepeatExprCfgNode.getRepeatOperand/0#dispred#b264e402_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2 'node1'
                      1554        ~0%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Lhs.2 'node1', Lhs.1 'cs', Rhs.1 'node2'

                      870         ~2%        {3} r4 = SCAN `DataFlowImpl::RustDataFlow::tupleAssignment/3#bf3c8690` OUTPUT In.2, In.0 'node1', In.1
                      870         ~0%        {3}    | JOIN WITH DataFlowImpl::TSingletonContentSet#9b15eaba ON FIRST 1 OUTPUT Lhs.2, Rhs.1 'cs', Lhs.1 'node1'
                      870         ~0%        {3}    | JOIN WITH `DataFlowImpl::Node::PostUpdateNode.getPreUpdateNode/0#dispred#53daedc2_10#join_rhs` ON FIRST 1 OUTPUT Lhs.2 'node1', Lhs.1 'cs', Rhs.1 'node2'

                      40037       ~4%        {3} r5 = JOIN _DataFlowImpl::TExprNode#83a34c2e__DataFlowImpl::TArrayElement#b9fb9b7b_DataFlowImpl::TSingletonCont__#shared WITH `CfgNodes::ArrayExprCfgNode.getAnExpr/0#dispred#9d00a6f1_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2 'node1'
                      36929       ~4%        {3}    | JOIN WITH CfgNodes::ArrayListExprCfgNode#07eee614 ON FIRST 1 OUTPUT Lhs.0, Lhs.1 'cs', Lhs.2 'node1'
                      36929       ~0%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Lhs.2 'node1', Lhs.1 'cs', Rhs.1 'node2'

                      14          ~0%        {2} r6 = JOIN DataFlowImpl::TTuplePositionContent#f1d90606_10#join_rhs WITH DataFlowImpl::TSingletonContentSet#9b15eaba ON FIRST 1 OUTPUT Lhs.1, Rhs.1 'cs'
                      47949       ~0%        {3}    | JOIN WITH `CfgNodes::TupleExprCfgNode.getField/1#dispred#9f7c9c63_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Rhs.2
                      47949       ~0%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Lhs.2, Lhs.1 'cs', Rhs.1 'node2'
                      47949       ~2%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Rhs.1 'node2', Lhs.1 'cs', Lhs.2 'node2'

                      59801       ~0%        {3} r7 = JOIN _DataFlowImpl::TSingletonContentSet#9b15eaba_DataFlowImpl::TVariantPositionContent#ca6baca0_201#join__#shared WITH `DataFlowImpl::RustDataFlow::tupleVariantConstruction/2#10613c55_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2
                      45509       ~0%        {3}    | JOIN WITH CfgNodes::CallExprCfgNode#9c2a4686_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2
                      45509       ~2%        {4}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Lhs.0, Lhs.2, Lhs.1 'cs', Rhs.1 'node2'
                      45509       ~0%        {3}    | JOIN WITH `CfgNodes::CallExprBaseCfgNode.getArgument/1#dispred#9ebb27c0` ON FIRST 2 OUTPUT Rhs.2, Lhs.2 'cs', Lhs.3 'node2'
                      45509       ~0%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Rhs.1 'node2', Lhs.1 'cs', Lhs.2 'node2'

                      75147       ~1%        {3} r8 = JOIN _DataFlowImpl::TSingletonContentSet#9b15eaba_DataFlowImpl::TStructFieldContent#1d6d7b05_201#join_rhs#shared WITH `DataFlowImpl::RustDataFlow::structConstruction/2#a9656db0_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2
                      59186       ~3%        {3}    | JOIN WITH `CfgNodes::RecordExprCfgNode.getRecordExpr/0#dispred#659ad1af_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2

                      5641        ~2%        {3} r9 = JOIN _DataFlowImpl::TSingletonContentSet#9b15eaba_DataFlowImpl::TVariantFieldContent#4e05bcf1_201#join_rh__#shared WITH `DataFlowImpl::RustDataFlow::recordVariantConstruction/2#34b016f6_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2
                      5268        ~0%        {3}    | JOIN WITH `CfgNodes::RecordExprCfgNode.getRecordExpr/0#dispred#659ad1af_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2

                      64454       ~1%        {3} r10 = r8 UNION r9
                      64454       ~0%        {4}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Lhs.0, Lhs.2, Lhs.1 'cs', Rhs.1 'node2'
                      25923       ~0%        {3}    | JOIN WITH `CfgNodes::RecordExprCfgNode.getFieldExpr/1#d72dca6e` ON FIRST 2 OUTPUT Rhs.2, Lhs.2 'cs', Lhs.3 'node2'
                      25923       ~0%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Rhs.1 'node2', Lhs.1 'cs', Lhs.2 'node2'

                      67759289500 ~251%      {4} r11 = JOIN DataFlowImpl::TSingletonContentSet#9b15eaba WITH DataFlowImpl::TExprNode#83a34c2e CARTESIAN PRODUCT OUTPUT Lhs.0, Lhs.1 'cs', Rhs.0, Rhs.1 'node2'
                      3568000     ~1488%     {3}    | JOIN WITH DataFlowImpl::TArrayElement#b9fb9b7b ON FIRST 1 OUTPUT Lhs.3, Lhs.1 'cs', Lhs.2
                      1223000     ~1291%     {3}    | JOIN WITH `DataFlowImpl::Node::PostUpdateNode.getPreUpdateNode/0#dispred#53daedc2_10#join_rhs` ON FIRST 1 OUTPUT Lhs.2, Lhs.1 'cs', Rhs.1 'node2'
                      11500       ~0%        {3}    | JOIN WITH `CfgNodes::IndexExprCfgNode.getBase/0#dispred#19aba7d8_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2 'node2'
                      1000        ~3%        {3}    | JOIN WITH `CfgNodes::BinaryExprCfgNode.getLhs/0#dispred#bd1c02e7_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2 'node2'
                      500         ~3%        {3}    | JOIN WITH CfgNodes::AssignmentExprCfgNode#a9a5c022 ON FIRST 1 OUTPUT Lhs.0, Lhs.1 'cs', Lhs.2 'node2'
                      0           ~0%        {3}    | JOIN WITH `CfgNodes::BinaryExprCfgNode.getRhs/0#dispred#4a1146e4` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 'cs', Lhs.2 'node2'
                      0           ~0%        {3}    | JOIN WITH DataFlowImpl::TExprNode#83a34c2e ON FIRST 1 OUTPUT Rhs.1 'node2', Lhs.1 'cs', Lhs.2 'node2'

                      192445      ~1%        {3} r12 = r1 UNION r2 UNION r3 UNION r4 UNION r5 UNION r6 UNION r7 UNION r10 UNION r11
                                             return r12
```
2024-12-16 10:20:30 +01:00
Tom Hvitved
2d16b5276d Rust: Fix bad join
```
Evaluated relational algebra for predicate DataFlowImpl::RustDataFlow::pathResolveToVariantCanonicalPath/2#dc73aca0@34414869 with tuple counts:
          422639   ~3%    {3} r1 = JOIN `DataFlowImpl::resolveExtendedCanonicalPath/3#0454a346` WITH Synth::Synth::TPathAstNode#a7913307 ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2
        73033499   ~7%    {6}    | JOIN WITH DataFlowImpl::MkVariantCanonicalPath#ab1ecb00 ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Rhs.3, _, Rhs.1, Rhs.2
                          {4}    | REWRITE WITH Tmp.3 := "::", Out.3 := (In.4 ++ Tmp.3 ++ In.5), TEST Out.3 = InOut.1 KEEPING 4
          170993   ~1%    {2}    | SCAN OUTPUT In.0, In.2
                          return r1
```
2024-12-16 10:20:01 +01:00
Paolo Tranquilli
8efd127010 Swift: improve diagnostics for OS incompatibility
* do not mention any more that one might make analysis happen on Linux with
  advanced setup
* say that outright Swift analysis is only supported on macOS, not just
  autobuild.
* emit the error diagnostics even for traced builds, not only for autobuilds
  (by using a dummy `extractor` executable).
2024-12-16 10:12:31 +01:00
Simon Friis Vindum
31717524f0 Merge pull request #18270 from paldepind/rust-captured-variables
Rust: Flow through captured variables
2024-12-16 10:08:53 +01:00
Simon Friis Vindum
9da5d7128b Rust: Add test with data flow inconsistency 2024-12-16 09:40:13 +01:00
Owen Mansel-Chan
7ab06fca2f Merge pull request #18275 from owen-mc/go/mad/variadic-params-sources
Go: Make models-as-data source models for variadic parameters work
2024-12-15 13:22:21 +00:00
Alvaro Muñoz
1370102d45 Bump qlpack versions 2024-12-14 10:10:50 +01:00
Alvaro Muñoz
b8e23c1f01 Merge pull request #110 from github/ext_prefix
Expect external workflows and actions in .github/workflow/external and .github/actions/external
2024-12-14 10:06:55 +01:00
Paolo Tranquilli
0c5e260ae6 Merge pull request #18282 from github/redsun82/swift-remove-linux
Swift: remove linux from standard pack
2024-12-13 22:44:44 +01:00
Owen Mansel-Chan
906c51733c Merge pull request #18266 from owen-mc/misc/prepare-db-upgrade-improvement
Misc: Look up remote name instead of using `origin` in `misc/prepare-db-upgrade.sh`
2024-12-13 21:42:18 +00:00
Edward Minnix III
9948f6e255 Merge pull request #18284 from egregius313/egregius313/go/dataflow/sources/commandargs/os-args
Go: Model `os.Args` as a `commandargs` source
2024-12-13 16:33:45 -05:00
Ed Minnix
7852c8666c Update provenance in test results 2024-12-13 15:22:17 -05:00
Ed Minnix
88256e269a Convert model from QL to MaD 2024-12-13 14:59:32 -05:00
Edward Minnix III
f844105722 Fix test result 2024-12-13 14:53:58 -05:00
Dave Bartolomeo
4a9355c5de Add required signature predicate implementation 2024-12-13 14:39:19 -05:00
Dave Bartolomeo
1fb707f080 Bump minor version to prepare for public release 2024-12-13 13:00:24 -05:00
Ed Minnix
129388c78a Fix change note 2024-12-13 12:48:01 -05:00
Dave Bartolomeo
5aa3328b07 Upgrade to latest package versions 2024-12-13 12:46:39 -05:00
Ed Minnix
4ee60138b7 Fix test results 2024-12-13 12:44:57 -05:00
Ed Minnix
f8cfa39492 Change note 2024-12-13 12:42:02 -05:00
Ed Minnix
3f9af5bfe4 Tests 2024-12-13 12:42:01 -05:00
Ed Minnix
63a3054aeb os.Args variable read 2024-12-13 12:41:59 -05:00
Dave Bartolomeo
34844539d7 Fix pack names 2024-12-13 12:33:22 -05:00
Dave Bartolomeo
f99f5e8309 Merge remote-tracking branch 'origin/master' into dbartol/move-to-codeql 2024-12-13 11:49:32 -05:00
Paolo Tranquilli
a8238b1896 Swift: fix pack 2024-12-13 17:39:16 +01:00
Paolo Tranquilli
a75f5fac15 Swift: remove linux from standard pack
This still defines a pack with linux included for development.
`//swift:install` will still also include linux.
2024-12-13 17:01:22 +01:00
Alvaro Muñoz
455afc2bb2 Expect external workflows and actions in .github/workflow/external and .github/actions/external 2024-12-13 16:50:21 +01:00
Owen Mansel-Chan
e9dcd69cc0 Add readStep back to local taint flow 2024-12-13 13:30:18 +00:00
Owen Mansel-Chan
3a3e053f12 Only add taint steps for implicit varargs slice post-update nodes 2024-12-13 13:17:44 +00:00
Paolo Tranquilli
2cbb072668 Merge pull request #17699 from github/redsun82/swift-6
Swift: make extractor compilable with Swift 6
2024-12-13 12:27:35 +01:00
Asger F
820f81fc10 JS: Migrate UnsafeDynamicMethodAccess 2024-12-13 11:32:25 +01:00
Asger F
a9e89ed8e3 JS: Migrate PrototypePollutingAssignment 2024-12-13 11:23:31 +01:00
Asger F
bcc1669f4c JS: Migrate InsecureDownload 2024-12-13 11:10:14 +01:00
Asger F
4e25036cdc JS: Follow naming convention in InsecureModuleFlow module 2024-12-13 11:09:59 +01:00
Asger F
d381ab1260 JS: Migrate IncompleteHtmlAttributeSanitization 2024-12-13 10:55:00 +01:00
Jeroen Ketema
d6964ff755 C++: Add word missing from change note 2024-12-13 10:48:46 +01:00
Asger F
2112ecc44d JS: Migrate HardcodedDataInterpretedAsCode 2024-12-13 10:48:43 +01:00
Asger F
dc3d7a0159 Update ExceptionXssCustomizations.qll 2024-12-13 10:47:04 +01:00
Asger F
42a7208704 JS: Migrate ExceptionXss 2024-12-13 10:29:32 +01:00
Asger F
d9a43dbd85 JS: Migrate UnsafeHtmlConstruction 2024-12-13 10:08:17 +01:00
Asger F
8907252814 JS: Migrate TemplateObjectInjection 2024-12-13 10:08:16 +01:00
Asger F
3573f0b065 JS: Migrate SecondOrderCommandInjection 2024-12-13 10:08:15 +01:00
Asger F
355f7cdd54 JS: Migrate PrototypePollutingMergeCall 2024-12-13 10:08:13 +01:00
Asger F
c38e3a23eb JS: Migrate NoSqlInjection 2024-12-13 10:08:12 +01:00
Asger F
8e8de5cf23 JS: Migrate LoopBoundInjection 2024-12-13 10:08:11 +01:00
Asger F
daddff0dc6 JS: Avoid deprecation warning in XssThroughDom 2024-12-13 10:08:10 +01:00
Asger F
15d999a9dc JS: Migrate DeepObjectResourceExhaustion 2024-12-13 10:08:09 +01:00
Asger F
5f42a715f6 JS: Migrate TaintedObject to a CommonFlowState 2024-12-13 10:08:08 +01:00
Asger F
14ca1c134b JS: Update TaintedUrlSuffix test 2024-12-13 10:08:07 +01:00
Asger F
12289d4c39 JS: Migrate DomBasedXssQuery to FlowState 2024-12-13 10:08:06 +01:00
Asger F
114d4a141a JS: Move FlowState definition into CommonFlowState
Needed for migrating the XSS query
2024-12-13 10:08:05 +01:00
Asger F
3cf14d8506 JS: Migrate ClientSideUrlRedirect to flow state 2024-12-13 10:08:03 +01:00
Asger F
cca980298f JS: Use flow state in barrier and step relations 2024-12-13 10:08:02 +01:00
Asger F
a8fdd759f9 JS: Add FlowState class to TaintedUrlSuffix 2024-12-13 10:08:01 +01:00
Paolo Tranquilli
92ec7e89ab Merge branch 'main' into redsun82/swift-6 2024-12-13 09:38:15 +01:00
Ed Minnix
68e2f27180 Add summary Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers::TypeCheck<T> 2024-12-12 22:10:15 -05:00
Ed Minnix
8e37a5cd55 Fix test case 2024-12-12 22:05:26 -05:00
Owen Mansel-Chan
b58e6ebade Address review comments for localTaintStep 2024-12-12 22:07:15 +00:00
Ed Minnix
0a967325e7 Change note 2024-12-12 16:22:09 -05:00
Ed Minnix
40ea5f582c MarkupString models 2024-12-12 16:18:29 -05:00
Jeroen Ketema
792504434a Merge pull request #18277 from jketema/printast
C++: Fix small PrintAST and PrintIR issue
2024-12-12 19:17:43 +01:00
Jeroen Ketema
8e458f4651 C++: Simplify local variable names 2024-12-12 17:13:02 +01:00
Joe Farebrother
dcbcf7e2bd Add additional tests demonstrating false negative flow 2024-12-12 15:55:36 +00:00
Jeroen Ketema
f9bfd969a9 C++: Address review comments 2024-12-12 16:49:24 +01:00
Simon Friis Vindum
1d8e7fd9ea Rust: Accept differences 2024-12-12 16:47:51 +01:00
Simon Friis Vindum
0fa40fcdcc Rust: Fix captured variable data flow inconsistency 2024-12-12 16:28:19 +01:00
Asger F
a53d294d91 Merge pull request #18203 from asgerf/jss/document-url
JS: Use TaintedUrlSuffix in ClientSideUrlRedirect
2024-12-12 15:47:51 +01:00
Tom Hvitved
20db548fef Merge pull request #18263 from hvitved/dataflow/remove-column
Data flow: Remove unused column from `flowThroughOutOfCall`
2024-12-12 15:41:20 +01:00
Geoffrey White
03f962ed86 Merge pull request #18226 from geoffw0/badcrypto
Rust: Weak encryption algorithm query.
2024-12-12 14:21:16 +00:00
Michael Nebel
a52a549945 Merge pull request #18246 from michaelnebel/csharp/fixwarnings
C#: Fix some new compiler warnings
2024-12-12 15:07:23 +01:00
Michael Nebel
0bfc1b6ea8 Also move the postprocessing queries to the library pack. 2024-12-12 15:03:03 +01:00
Michael Nebel
941b0abbf6 Move modules to the library packs. 2024-12-12 15:03:01 +01:00
Michael Nebel
864c34fc03 Rust: Update all test util paths to point to the new location. 2024-12-12 15:02:59 +01:00
Tom Hvitved
5d18e23979 Merge pull request #18269 from hvitved/csharp/dataflow-reflection-call
C#: Remove false-positive reflection calls in dataflow
2024-12-12 14:43:13 +01:00
Owen Mansel-Chan
26b52078c0 Add change note 2024-12-12 13:41:35 +00:00
Owen Mansel-Chan
8703e21f62 Merge pull request #17996 from owen-mc/java/lightweight-IR-layer-classes
Java: Make separate classes for different control flow node kinds
2024-12-12 13:36:54 +00:00
Geoffrey White
44a0ad2942 Update data-flow -> data flow in all versions of ConceptsShared.qll. 2024-12-12 13:36:26 +00:00
Michael Nebel
9c0dddb4d8 Merge pull request #18267 from michaelnebel/csharp/updateglobaljson
C#: Update global.json for cshtml_standalone_flowsteps.
2024-12-12 13:55:03 +01:00
Michael Nebel
cbae2cf7fa Rust: Move test utilities into the query pack. 2024-12-12 13:54:42 +01:00
Michael Nebel
9ecacddf79 Swift: Update all test util paths to point to the new location. 2024-12-12 13:54:40 +01:00
Michael Nebel
ca66153a3b Swift: Move test utilities into the query pack. 2024-12-12 13:54:38 +01:00
Michael Nebel
138e294dae Ruby: Update all test util paths to point to the new location. 2024-12-12 13:54:37 +01:00
Michael Nebel
157afff135 Ruby: Move test utilities into the query pack. 2024-12-12 13:54:35 +01:00
Michael Nebel
2ca6147932 QL: Update all test util paths to point to the new location. 2024-12-12 13:54:33 +01:00
Michael Nebel
dd06d50b7f QL: Move test utilities into the src folder. 2024-12-12 13:54:32 +01:00
Michael Nebel
2321ca59f6 Python: Update all test util paths to point to the new location. 2024-12-12 13:54:30 +01:00
Michael Nebel
1490400ab0 Python: Move test utilities into the query pack. 2024-12-12 13:54:28 +01:00
Michael Nebel
c3fe3e468c Javascript: Update all test util paths to point to the new location. 2024-12-12 13:54:25 +01:00
Michael Nebel
0f146f1486 Javascript: Move test utilities into the query pack. 2024-12-12 13:54:23 +01:00
Michael Nebel
96fe1449f8 Go: Update all test util paths to point to the new location. 2024-12-12 13:54:21 +01:00
Jeroen Ketema
35403d4299 C++: Fix IR printing when multiple edges point to the same block 2024-12-12 13:46:45 +01:00
Jeroen Ketema
e43f7fbb48 C++: Fix AST printing for OverloadedArrayExpr 2024-12-12 13:44:24 +01:00
Jeroen Ketema
0a7ed159a4 C++: Add test that show that PrintAST is broekn for OverloadedArrayExpr 2024-12-12 13:40:22 +01:00
Owen Mansel-Chan
8e11789186 Restore asStmt, asExpr and asCall to Node
It doesn't really make sense to define them in terms of dispatch.
2024-12-12 12:30:01 +00:00
Michael Nebel
f8e0c4799d Go: Move test utilities into the query pack. 2024-12-12 13:21:35 +01:00
Michael Nebel
12008b4b4e C++: Update all test util paths to point to the new location. 2024-12-12 13:21:34 +01:00
Michael Nebel
47813e17c9 C++: Move test utilities into the query pack. 2024-12-12 13:21:32 +01:00
Michael Nebel
82f8a796e1 C#: Update all test util paths to point to the new location. 2024-12-12 13:21:31 +01:00
Michael Nebel
c4b4be9372 C#: Move test utilities into the query pack. 2024-12-12 13:21:29 +01:00
Michael Nebel
c7c3f6bd80 C#: Update inline-tests query paths. 2024-12-12 13:21:28 +01:00
Michael Nebel
8fbd4a2cd5 C#: Move inline-tests into the utils test folder. 2024-12-12 13:21:26 +01:00
Michael Nebel
0a1d2d0bbb Java: Update all test util paths to point to the new location. 2024-12-12 13:21:25 +01:00
Michael Nebel
91cfb30513 Java: Move test utilities to the java query pack. 2024-12-12 13:21:22 +01:00
Asger F
97b78e752b JS: Added more qldoc 2024-12-12 13:10:52 +01:00
Paolo Tranquilli
173d11d544 Bazel: add a test wrapper around installation scripts
This hack is meant to be an optimization when using install for tests,
where the install step is skipped if nothing changed. If the
installation directory is somehow messed up, `bazel run` can be used to
force install.

This is added as a `<name>-installer-as-test` target, which we can now
use in our internal pytest integration to skip the installation step if
nothing changed on the CLI + language packs side.
2024-12-12 13:08:58 +01:00
Owen Mansel-Chan
3f7c37e1ed Treat container flow as taint flow in global taint flow 2024-12-12 11:41:32 +00:00
Geoffrey White
611d04e221 Rust: Revert stylistic change in shared file. 2024-12-12 11:30:23 +00:00
Geoffrey White
1d72b750b7 Rust: data-flow -> data flow. 2024-12-12 11:29:23 +00:00
Paolo Tranquilli
5ca89eaede Merge branch 'main' into redsun82/swift-6 2024-12-12 12:28:47 +01:00
Geoffrey White
d2cfcb4c9e Update rust/ql/lib/codeql/rust/internal/ConceptsShared.qll
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2024-12-12 11:28:04 +00:00
Owen Mansel-Chan
e13c4b7550 Treat container flow as taint flow in localTaintStep 2024-12-12 10:41:23 +00:00
Simon Friis Vindum
16dcc5c278 Rust: Add variable capture consistency query 2024-12-12 11:23:22 +01:00
Simon Friis Vindum
9fe7bb3e2b Rust: Address PR comments 2024-12-12 11:19:14 +01:00
Simon Friis Vindum
2cf043cfbc Rust: Address PR comments 2024-12-12 10:19:53 +01:00
Simon Friis Vindum
59f3f1f1e9 Apply suggestions from code review
Co-authored-by: intrigus-lgtm <60750685+intrigus-lgtm@users.noreply.github.com>
2024-12-12 08:58:35 +01:00
Owen Mansel-Chan
8d5759dbdf Update remote repository to github/codeql 2024-12-11 21:51:19 +00:00
Geoffrey White
591db05610 Rust: Formatting. 2024-12-11 16:49:29 +00:00
Geoffrey White
ad75906672 Apply suggestions from code review
Co-authored-by: Tom Hvitved <hvitved@github.com>
2024-12-11 16:44:00 +00:00
Owen Mansel-Chan
066db766ef Merge pull request #18153 from owen-mc/java/resttemplate-getforobject
Java: add SSRF sink model for the third parameter of `RestTemplate.getForObject`
2024-12-11 16:37:35 +00:00
Jami
538dee81b6 Merge pull request #18214 from jcogs33/jcogs33/java/file-getname-path-sanitizer
Java: add File.getName as a path injection sanitizer
2024-12-11 10:18:02 -05:00
Simon Friis Vindum
94b037fad1 Rust: Instantiate variable capture library for data flow 2024-12-11 15:44:17 +01:00
Joe Farebrother
e6794a9af1 Add change note 2024-12-11 14:27:57 +00:00
Owen Mansel-Chan
1420bce36a Move import statement in SpringWebClient.qll 2024-12-11 14:19:24 +00:00
Simon Friis Vindum
e8357a648d Rust: Add additional data flow tests 2024-12-11 14:56:16 +01:00
Tom Hvitved
40d9460698 Data flow: Remove unused column from flowThroughOutOfCall 2024-12-11 14:35:32 +01:00
Anders Schack-Mulligen
066cfa31d2 Merge pull request #18258 from aschackmull/dataflow/simplify-apapprox3
Dataflow: Simplify references to access paths from prior stage.
2024-12-11 14:23:31 +01:00
Owen Mansel-Chan
4f8645b4dd Merge pull request #18235 from owen-mc/go/varargs-out-param
Go: Improve data flow out of variadic parameter
2024-12-11 13:18:29 +00:00
Tom Hvitved
fc70024f52 C#: Remove false-positive reflection calls in dataflow 2024-12-11 14:15:58 +01:00
Tom Hvitved
22aaf74184 Merge pull request #18231 from hvitved/rust/models-as-data-summaries
Rust: Models-as-data for flow summaries
2024-12-11 13:37:09 +01:00
Joe Farebrother
2019ddfa7f Qldoc improvements + add a few extra tests 2024-12-11 12:25:40 +00:00
Asger F
f8abc5afee Merge pull request #18204 from asgerf/jss/flow-labels
JS: Migrate away from FlowLabel class in TaintedPath
2024-12-11 13:20:48 +01:00
Asger F
889100a243 Java: update test output with provenance 2024-12-11 13:19:47 +01:00
Asger F
afdbf2c3c6 Java: update test to account for key,val 2024-12-11 13:19:36 +01:00
Asger F
736388809d Java: MethodAccess -> MethodCall 2024-12-11 13:19:25 +01:00
Ian Lynagh
34aefb4bc5 Merge pull request #18268 from igfoo/igfoo/kot-tests-ignore
Kotlin: git-ignore .testproj directories in tests
2024-12-11 12:08:44 +00:00
Joe Farebrother
5c8ef28d12 Add missing qldoc and revert accidentilly commited threat model change 2024-12-11 12:04:16 +00:00
Ian Lynagh
699734611e Kotlin: git-ignore .testproj directories in tests 2024-12-11 12:00:23 +00:00
Michael Nebel
f7ad150636 C#: Update global.json for cshtml_standalone_flowsteps. 2024-12-11 12:57:42 +01:00
Owen Mansel-Chan
ec5d655d7f Look up remote name instead of using origin 2024-12-11 11:02:45 +00:00
Asger F
f9c0ba3826 Ruby: use DeduplicatePathGraph in CodeInjection query 2024-12-11 11:48:15 +01:00
Asger F
815581dc11 JS: Update to account for key,val pairs on edges 2024-12-11 11:48:13 +01:00
Owen Mansel-Chan
aaa4361120 Rearrange member predicates in ControlFlow::Node
Put all the ones which might need to be overrridden by subclasses
together for ease of reading.
2024-12-11 10:34:18 +00:00
Owen Mansel-Chan
79f4f78fc2 Make separate classes for control flow node kinds
This puts all the logic of a particular control flow node kind into one
place and makes it easier to add new kinds.
2024-12-11 10:34:16 +00:00
Asger F
5aa1242117 Shared: use a call bit when tracking reachability to/from a discriminator 2024-12-11 11:29:14 +01:00
Asger F
0eb543e0a9 Java: add test for spurious flow from path graph deduplication 2024-12-11 11:29:13 +01:00
Asger F
8efdc2df7b Shared: change note 2024-12-11 11:29:11 +01:00
Asger F
cba7b98f7a Shared: Add DataFlow::DeduplicatePathGraph 2024-12-11 11:29:10 +01:00
Anders Schack-Mulligen
cac131df37 Dataflow: Rename a couple of predicates. 2024-12-11 11:22:42 +01:00
Anders Schack-Mulligen
d6a4080baf Dataflow: Address review comment. 2024-12-11 11:18:57 +01:00
Cornelius Riemenschneider
f0971684e3 Merge pull request #18257 from github/criemen/bazel-8-00
Upgrade bazel to 8.0.0.
2024-12-11 11:14:41 +01:00
Paolo Tranquilli
a36d226d0c Merge pull request #18247 from github/redsun82/executable-scripts
Make scripts executable
2024-12-11 10:42:57 +01:00
Tom Hvitved
baf186fed7 Address review comments 2024-12-11 10:28:32 +01:00
Owen Mansel-Chan
ba9d21ec98 Merge pull request #17970 from owen-mc/java/lightweight-IR-layer
Java: IPA the CFG (second try)
2024-12-10 23:57:52 +00:00
Joe Farebrother
bcb08bbc7b Update test output 2024-12-10 19:24:05 +00:00
Joe Farebrother
29a90235e8 Improve tests and use API graphs 2024-12-10 19:09:45 +00:00
Joe Farebrother
d2ed92d6d0 Added tests 2024-12-10 19:09:20 +00:00
Joe Farebrother
d2b0d7a743 Add missing qldoc 2024-12-10 19:07:53 +00:00
Joe Farebrother
89167da177 Model flow steps for lxml 2024-12-10 19:01:14 +00:00
Mathias Vorreiter Pedersen
0acef590b1 C++: Add more MaD models. 2024-12-10 18:29:48 +00:00
Mathias Vorreiter Pedersen
64464b39c6 C++: Add tests for a few string-related classes. 2024-12-10 18:28:12 +00:00
Mathias Vorreiter Pedersen
c5bb907fe0 C++: Also handle varargs in MaD parsing. 2024-12-10 18:25:56 +00:00
Mathias Vorreiter Pedersen
c604c44a55 C++: Add CStringT model and accept tests. 2024-12-10 18:22:06 +00:00
Mathias Vorreiter Pedersen
73ff33888b C++: Add CStringT tests. 2024-12-10 18:18:37 +00:00
Mathias Vorreiter Pedersen
ba0ba15e88 C++: Add CSimpleStringT model and accept tests. 2024-12-10 18:13:42 +00:00
Mathias Vorreiter Pedersen
b42bffc55c C++: Add CSimpleStringT tests. 2024-12-10 18:10:54 +00:00
Mathias Vorreiter Pedersen
fb75f54951 C++: Add another typedef. 2024-12-10 18:07:45 +00:00
Owen Mansel-Chan
5b575113c3 Update test-kotlin2 2024-12-10 15:56:15 +00:00
Owen Mansel-Chan
4978a6eb37 Fix getasuccessor kotlin
The change in results shows that there are now fewer control flow nodes.
We have removed precisely those with no successor or predecessor.
2024-12-10 15:26:20 +00:00
Owen Mansel-Chan
5e0c3ab715 Fix kotlin tests 2024-12-10 15:26:19 +00:00
Owen Mansel-Chan
3f5886ef7a Accept another review suggestion 2024-12-10 15:26:17 +00:00
Owen Mansel-Chan
2da9bfb1a6 Finish renaming getCFGNode to getCfgNode 2024-12-10 15:26:16 +00:00
Owen Mansel-Chan
274281f61e Apply all suggestions from code review
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2024-12-10 15:26:14 +00:00
Owen Mansel-Chan
d06dfe0ca3 Add change note 2024-12-10 15:26:13 +00:00
Owen Mansel-Chan
0f3dd6d8f1 Java: IPA the CFG 2024-12-10 15:26:11 +00:00
Anders Schack-Mulligen
da179705c3 Java: Accept expected file changes. 2024-12-10 14:52:06 +01:00
Mathias Vorreiter Pedersen
0f5786e4e6 Merge pull request #18251 from MathiasVP/fix-uncertain-array-writes
C++: Consider writes to arrays as uncertain
2024-12-10 12:38:47 +00:00
Michael Nebel
828818d355 Merge pull request #18248 from michaelnebel/csharp/enabletests
C#: Enable Semmle.Util.Tests.
2024-12-10 13:30:15 +01:00
Anders Schack-Mulligen
40f7713678 Dataflow: Minor simplification. 2024-12-10 13:28:43 +01:00
Anders Schack-Mulligen
4e155f8542 Dataflow: Insert a few getApprox calls to remove ApApprox from fwdFlow. 2024-12-10 13:23:51 +01:00
Anders Schack-Mulligen
231bf9d1c9 Dataflow: Drop ApApprox join in fwdFlowStore. 2024-12-10 13:20:27 +01:00
Michael Nebel
684c80c31a C#: Address review comments. 2024-12-10 13:13:11 +01:00
Anders Schack-Mulligen
501cbdab3c Dataflow: Remove another ApApprox join and related columns. 2024-12-10 13:12:32 +01:00
Anders Schack-Mulligen
22e0636cba Dataflow: Insert a few getApprox calls to remove even more columns. 2024-12-10 13:09:38 +01:00
Anders Schack-Mulligen
a77adadd01 Dataflow: Remove more unused columns. 2024-12-10 12:57:24 +01:00
Anders Schack-Mulligen
882a985788 Dataflow: Remove useless join. 2024-12-10 12:53:30 +01:00
Anders Schack-Mulligen
262f64f037 Dataflow: Remove unused columns. 2024-12-10 12:53:29 +01:00
Anders Schack-Mulligen
d4044062c5 Dataflow: Remove ApApprox column in out-flow. 2024-12-10 12:53:29 +01:00
Anders Schack-Mulligen
7c888ebe06 Dataflow: Replace some allowsFieldFlow,apa pairs with emptyAp boolean. 2024-12-10 12:53:29 +01:00
Anders Schack-Mulligen
c8046fa8e0 Dataflow: Drop some ApApprox columns and joins. 2024-12-10 12:53:28 +01:00
Joe Farebrother
c41c2adf38 Merge pull request #17922 from joefarebrother/python-promote-template-injection
Python: Promote Template Injection query from experimental
2024-12-10 11:12:23 +00:00
Cornelius Riemenschneider
53ca5083a9 Upgrade bazel to 8.0.0.
Previously, we were using 8.0.0rc1.
In particular, this upgrade means we need to explicitly
import more rules, as they've been moved out of the core bazel repo.
2024-12-10 12:05:37 +01:00
Asger F
77f8e8ef4e JS: Use FlowState::fromFlowLabel instead of Label::toFlowState
This works better for other queries where we don't already have a module named Label
2024-12-10 11:57:18 +01:00
Asger F
38c9023dd9 JS: FlowLabel -> FlowState in ZipSlip 2024-12-10 11:16:07 +01:00
Asger F
0cd01cb96f JS: Use node1,state1,node2,state2 naming convention in tainted path 2024-12-10 11:16:05 +01:00
Asger F
0802107d9a JS: Flow label -> flow state in TaintedPath 2024-12-10 11:16:04 +01:00
Michael Nebel
86c6df5cbd C#: Log warning when chain or certificate is not provided in the validation. 2024-12-10 10:35:48 +01:00
Michael Nebel
547af6c3c9 C#: Introduce null checks in the NugetPackageRestorer. 2024-12-10 10:31:12 +01:00
Michael Nebel
083533a673 C#: Update paket dependencies lock file. 2024-12-10 10:31:11 +01:00
Michael Nebel
37982f5854 C#: Update paket dotnet tool. 2024-12-10 10:31:09 +01:00
Michael Nebel
4275813b87 C#: Make the path tests independent. 2024-12-10 09:58:14 +01:00
Michael Nebel
0580ad060b Merge pull request #18255 from github/workflow/coverage/update
Update CSV framework coverage reports
2024-12-10 09:12:10 +01:00
github-actions[bot]
8f5822e4c6 Add changed framework coverage reports 2024-12-10 00:22:53 +00:00
Alvaro Muñoz
d0c761bb23 Bump qlpack versions 2024-12-09 21:48:17 +01:00
Alvaro Muñoz
bee0668cd0 Add tests and update expected results 2024-12-09 21:47:28 +01:00
Alvaro Muñoz
b80d3d56a3 exclude Simple refereces from GitHub context 2024-12-09 21:47:09 +01:00
Joe Farebrother
f82fa20249 Update test outputs 2024-12-09 20:37:11 +00:00
Joe Farebrother
8a778da253 Apply suggestions from docs review
Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com>
2024-12-09 19:58:00 +00:00
Joe Farebrother
462be46be9 Update test output 2024-12-09 19:57:52 +00:00
Joe Farebrother
ef1d898b0d Add qldoc 2024-12-09 19:57:39 +00:00
Joe Farebrother
ebaab89933 Formatting updates 2024-12-09 19:57:25 +00:00
Joe Farebrother
dd8b7a4a8f Add additional test for safe case in documentation 2024-12-09 19:57:19 +00:00
Joe Farebrother
55557f8dd3 Use API graohs directly 2024-12-09 19:57:07 +00:00
Joe Farebrother
6e16ed52e8 Reveiw suggestions: Spelling/grammar fixes
Co-authored-by: Taus <tausbn@github.com>
2024-12-09 19:56:59 +00:00
Joe Farebrother
0f0c1e1609 Test update 2024-12-09 19:56:46 +00:00
Joe Farebrother
494d779541 Add changenote 2024-12-09 19:56:38 +00:00
Joe Farebrother
f0163894b6 fix link in qhelp refs 2024-12-09 19:56:25 +00:00
Joe Farebrother
4602c5c905 Remove experimental version + qhelp fixes 2024-12-09 19:56:18 +00:00
Joe Farebrother
e4e02ec674 Add security severity + fix qhelp 2024-12-09 19:56:03 +00:00
Joe Farebrother
02f395f5f8 Add qhelp 2024-12-09 19:55:57 +00:00
Joe Farebrother
cea196ec61 Add concepts tests + some fixes 2024-12-09 19:55:42 +00:00
Joe Farebrother
1cb01a286d Add tests for jinja 2024-12-09 19:55:36 +00:00
Joe Farebrother
71ab82dee0 Fix qldoc, formatting, and redundant import warnings 2024-12-09 19:55:21 +00:00
Joe Farebrother
b2c13fe351 Promote template injection sinks for each framework covered
`Cheetah` was excluded as it was last updated 15 years ago and its documentation links are dead.
2024-12-09 19:55:17 +00:00
Joe Farebrother
60d8a85a9c Promote jinja sinks 2024-12-09 19:54:57 +00:00
Joe Farebrother
8647073433 Copy template injection to standard pack + add jinja sinks 2024-12-09 19:47:06 +00:00
Alvaro Muñoz
f6d20195b1 When trigger event is not known, do not check context trigger maps 2024-12-09 17:33:13 +01:00
Alvaro Muñoz
f3ada4a92b Update CompositeActionSources expected file 2024-12-09 17:32:26 +01:00
Alvaro Muñoz
3591db9e9c Remove artifact source as a source of PR refs 2024-12-09 17:32:09 +01:00
Alvaro Muñoz
ef713ff13b Extract GitHub context access expression into its own class 2024-12-09 17:30:10 +01:00
Mathias Vorreiter Pedersen
1266b244f5 Merge pull request #18136 from MathiasVP/model-active-template-library
C++: Model Microsoft's "Active Template Library"
2024-12-09 16:05:19 +00:00
Mathias Vorreiter Pedersen
0f49ba848d C++: Accept test changes. Nothing exciting to see here. 2024-12-09 16:04:46 +00:00
Mathias Vorreiter Pedersen
9bcdfb6d01 C++: VariableAddressInstructions with array types are not single-object types. 2024-12-09 15:06:22 +00:00
Asger F
66eb458134 JS: Handle match/matchAll and unknown regexps 2024-12-09 15:38:36 +01:00
Mathias Vorreiter Pedersen
8bdd10c0c2 C++: Fix spurious columns in 'CRegKey'. 2024-12-09 14:31:17 +00:00
Mathias Vorreiter Pedersen
5f33733b6e C++: Fix 'QueryValue' model. 2024-12-09 14:27:24 +00:00
Asger F
6e7c5a3707 JS: Slightly more general getRoot() 2024-12-09 15:05:45 +01:00
Asger F
be617cee4a JS: More precise handling of .exec() 2024-12-09 15:03:51 +01:00
Asger F
703cad9e95 Expand test case 2024-12-09 15:00:56 +01:00
Asger F
2a2a4d2b67 JS: Add TaintedUrlSuffixCustomizations
Importing TaintedUrlSuffix.qll causes the flow label to materialised in unrelated queries, so:

- Renames TaintedUrlSuffix.qll to TaintedUrlSuffixCustomizations.qll
- Make the flow label class abstract
- Adds a new TaintedUrlSuffix.qll that re-exports the above file and also materialises the flow label
- Import the *Customizations.qll file from contexts where we don't want to materialise the flow label
2024-12-09 14:59:29 +01:00
Asger F
d1694013ff JS: Update test showing accidental flow label materialisation
This wouldn't be an issue once FlowLabel is completely deprecated but it will cause perf issues in the interim, so this is fixed in the next commit
2024-12-09 14:59:28 +01:00
Asger F
8fe39bdd38 JS: Update query's own output after test changes 2024-12-09 14:59:27 +01:00
Asger F
71a6a47713 JS: Fix issue with new RegExp().exec() 2024-12-09 14:59:25 +01:00
Asger F
f6d0835c64 JS: Show problem with new RegExp().exec() 2024-12-09 14:59:24 +01:00
Asger F
ef833de60e JS: Replace DocumentUrl with TaintedUrlSuffix 2024-12-09 14:59:23 +01:00
Asger F
e2b2d1c9ab JS: Allow arbitrary comments in ConsistencyChecking
Because line comments cannot be used inside JSX elements
2024-12-09 14:59:21 +01:00
Asger F
712c69ebc8 JS: Fixup the test expectations 2024-12-09 14:59:19 +01:00
Asger F
f8ff504f5c JS: Add ClientSideUrlRedirect test consistency
Update Consistency.ql again
2024-12-09 14:59:18 +01:00
Cornelius Riemenschneider
7dd10f72cb Merge pull request #18243 from github/post-release-prep/codeql-cli-2.20.0
Post-release preparation for codeql-cli-2.20.0
2024-12-09 14:58:01 +01:00
Mathias Vorreiter Pedersen
184dfc24b9 C++: Fix 'QueryStringValue' model. 2024-12-09 13:42:39 +00:00
Mathias Vorreiter Pedersen
7f87a25768 C++: Fix 'QueryMultiStringValue' model. 2024-12-09 13:41:14 +00:00
Mathias Vorreiter Pedersen
674dbce36d C++: Add taint flow through 'CRegKey::Create'. 2024-12-09 13:38:37 +00:00
Mathias Vorreiter Pedersen
db86f6aaf9 C++: Fix annotation. 2024-12-09 13:32:22 +00:00
Alvaro Muñoz
1fa00f1065 Capture the event name rathen than the whole event 2024-12-09 14:31:10 +01:00
Cornelius Riemenschneider
badc927cf8 Merge branch 'main' into post-release-prep/codeql-cli-2.20.0 2024-12-09 14:30:53 +01:00
Mathias Vorreiter Pedersen
d3dc318ba1 C++: Make 'GetValueAt' a value-preserving step. 2024-12-09 13:26:46 +00:00
Mathias Vorreiter Pedersen
d735a1433b C++: Also flow to the return value of 'operator='. 2024-12-09 13:24:21 +00:00
Mathias Vorreiter Pedersen
dcc35a5724 Merge pull request #18221 from MathiasVP/add-microsoft-aspnetcore-mvc-model
C#: Add a MaD model for `Microsoft.AspNetCore.Mvc.Controller.View`
2024-12-09 13:24:02 +00:00
Michael Nebel
5624a77176 C#: Use TEST_TEMPDIR when set for test files. 2024-12-09 13:59:59 +01:00
Tom Hvitved
2f8b04b225 Rust: Models-as-data for flow summaries 2024-12-09 13:41:55 +01:00
Michael Nebel
baa248ce65 C#: Enable Semmle.Util.Tests. 2024-12-09 13:00:52 +01:00
Cornelius Riemenschneider
57053e8ba1 Merge pull request #18245 from github/criemen/csharp-win-tests
C#: Shorten test target names to make Windows happy.
2024-12-09 12:57:40 +01:00
Cornelius Riemenschneider
798b86f6af Disable semmle.util.tests again. 2024-12-09 12:27:49 +01:00
Cornelius Riemenschneider
526dbe5901 Address review, also run semmle-util tests. 2024-12-09 12:19:01 +01:00
Jeroen Ketema
fb5aa97077 Merge pull request #18239 from jketema/typo
C++: Fix word duplication in change note
2024-12-09 10:55:13 +01:00
Cornelius Riemenschneider
18560cde9d C#: Shorten test target names to make Windows happy. 2024-12-09 10:54:04 +01:00
Paolo Tranquilli
3bc822f021 Swift: add change note for Swift 6 upgrade 2024-12-09 10:31:15 +01:00
Paolo Tranquilli
f74dcc7036 Make scripts executable 2024-12-09 10:20:46 +01:00
Geoffrey White
97ab31ab00 Merge pull request #18229 from geoffw0/self
Rust: Fix unwanted 'self' results from rust/unused-variable
2024-12-09 08:50:03 +00:00
Michael Nebel
127518e91a Merge pull request #18234 from michaelnebel/csharp/projectdependencies
C#: Clean up dependencies Newtonsoft.Json.
2024-12-09 09:08:27 +01:00
Mathias Vorreiter Pedersen
41425b157f C++: Add test with missing flow. 2024-12-08 23:47:34 +00:00
Jami Cogswell
214da9e9ad Java: add change note 2024-12-06 19:59:40 -05:00
Angela P Wen
406ac15863 Merge branch 'main' into post-release-prep/codeql-cli-2.20.0 2024-12-06 14:51:56 -08:00
github-actions[bot]
dbe8f98e18 Post-release preparation for codeql-cli-2.20.0 2024-12-06 21:19:19 +00:00
Simon Friis Vindum
70501008b0 Merge pull request #18232 from paldepind/rust-self-capture
Rust: Fix a bug where captured `self` parameters where not considered captured
2024-12-06 20:23:38 +01:00
Mathias Vorreiter Pedersen
8a6c52967d Merge pull request #18233 from MathiasVP/fix-join-order-in-barrier-guards
C++: Fix two bad joins in barrier guards
2024-12-06 19:13:51 +00:00
Jeroen Ketema
3a3eb001e3 C++: Fix word duplication in change note 2024-12-06 19:53:06 +01:00
Jeroen Ketema
ee8ce1c84d Merge pull request #18222 from github/calumgrant/bmn/badly-bounded-write
C++: Fix FPs in cpp/badly-bounded-write caused by extraction errors
2024-12-06 19:50:06 +01:00
Simon Friis Vindum
9b34615a64 Rust: Update test assertions to match results 2024-12-06 19:05:53 +01:00
Calum Grant
fa123a7215 Merge pull request #18200 from github/calumgrant/bmn/wrong-type-format-args2
C++: Fix more FPs with extraction errors on cpp/wrong-type-format-arguments
2024-12-06 17:50:56 +00:00
Paolo Tranquilli
a555a44a20 Merge pull request #18236 from geoffw0/percent
Rust: Add % of files extracted without errors to summary stats.
2024-12-06 18:01:04 +01:00
Mathias Vorreiter Pedersen
59f4b3c0db C++: Get rid of the model for 'Create'. 2024-12-06 15:58:07 +00:00
Geoffrey White
1ceee76919 Rust: Get the .expected values right this time. 2024-12-06 15:53:42 +00:00
Mathias Vorreiter Pedersen
3d0a2057f6 C++: Fix 'BSTRToArray' stub and MaD model. 2024-12-06 15:46:14 +00:00
Owen Mansel-Chan
7e5e634bc7 Update .expected files (no new results) 2024-12-06 15:41:28 +00:00
Calum Grant
e98129c402 Update cpp/ql/src/change-notes/2024-12-05-badly-bounded-write.md
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-06 15:36:24 +00:00
Calum Grant
5aa604b42c Update cpp/ql/src/change-notes/2024-12-05-wrong-type-format-args.md
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-06 15:34:57 +00:00
Mathias Vorreiter Pedersen
66de42c576 C++: Fix MaD row for 'operator&' on 'CComBSTR's. 2024-12-06 15:33:29 +00:00
Mathias Vorreiter Pedersen
6388a9af95 C++: Delete duplicated MaD row. 2024-12-06 15:31:33 +00:00
Mathias Vorreiter Pedersen
f7b55e05eb C++: 'Attach' is value-preserving. 2024-12-06 15:30:34 +00:00
Geoffrey White
4024968e46 Rust: Accept integration test changes. 2024-12-06 15:30:02 +00:00
Mathias Vorreiter Pedersen
904db38a5f C++: Add missing space between type name and '&'. 2024-12-06 15:29:13 +00:00
Paolo Tranquilli
198417c63a Swift: fix filename case for prebuilt artifacts 2024-12-06 16:28:04 +01:00
Mathias Vorreiter Pedersen
d0bf3b84e4 C++: Add missing MaD row for move constructor. 2024-12-06 15:27:17 +00:00
Mathias Vorreiter Pedersen
9f31116630 C#: Accept test changes. 2024-12-06 15:18:03 +00:00
Mathias Vorreiter Pedersen
c51153203b C++: Fix two bad joins that happen in 'UnboundedWrite' on #18207. 2024-12-06 15:10:08 +00:00
Owen Mansel-Chan
75331ea268 Add change note 2024-12-06 15:03:34 +00:00
Owen Mansel-Chan
67572712ea Fix flow out of varargs param with models-as-data
This still doesn't allow for a variadic out parameter to be defined as
a source using MaD. This is due to the lack of an implicit store step
at sources, to match implicit read steps at sinks.
2024-12-06 15:00:40 +00:00
Owen Mansel-Chan
8cc4cd58c6 Add failing test for flow out of varargs param with models-as-data 2024-12-06 15:00:37 +00:00
Owen Mansel-Chan
96c8af8943 Test flow out of varargs param with function models 2024-12-06 15:00:34 +00:00
Owen Mansel-Chan
1612a7a9a0 Delete accidentally committed binary 2024-12-06 15:00:33 +00:00
Owen Mansel-Chan
69f087a46d Fix pre-existing failing test in VarArgsWithFunctionModels
It was failing for a silly reason.
2024-12-06 15:00:31 +00:00
Owen Mansel-Chan
ec7cbf93d9 Add failing test for flow out of varargs parameter 2024-12-06 15:00:30 +00:00
Owen Mansel-Chan
1935c26b56 Trivial variable name fixes 2024-12-06 15:00:28 +00:00
Michael Nebel
4e079d34b9 C#: Clean up dependencies Newtonsoft.Json and dont override nowarn. 2024-12-06 15:55:30 +01:00
Geoffrey White
d7d4658aae Rust: Add % of files extractor without errors to summary stats. 2024-12-06 14:54:21 +00:00
Michael Nebel
9513b6c3a9 Merge pull request #18199 from michaelnebel/csharp/updateroslyn
C#: Update Roslyn nuget dependencies.
2024-12-06 15:41:23 +01:00
Paolo Tranquilli
926d65bcec Swift: update LFS artifacts and remove override 2024-12-06 15:28:22 +01:00
Paolo Tranquilli
263bd69636 Swift: fix artifact update infrastructure 2024-12-06 15:28:13 +01:00
Geoffrey White
4b93325914 Merge branch 'main' into badcrypto 2024-12-06 14:21:11 +00:00
Geoffrey White
f637b3b1f3 Apply suggestions from code review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2024-12-06 14:20:40 +00:00
Michael B. Gale
e16adda74d Merge pull request #18029 from github/mbg/csharp/set-proxy-cert-file 2024-12-06 14:03:43 +00:00
Paolo Tranquilli
a82d37e05c Swift: fix gracefully accepting missing ForEachStmt.iteratorVar 2024-12-06 14:45:24 +01:00
Paolo Tranquilli
a4f7981d93 Swift: accept test changes 2024-12-06 14:44:01 +01:00
Michael Nebel
af2234453b C#: Update dependencies (binlog package needs to be updated). 2024-12-06 14:30:51 +01:00
Michael Nebel
b9253222a6 C#: Add change-note. 2024-12-06 14:30:50 +01:00
Michael Nebel
d83f2215f6 C#: Update Parameters test to only inspect parameters from source code. 2024-12-06 14:30:49 +01:00
Michael Nebel
f94aaee53c C#: Update integration tests expected output. 2024-12-06 14:30:47 +01:00
Michael Nebel
61fa889190 C#: Update the format test expected output as the params keyword is now extracted correctly. 2024-12-06 14:30:46 +01:00
Michael Nebel
6a0d56a146 C#: Update DataQuality output. Roslyn now correctly finds the compile time target. 2024-12-06 14:30:45 +01:00
Michael Nebel
347fb1cfd9 C#: Update dependencies. 2024-12-06 14:30:44 +01:00
Michael Nebel
4013eeba8b C#: Use the newest version of packages instead of the minimum version. 2024-12-06 14:30:42 +01:00
Michael Nebel
2816234359 C#: Update Roslyn. 2024-12-06 14:30:41 +01:00
Michael B. Gale
c8ccfe40a5 C#: Create certificate from string, rather than file 2024-12-06 13:13:41 +00:00
Michael B. Gale
653d68ea94 C#: Explicitly close writer in DependabotProxy 2024-12-06 13:13:15 +00:00
Simon Friis Vindum
ed68423d6e Rust: Handle captured self parameter in variable implementation 2024-12-06 14:12:27 +01:00
Calum Grant
d38975bb99 C++: Use getType() instead of getUnderlyingType() 2024-12-06 13:07:58 +00:00
Simon Friis Vindum
43dd3ebf14 Rust: Add variables test with captured self parameter 2024-12-06 14:07:42 +01:00
Geoffrey White
281f8b1828 Rust: Fix the unwanted results. 2024-12-06 12:29:07 +00:00
Geoffrey White
e52e1b0c1f Rust: Add test case for 'self' in unused entities. 2024-12-06 12:24:11 +00:00
Mathias Vorreiter Pedersen
0d616ca7ef C#: Respond to PR comments. 2024-12-06 12:23:35 +00:00
Asger F
b8d652c5b2 Merge pull request #18132 from asgerf/jss/deprecation
JS: Deprecations and related refactorings
2024-12-06 13:23:26 +01:00
Tom Hvitved
3ba87de260 Merge pull request #18220 from hvitved/rust/cache-default-additional-taint-step
Rust: Cache `defaultAdditionalTaintStep`
2024-12-06 13:04:11 +01:00
Paolo Tranquilli
f81f30cc4d Swift: accept test changes 2024-12-06 12:47:54 +01:00
Paolo Tranquilli
bed638793c Swift: remove linux QL tests check 2024-12-06 12:36:19 +01:00
Paolo Tranquilli
7ee3bf9fc8 Swift: add update/downgrade scripts 2024-12-06 12:35:01 +01:00
Paolo Tranquilli
4ac602ccd7 Merge branch 'main' into redsun82/swift-6 2024-12-06 12:31:40 +01:00
Calum Grant
defa4cc19f Merge pull request #18194 from github/calumgrant/bmn/wrong-number-format-arguments2
C++: Fix a FP in cpp/wrong-number-format-arguments caused by an extraction error
2024-12-06 10:14:06 +00:00
Calum Grant
2cd4e1af9f C++: Use Expr.stripType() 2024-12-06 09:55:05 +00:00
Geoffrey White
129f21af29 Rust: Make a predicate private. 2024-12-06 09:37:41 +00:00
Calum Grant
2da3d36092 C++: Change note 2024-12-06 09:36:51 +00:00
Michael Nebel
9715ffd9a4 Merge pull request #18205 from michaelnebel/csharp/narrowpatterntypes
C#: Narrow pattern types
2024-12-06 10:33:13 +01:00
Paolo Tranquilli
f8976142f5 Merge pull request #18224 from github/redsun82/rust-tweaks
Rust: tweak/define more `toString` implementations
2024-12-06 09:27:40 +01:00
Paolo Tranquilli
b59b90ba6d Rust: accept test changes 2024-12-06 09:12:16 +01:00
Paolo Tranquilli
d0804ac726 Merge branch 'main' into redsun82/rust-tweaks 2024-12-06 09:11:58 +01:00
Geoffrey White
4e418d3d4d Rust: Update for latest main, and autoformat. 2024-12-05 19:09:40 +00:00
Geoffrey White
de042ea9d7 Merge branch 'main' into badcrypto 2024-12-05 18:36:47 +00:00
Jeroen Ketema
829a934ccb Merge pull request #18049 from microsoft/brodes/seh_flow_phase2_splitting_seh_edges
Brodes/seh flow phase2 splitting seh edges
2024-12-05 19:36:39 +01:00
Geoffrey White
dd0fa791aa Rust: Add qhelp. 2024-12-05 18:02:44 +00:00
Geoffrey White
6eb850c8cb Rust: Improve the model. 2024-12-05 16:49:27 +00:00
Geoffrey White
94dbad7c95 Rust: Model for cipher traits. 2024-12-05 16:49:19 +00:00
Paolo Tranquilli
720bfc8ff1 Rust: tweak/define more toString implementations 2024-12-05 17:43:47 +01:00
REDMOND\brodes
3619b01ace Merge branch 'brodes/seh_flow_phase2_splitting_seh_edges' of https://github.com/microsoft/codeql into brodes/seh_flow_phase2_splitting_seh_edges 2024-12-05 10:50:17 -05:00
REDMOND\brodes
48c86979f0 Deleting unused predicate. 2024-12-05 10:50:06 -05:00
Ben Rodes
3115833847 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-05 10:49:33 -05:00
Ben Rodes
6cbaa73d58 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-05 10:48:40 -05:00
Ben Rodes
1fbd75fee3 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-05 10:48:34 -05:00
Ben Rodes
e9ccf37d4d Update cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-05 10:48:23 -05:00
Ben Rodes
008d58b425 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-05 10:48:16 -05:00
Ben Rodes
ca6d3b0038 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2024-12-05 10:48:00 -05:00
Calum Grant
12b4c0a2dd C++: Change note 2024-12-05 15:40:50 +00:00
Ben Rodes
befca9ba0e Merge branch 'main' into brodes/seh_flow_phase2_splitting_seh_edges 2024-12-05 10:34:08 -05:00
Mathias Vorreiter Pedersen
dce29dbbd0 Merge pull request #18218 from MathiasVP/final-alias-edge-kind
C++: Use a final alias for `EdgeKind`
2024-12-05 15:32:59 +00:00
Geoffrey White
eeeb142f0b Rust: Implement the query. 2024-12-05 15:22:10 +00:00
Geoffrey White
07e3421f6f Rust: Add shared ConceptsShared.qll, CryptoAlgorithms.qll and CryptoAlgorithmNames.qll to Rust. 2024-12-05 15:22:09 +00:00
Geoffrey White
6c4e0a99e2 Rust: A few more test cases. 2024-12-05 15:17:22 +00:00
Calum Grant
7aed4c3cbf C++: Change note 2024-12-05 15:13:38 +00:00
REDMOND\brodes
57fc3fbfe3 Switching from isSeh bools to sublcassed ExceptionEdge. 2024-12-05 10:10:56 -05:00
Mathias Vorreiter Pedersen
41f08d9b84 C#: Accept test changes. 2024-12-05 14:59:37 +00:00
Mathias Vorreiter Pedersen
4af18be70b C#: Add change note. 2024-12-05 14:42:59 +00:00
Calum Grant
b7f47f752b C++: Remove FPs from cpp/badly-bounded-write 2024-12-05 14:37:19 +00:00
REDMOND\brodes
defa8696d3 Merge remote-tracking branch 'mathiasvp/final-alias-edge-kind' into brodes/seh_flow_phase2_splitting_seh_edges
# Conflicts:
#	cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll
2024-12-05 09:35:13 -05:00
Tom Hvitved
ed4819aeab Rust: Cache defaultAdditionalTaintStep 2024-12-05 15:19:11 +01:00
Tom Hvitved
7eb3b40977 Merge pull request #18219 from hvitved/rust/update-inline-expectations
Rust: update inline expectations
2024-12-05 15:11:25 +01:00
yoff
81c8a702ff Merge pull request #18112 from github/tausbn/add-api-graph-support-for-parameter-annotations 2024-12-05 15:05:27 +01:00
Mathias Vorreiter Pedersen
5bebfdeb2a C#: Add a MaD model for the 'Microsoft.AspNetCore.Mvc.Controller.View' method. 2024-12-05 13:59:59 +00:00
Tom Hvitved
1c56692c02 Rust: update inline expectations 2024-12-05 14:43:39 +01:00
Geoffrey White
bdb2f3d091 Rust: Add placeholder query and tests for 'cipher' module. 2024-12-05 13:38:57 +00:00
Calum Grant
fd7469848e C++: Test case for cpp/badly-bounded-write 2024-12-05 13:16:59 +00:00
Mathias Vorreiter Pedersen
667abb19d7 C++: Expose a final alias instead of the abstract class. 2024-12-05 13:13:44 +00:00
Michael B. Gale
952488c2d8 C#: Fix possible null dereference 2024-12-05 12:32:55 +00:00
Michael B. Gale
7369d043ed C#: Don't initialise DependabotProxy on Windows or macOS 2024-12-05 12:25:45 +00:00
Michael B. Gale
2e80e09f52 C#: Apply suggestions from code review for DependabotProxy 2024-12-05 12:15:27 +00:00
Michael B. Gale
ee7f0b0f2a C#: Load Dependabot Proxy certificate in DependabotProxy, and implement IDisposable 2024-12-05 12:15:26 +00:00
Michael B. Gale
ca251fb840 C#: Set up proxy for IsFeedReachable, if configured 2024-12-05 12:15:23 +00:00
Michael B. Gale
984091d4a4 C#: Propagate DependabotProxy instance down from DependencyManager 2024-12-05 12:14:29 +00:00
Michael B. Gale
e999ec1ecf C# Expose CertificatePath from DependabotProxy 2024-12-05 12:14:28 +00:00
Michael B. Gale
87bd21e12c C#: Use Add for environment variables 2024-12-05 12:14:27 +00:00
Michael B. Gale
de415d68cf C#: Add more logging to DependabotProxy 2024-12-05 12:14:26 +00:00
Michael B. Gale
6cd5711313 C#: Set environment variables for proxy for calls to dotnet 2024-12-05 12:14:25 +00:00
Michael B. Gale
8ca75602d8 C#: Initialise DependabotProxy in DotNetCliInvoker 2024-12-05 12:14:25 +00:00
Michael B. Gale
232caa7185 C#: Add DependabotProxy class 2024-12-05 12:14:24 +00:00
Michael B. Gale
537601290b C#: Add CODEQL_PROXY_* environment variable names 2024-12-05 12:14:23 +00:00
Michael B. Gale
05f9a90fd7 Merge pull request #18216 from github/dependabot/go_modules/go/extractor/extractor-dependencies-288d2c81da
Bump golang.org/x/tools from 0.27.0 to 0.28.0 in /go/extractor in the extractor-dependencies group
2024-12-05 11:53:11 +00:00
Owen Mansel-Chan
347fd575a2 Refactor to avoid duplicated logic 2024-12-05 11:15:43 +00:00
Simon Friis Vindum
43e3f8406d Merge pull request #18188 from paldepind/rust-df-array
Rust: Basic data flow through arrays
2024-12-05 12:09:22 +01:00
Simon Friis Vindum
3061d4a516 Rust: Minor tweaks 2024-12-05 11:53:12 +01:00
Owen Mansel-Chan
b20b7c7572 Remove escaped "{" and "}" before counting placeholders 2024-12-05 10:43:13 +00:00
Simon Friis Vindum
1f4e7d1f37 Rust: Handle arrays in taint tracking 2024-12-05 11:41:32 +01:00
Simon Friis Vindum
44239cbf2e Rust: Add taint tests for arrays 2024-12-05 11:39:05 +01:00
Simon Friis Vindum
27de43fed8 Merge branch 'main' into rust-df-array 2024-12-05 11:08:54 +01:00
Michael Nebel
80be95dbf9 Merge pull request #18090 from michaelnebel/csharp/locks
C#: Use dedicated lock type where applicable.
2024-12-05 10:52:34 +01:00
Jeroen Ketema
65a4dc31c1 Merge pull request #18213 from MathiasVP/fix-join-order-in-guarded-free
C++: Fix a join-order problem that happens on #18207
2024-12-05 10:39:51 +01:00
Simon Friis Vindum
1dbcaa0ece Merge pull request #18202 from paldepind/rust-taint
Rust: Add default taint flow steps
2024-12-05 10:31:11 +01:00
Anders Schack-Mulligen
4bf63fedc9 Merge pull request #18179 from aschackmull/dataflow/accesspath-notypes
Dataflow: Remove tracked types from Access Paths, track tainted object type, and tweak type pruning.
2024-12-05 09:58:36 +01:00
Simon Friis Vindum
5b6ce3e0d0 Merge branch 'main' into rust-taint 2024-12-05 09:34:25 +01:00
Paolo Tranquilli
c4e53b842d Merge pull request #18165 from github/redsun82/rust-less-canonical-paths
Rust: restrict canonical path calculations
2024-12-05 08:57:41 +01:00
dependabot[bot]
d25045c936 Bump golang.org/x/tools
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/tools` from 0.27.0 to 0.28.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-05 03:26:59 +00:00
Jami Cogswell
121780c55a Java: add File.getName as a path injection sanitizer 2024-12-04 18:57:51 -05:00
Henry Mercer
ccfb32e989 Merge pull request #18211 from github/post-release-prep/codeql-cli-2.20.0
Post-release preparation for codeql-cli-2.20.0
2024-12-04 20:45:07 +00:00
Andrew Eisenberg
515c65058e Merge pull request #18212 from github/aeisenberg/artifacts-v4
Update action.yml to use artifacts@v4
2024-12-04 12:26:41 -08:00
Mathias Vorreiter Pedersen
6fd9e19673 C++: Fix a join-order problem that happens on #18207. 2024-12-04 20:10:45 +00:00
Andrew Eisenberg
1ac6c3751b Update action.yml to use artifacts@v4
v3 is getting deprecated.
2024-12-04 11:41:40 -08:00
github-actions[bot]
cf71a1525b Post-release preparation for codeql-cli-2.20.0 2024-12-04 18:36:17 +00:00
Ben Rodes
779376e281 Merge branch 'main' into brodes/seh_flow_phase2_splitting_seh_edges 2024-12-04 13:30:21 -05:00
REDMOND\brodes
cc43bb1969 Merge branch 'brodes/seh_flow_phase1_throwing_models' into brodes/seh_flow_phase2_splitting_seh_edges 2024-12-04 13:28:21 -05:00
Calum Grant
147d699133 C++: Add another test case 2024-12-04 15:45:17 +00:00
Simon Friis Vindum
d6ab7d2aff Merge branch 'main' into rust-taint 2024-12-04 15:28:30 +01:00
Mathias Vorreiter Pedersen
4f00e229e0 C++: Accept more test changes. 2024-12-04 13:49:07 +00:00
Michael Nebel
38e3913fa9 C#: Remove redundant using statements. 2024-12-04 14:46:15 +01:00
Michael Nebel
dde0281d25 C#: Use dedicated lock type where applicable. 2024-12-04 14:46:14 +01:00
Michael Nebel
57c3b571ab C#: Narrow types to SingleVariableDesignation syntax (to avoid future compiler warning). 2024-12-04 14:43:52 +01:00
Michael Nebel
c6d2bf2046 C#: Add extra flag to tracing debugging launch. 2024-12-04 14:43:51 +01:00
Paolo Tranquilli
08de0b40ed Merge branch 'main' into redsun82/rust-less-canonical-paths 2024-12-04 14:35:10 +01:00
Simon Friis Vindum
3004639fca Rust: Add default taint flow steps 2024-12-04 14:11:05 +01:00
Simon Friis Vindum
a19f1d0b8b Rust: Remove store step for repeat operand in array expression 2024-12-04 14:01:53 +01:00
Simon Friis Vindum
c62b7d139f Merge branch 'main' into rust-df-array 2024-12-04 13:55:26 +01:00
Mathias Vorreiter Pedersen
279a30c7e8 C++: Make 'SetAt' a value-preserving step. 2024-12-04 12:52:41 +00:00
Mathias Vorreiter Pedersen
c7dee4b020 C++: Remove more taint to POSITIONs. 2024-12-04 12:52:13 +00:00
Mathias Vorreiter Pedersen
9dc3aecf67 C++: Remove more taint to POSITIONs. 2024-12-04 12:48:55 +00:00
Mathias Vorreiter Pedersen
de75e033be C++: Remove taint to POSITIONs. 2024-12-04 12:46:14 +00:00
Mathias Vorreiter Pedersen
8d035e61a3 C++: Fix test. 2024-12-04 12:33:02 +00:00
Simon Friis Vindum
70a296be89 Rust: Add string slice taint flow test 2024-12-04 13:24:15 +01:00
Simon Friis Vindum
2ada999728 Rust: Include as expression in CFG nodes 2024-12-04 12:56:54 +01:00
Simon Friis Vindum
f10ffa39e4 Rust: Add tests for taint flow 2024-12-04 12:54:36 +01:00
Calum Grant
28c5187a3c C++: Remove FPs in cpp/wrong-type-format-argument when string type is an error 2024-12-04 11:02:19 +00:00
Calum Grant
19424020c3 C++: Test for erroneous string types 2024-12-04 10:57:15 +00:00
Owen Mansel-Chan
5351f5b69d Update wording of alert (accepting review suggestion)
Co-authored-by: Chris Smowton <smowton@github.com>
2024-12-04 10:31:14 +00:00
Paolo Tranquilli
7e107a4520 Merge branch 'main' into redsun82/rust-less-canonical-paths 2024-12-04 11:24:48 +01:00
Anders Schack-Mulligen
c187a7ad34 Dataflow: Address review comments. 2024-12-04 11:22:51 +01:00
Paolo Tranquilli
9da7e8a04f Merge pull request #18142 from github/redsun82/swift-6-for-each-vars
Swift: extract variables as children of `ForEachStmt`
2024-12-04 11:08:35 +01:00
Paolo Tranquilli
66e4acf53e Rust: accept test changes 2024-12-04 10:56:14 +01:00
Paolo Tranquilli
59ea563d2a Merge branch 'main' into redsun82/rust-less-canonical-paths 2024-12-04 10:44:11 +01:00
Paolo Tranquilli
e30a429c3d Rust: revert TupleStructPat.toString improvements 2024-12-04 10:34:28 +01:00
Anders Schack-Mulligen
5042753b29 C#/Java: Add change notes. 2024-12-04 10:20:43 +01:00
Owen Mansel-Chan
95116eec51 Update recommendations 2024-12-04 00:42:23 +00:00
Mathias Vorreiter Pedersen
c3086d4ecd C++: Fix models and accept test changes. 2024-12-03 19:13:00 +00:00
Mathias Vorreiter Pedersen
3abb9049bb C++: Fix testcase to reveal problematic models. 2024-12-03 19:06:20 +00:00
Mathias Vorreiter Pedersen
593e2233f8 C++: Update test changes after 0c8245f727. 2024-12-03 17:55:59 +00:00
Mathias Vorreiter Pedersen
0c8245f727 Update cpp/ql/test/library-tests/dataflow/taint-tests/atl.cpp
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2024-12-03 17:53:01 +00:00
Mathias Vorreiter Pedersen
2c58279137 C++: Add QLDoc to 'isClassConstructedFrom' and 'isFunctionConstructedFrom'. 2024-12-03 17:52:29 +00:00
Calum Grant
99efff2217 C++: Fix a FP in cpp/wrong-number-format-arguments caused by extraction error 2024-12-03 16:40:02 +00:00
Calum Grant
08859be07b C++: Test case for cpp/wrong-number-format-arguments 2024-12-03 16:33:40 +00:00
Paolo Tranquilli
8a1136ddcb Merge branch 'main' into redsun82/rust-less-canonical-paths 2024-12-03 16:23:22 +01:00
Asger F
3f0d0e3a05 JS: Deprecate DataFlow::BarrierGuardNode 2024-12-03 14:30:50 +01:00
Asger F
b3461989b1 JS: Remove use of SanitizerGuardNode in experimental SSRF query
Makes a quick effort attempt to restore the original behaviour, though
it is not exactly the same due to lack of recursion.
2024-12-03 14:30:36 +01:00
Asger F
0d79c7141c JS: Update two more uses of SanitizerGuardNode 2024-12-03 14:30:35 +01:00
Asger F
62c17d3f4e JS: Update SanitizerGuardNode use in BasicTaintTracking test 2024-12-03 14:30:34 +01:00
Asger F
f620191da4 JS: Deprecate SanitizerGuardNode 2024-12-03 14:30:33 +01:00
Asger F
2ae7386775 JS: Also apply new BarrierGuardLegacy pattern in Xss.qll 2024-12-03 14:30:32 +01:00
Asger F
2ef652da2c JS: Add more deprecation annotations in tests 2024-12-03 14:30:31 +01:00
Asger F
21494fbdff JS: Refactor BarrierGuardLegacy pattern to not depend on SanitizerGuardNode
Previously our barrier guard classes were direct descendents of SanitizerGuardNode which made it hard to deprecate that class.

Now our barrier guards are not descending from any shared class. Instead they are contributed to SanitizerGuardNode via a private helper class we can remove in the future.
2024-12-03 14:30:29 +01:00
Asger F
a574ff1669 JS: Remove use of MakeLegacyBarrierGuard in experimental SSRF 2024-12-03 14:30:28 +01:00
Asger F
08d25c122d JS: Deprecate more uses of ConsistencyConfiguration 2024-12-03 14:30:27 +01:00
Asger F
75ab4856b8 Remove unsupported features from PoI 2024-12-03 14:30:25 +01:00
Asger F
e6680dec8f JS: Avoid use of LabeledSanitizerGuardNode in TaintedObject
Drive-by bugfix: Rename sanitizes -> blocksExpr.
This fixes a bug that caused the sanitizer guard not to work in df2.

The test output reflects the fact that the barrier guard works now.
2024-12-03 14:30:24 +01:00
Asger F
0ce1fe767d JS: Deprecate ConsistencyChecking to avoid deprecation warnings 2024-12-03 14:30:23 +01:00
Asger F
04a3a6707f JS: Update a reference to AdditionalSanitizerGuardNode
Unlike most other references to this class, we're not subclassing it here, we're
just trying to reuse some standard barrier guards but with a different flow state.
2024-12-03 14:30:22 +01:00
Asger F
834d35bc42 JS: Port experimental DecompressionBombs to ConfigSig 2024-12-03 14:30:21 +01:00
Asger F
871bc3b84a JS: Port experimental CorsPermissiveConfiguration to ConfigSig
The tests show a new (source, sink) pair for an already-flagged sink.

Not sure why it was not flagged originally since the data flow path seems valid, given the steps provided by our models.
2024-12-03 14:30:20 +01:00
Asger F
f5a6485ef2 JS: Port experimental decodeJwtWithoutVerificationLocalSource 2024-12-03 14:30:19 +01:00
Asger F
72e522631d JS: Port experimental jwtDecodeWithoutVerification to ConfigSig 2024-12-03 14:30:18 +01:00
Asger F
7e162f5451 JS: Port experimental EnvValueInjection to ConfigSig 2024-12-03 14:30:17 +01:00
Asger F
4f839070a0 JS: Port experimental EnvValueAndKeyInjection to ConfigSig 2024-12-03 14:30:16 +01:00
Asger F
8887ca1722 JS: Port an experimental CodeInjection variant to ConfigSig 2024-12-03 14:30:15 +01:00
Asger F
1832e93766 JS: Port FormParsers test to ConfigSig 2024-12-03 14:30:14 +01:00
Asger F
4d7401a074 JS: Deprecate tests for deprecated APIs
Mainly adds 'deprecated' in front of a bunch of tests for deprecated APIs.
2024-12-03 14:30:12 +01:00
Asger F
3548544970 JS: Avoid some uses of deprecated guard classes in tests 2024-12-03 14:30:11 +01:00
Asger F
a568d8c086 JS: Port threat-model test to ConfigSig 2024-12-03 14:30:10 +01:00
Asger F
f758b67d30 JS: Openly recommend SummarizedCallable 2024-12-03 14:30:09 +01:00
Asger F
249104b8ae JS: Update comments referring to old Configuration style
Also avoid the term "analysis-specific" because it's not a term we use anywhere else.
2024-12-03 14:30:08 +01:00
Asger F
13ee597848 JS: Add some proper documentation to SummarizedCallable 2024-12-03 14:30:07 +01:00
Asger F
988fa9c0ef JS: Deprecate AdditionalSanitizerGuardNode
We're deprecating the class through an alias, but it is still the base class for a non-deprecated class, for backwards compatibility. For this reason we're also deprecating all of its member predicates so we can remove those in the future.
2024-12-03 14:30:06 +01:00
Asger F
0b1e859e70 JS: Remove uses of AdditionalSanitizerGuardNode 2024-12-03 14:30:05 +01:00
Asger F
c2abb0fbd0 JS: Remove reference to AdditionalSanitizerGuard from CachedStages 2024-12-03 14:30:04 +01:00
Asger F
82682d9a62 JS: Remove a non-deprecated reference to SanitizerGuardNode 2024-12-03 14:30:03 +01:00
Asger F
bc7753de29 JS: Remove non-deprecated reference to AdditionalBarrierGuardNode 2024-12-03 14:30:02 +01:00
Asger F
0cd2e3f9eb JS: Deprecate old data flow library, except some guard-related nodes 2024-12-03 14:30:01 +01:00
Asger F
071189a9e9 Merge pull request #18175 from asgerf/jss/documentation
JS: Update data flow documentation and tutorials for JavaScript
2024-12-03 14:23:29 +01:00
Simon Friis Vindum
cac4514eae Rust: Add basic data flow through arrays 2024-12-03 14:15:54 +01:00
Simon Friis Vindum
3346b64e96 Rust: Add variables and data flow array tests 2024-12-03 14:14:41 +01:00
Anders Schack-Mulligen
9734cff15b Java/C#: Update expected files. 2024-12-03 12:57:44 +01:00
Asger F
e1aff15f29 Merge pull request #18125 from asgerf/jss/summary-type-tracker
JS: Derive type-tracking steps from flow summaries
2024-12-03 12:40:56 +01:00
Paolo Tranquilli
ebe38bca23 Merge branch 'main' into redsun82/rust-less-canonical-paths 2024-12-03 12:19:08 +01:00
Asger F
27e61a1f3d JS: Also update cheat sheet 2024-12-03 12:00:30 +01:00
Asger F
89463d73f5 JS: Remove mention of isAdditionalTaintStep 2024-12-03 11:51:46 +01:00
Asger F
935e1c065a Update docs/codeql/codeql-language-guides/using-flow-labels-for-precise-data-flow-analysis.rst
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2024-12-03 11:49:45 +01:00
Asger F
89849fae87 Update docs/codeql/codeql-language-guides/using-flow-labels-for-precise-data-flow-analysis.rst
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2024-12-03 11:49:34 +01:00
Asger F
5e27257405 Update docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst
Co-authored-by: Erik Krogh Kristensen <erik-krogh@github.com>
2024-12-03 11:49:22 +01:00
Anders Schack-Mulligen
b65a4e45ab Dataflow: Postpone type pruning until stage 5. 2024-12-03 10:59:12 +01:00
Anders Schack-Mulligen
4933e803cf Dataflow: Track stored type. 2024-12-03 10:59:11 +01:00
Asger F
054558d7b5 JS: Include content properties in type-tracker properties
Reminder: we have two PropertyName classes because the one in Contents.qll can't depend on DataFlow::Node.
2024-12-03 09:58:54 +01:00
Asger F
8bca66493f JS: Add test showing lack of inclusion in PropertyName 2024-12-03 09:57:02 +01:00
Anders Schack-Mulligen
e9bd1e5b79 Dataflow: Remove types from access paths. 2024-12-02 13:31:51 +01:00
Asger F
404b0f24f2 JS: Fix another stray reference to BarrierGuardNode/SanitizerGuardNode 2024-12-02 13:29:52 +01:00
Asger F
422c089a39 JS: Remove redundant base class in TruthinessCheck 2024-12-02 13:26:37 +01:00
Anders Schack-Mulligen
5d13d3b434 Dataflow: Refactor - deduplicate fwdFlowRead+consCand join. 2024-12-02 13:02:33 +01:00
Anders Schack-Mulligen
70a8bc302c Dataflow: Rename typecheckStore. 2024-12-02 12:48:19 +01:00
Asger F
628f60d2e3 JS: Update flow label tutorial 2024-12-02 10:34:02 +01:00
Asger F
2db89c1b02 JS: Update query17 from intro tutorial 2024-12-02 10:04:09 +01:00
Asger F
2722c45737 JS: Update global data flow tutorial .rst file 2024-12-02 10:04:08 +01:00
Asger F
103a6ea8a6 JS: Port tutorial query5 2024-12-02 10:04:07 +01:00
Asger F
02c5e49de8 JS: Port tutorial query4 2024-12-02 10:04:05 +01:00
Asger F
1f6335f9ba JS: Port tutorial query3 2024-12-02 10:04:04 +01:00
Asger F
3319870d00 JS: Port tutorial query2 2024-12-02 10:04:02 +01:00
Asger F
32f020ee6f JS: Port tutorial query1 2024-12-02 10:04:00 +01:00
Paolo Tranquilli
6a8188f8eb Rust: fix QL compilation errors after merge from main 2024-12-02 08:30:16 +01:00
Paolo Tranquilli
31775e21b7 Merge branch 'main' into redsun82/rust-less-canonical-paths 2024-12-02 08:27:05 +01:00
Paolo Tranquilli
bb83641634 Rust: accept all test changes for now 2024-12-02 08:22:51 +01:00
Geoffrey White
eeed2c22be Merge pull request #18154 from geoffw0/swift6models4
Swift: Fix for OptionSet and BinaryInteger models
2024-11-29 17:30:51 +00:00
Geoffrey White
e9deec7217 Rust: Autoformat. 2024-11-29 16:03:06 +00:00
Paolo Tranquilli
c46f44da5f Rust: fix QL compilation errors 2024-11-29 15:55:51 +01:00
Owen Mansel-Chan
5c99c8cc37 Improve suggestion for ECB 2024-11-29 14:05:07 +00:00
Paolo Tranquilli
9cf2420c3b Rust: restrict canonical path calculations 2024-11-29 14:43:51 +01:00
Asger F
cab8a40d00 JS: Fix accidental recursion 2024-11-29 14:23:57 +01:00
Asger F
9c6b6981e2 JS: Add test to restrict dependencies 2024-11-29 14:23:56 +01:00
Asger F
2f0c80a98b JS: Include summary steps in type tracking 2024-11-29 14:23:55 +01:00
Asger F
440cbb7f0a JS: Add inline-expectation test for type tracking 2024-11-29 14:23:54 +01:00
Asger F
6349903110 JS: Move FlowSummary/Summaries.qll into testUtilities 2024-11-29 14:23:52 +01:00
Asger F
e34064e3b5 JS: Initial instantiation of sumamry type tracking
Instantiates the library without using it yet.
2024-11-29 14:23:50 +01:00
Asger F
df12f255ac JS: Rename propagatesFlowExt -> propagatesFlow 2024-11-29 14:23:49 +01:00
Owen Mansel-Chan
95d26d96d2 Add change note 2024-11-29 11:54:30 +00:00
Owen Mansel-Chan
09240e46f2 Refactor: use concat instead of hand-written version
This changes the order of the algorithms in the regex, but I don't think
that makes any difference.
2024-11-29 11:54:29 +00:00
Owen Mansel-Chan
e6409e159f Give reason why crypto algorithm is insecure 2024-11-29 11:54:27 +00:00
Owen Mansel-Chan
2c061b0d56 Add QLDoc for HostnameSanitizingPrefix 2024-11-29 09:46:44 +00:00
Owen Mansel-Chan
7f8a1ae941 Add change note 2024-11-29 09:46:42 +00:00
Owen Mansel-Chan
7648d397f8 Improve model to remove some false positives 2024-11-29 09:46:41 +00:00
Owen Mansel-Chan
617f4f140e Make HostnameSanitizingPrefix public 2024-11-29 09:46:39 +00:00
Owen Mansel-Chan
ba3f9d6134 Convert model to QL 2024-11-29 09:46:38 +00:00
Geoffrey White
1fc112e7a7 Swift: Fix for OptionSet. 2024-11-28 18:48:23 +00:00
Geoffrey White
e08eac03d8 Swift: Fix for Int.description. 2024-11-28 18:18:23 +00:00
Owen Mansel-Chan
b5fbf2e944 Add models for third arg of getForObject
No attempt to stop FPs.
2024-11-28 16:51:13 +00:00
Owen Mansel-Chan
65fb895ed5 (Unrelated) Fix typo in class name 2024-11-28 16:51:09 +00:00
Geoffrey White
14b70b856a Merge pull request #18143 from geoffw0/swift6models3
Swift: Fix makeIterator() models
2024-11-28 12:11:26 +00:00
Geoffrey White
23ed48ea12 Swift: Add a couple more makeIterator() implementations to be safe. 2024-11-28 10:18:13 +00:00
Geoffrey White
1d43abfe4d Swift: Model Collection.makeIterator(). 2024-11-28 10:11:55 +00:00
Paolo Tranquilli
814218c7a8 Swift: extract variables as children of ForEachStmt 2024-11-28 11:03:46 +01:00
Mathias Vorreiter Pedersen
3c0af498db C++: Fix bug introduced in an earlier commit and accept test changes. They all look good. 2024-11-27 19:04:25 +00:00
Mathias Vorreiter Pedersen
02428745bd C++: Add change note. 2024-11-27 16:42:00 +00:00
Mathias Vorreiter Pedersen
19e7c37760 C++: Update the final test changes. Nothing exciting here. 2024-11-27 16:41:58 +00:00
Mathias Vorreiter Pedersen
d69de0cc76 C++: Add a MaD model for 'CRegKey' and mark query calls as local flow sources. 2024-11-27 16:41:57 +00:00
Mathias Vorreiter Pedersen
5aada39a4e C++: Add failing tests for 'CRegKey'. 2024-11-27 16:41:55 +00:00
Mathias Vorreiter Pedersen
33212da876 C++: Add a MaD model for 'CAtlTemporaryFile' and mark reads as local flow sources. 2024-11-27 16:41:53 +00:00
Mathias Vorreiter Pedersen
67ba85a0a3 C++: Add failing tests for 'CAtlTemporaryFile'. 2024-11-27 16:41:52 +00:00
Mathias Vorreiter Pedersen
3709151353 C++: Add a MaD model for 'CAtlFileMappingBase' and mark reads as local flow sources. 2024-11-27 16:41:51 +00:00
Mathias Vorreiter Pedersen
ac0599cf75 C++: Add a failing test with 'CAtlFileMapping'. 2024-11-27 16:41:50 +00:00
Mathias Vorreiter Pedersen
74eae4a18d C++: Add a MaD model for 'CAtlFile' and mark reads as local flow sources. 2024-11-27 16:41:48 +00:00
Mathias Vorreiter Pedersen
dee47f2111 C++: Add a failing test with 'CAtlFile'. 2024-11-27 16:41:47 +00:00
Mathias Vorreiter Pedersen
e73fccdb4a C++: Add more types that we'll need for later. 2024-11-27 16:41:46 +00:00
Mathias Vorreiter Pedersen
300e3eaba6 C++: Add MaD model for 'CUrl'. 2024-11-27 16:41:45 +00:00
Mathias Vorreiter Pedersen
1ea879a880 C++: Add failing tests for 'CUrl'. 2024-11-27 16:41:43 +00:00
Mathias Vorreiter Pedersen
74b6c9dcc7 C++: Add MaD model for 'CSimpleMap'. 2024-11-27 16:41:42 +00:00
Mathias Vorreiter Pedersen
12674ea2e6 C++: Add failing tests with 'CSimpleMap'. 2024-11-27 16:41:41 +00:00
Mathias Vorreiter Pedersen
02b88d5dbd C++: Add MaD model for 'CSimpleArray'. 2024-11-27 16:41:40 +00:00
Mathias Vorreiter Pedersen
029c0134eb C++: Add failing tests with 'CSimpleArray'. 2024-11-27 16:41:38 +00:00
Mathias Vorreiter Pedersen
c61395b973 C++: Add implicit read of the 'm_strPath' member. 2024-11-27 16:41:37 +00:00
Mathias Vorreiter Pedersen
354361952a C++: Add MaD model for 'CPathT'. 2024-11-27 16:41:36 +00:00
Mathias Vorreiter Pedersen
1a79290fd6 C++: Add failing tests with 'CPathT'. 2024-11-27 16:41:35 +00:00
Mathias Vorreiter Pedersen
5f05417890 C++: Add MaD model for 'CComSafeArray'. 2024-11-27 16:41:33 +00:00
Mathias Vorreiter Pedersen
e831cb5f26 C++: Add failing tests with 'CComSafeArray'. 2024-11-27 16:41:32 +00:00
Mathias Vorreiter Pedersen
948be09257 C++: Add an taint step from object to field for 'CComBSTR's. 2024-11-27 16:41:31 +00:00
Mathias Vorreiter Pedersen
9b004848a3 C++: Add MaD model for 'CComBSTR'. 2024-11-27 16:41:30 +00:00
Mathias Vorreiter Pedersen
68ee8da574 C++: Add failing tests with 'CComBSTR'. 2024-11-27 16:41:28 +00:00
Mathias Vorreiter Pedersen
2b8ef5a8c8 C++: Add MaD model for 'CAtlList'. 2024-11-27 16:41:27 +00:00
Mathias Vorreiter Pedersen
c604a93d16 C++: Add failing tests with 'CAtlList'. 2024-11-27 16:41:26 +00:00
Mathias Vorreiter Pedersen
0f8df1cd9f C++: Add MaD model for 'CAtlArray'. 2024-11-27 16:41:24 +00:00
Mathias Vorreiter Pedersen
1cd426e9f9 C++: Add failing tests with 'CAtlArray'. 2024-11-27 16:41:23 +00:00
Mathias Vorreiter Pedersen
4f2cd81f9e C++: Accept test changes. 2024-11-27 16:41:22 +00:00
Mathias Vorreiter Pedersen
c00f84d74a C++: Work around the 'wrong' function name for conversion operators. 2024-11-27 16:41:20 +00:00
Mathias Vorreiter Pedersen
2c7d0dec7d C++: Accept test changes. 2024-11-27 16:41:19 +00:00
Mathias Vorreiter Pedersen
763b991408 C++: Add models. 2024-11-27 16:41:18 +00:00
Mathias Vorreiter Pedersen
749602c982 C++: Add failing tests with CA2AEX and friends. 2024-11-27 16:41:17 +00:00
Mathias Vorreiter Pedersen
f688470324 C++: Since isConstructedFrom only holds for templates we need to explicitly handle the case where the function (or class) is not a template. 2024-11-27 16:41:16 +00:00
Mathias Vorreiter Pedersen
bf36f00bb0 C++: Add model. Observe that flow still fails. 2024-11-27 15:49:41 +00:00
Mathias Vorreiter Pedersen
16e5fa34d1 C++: Add failing tests with U_STRINGorID. 2024-11-27 15:49:39 +00:00
Mathias Vorreiter Pedersen
fe9feb900d C++: We will need all these types. 2024-11-27 15:49:38 +00:00
Asger F
66d6bda716 Merge pull request #18044 from asgerf/js/shared-dataflow-bump
JS: Merge 'main' and implement 'speculativeTaintStep'
2024-11-27 15:43:27 +01:00
Asger F
805fd0b46e JS: Refine speculative step definition 2024-11-26 15:56:56 +01:00
Asger F
8818fcc207 JS: Benign test output changes 2024-11-26 15:47:13 +01:00
Asger F
c94a01e6b6 JS: Remove reference to argsParseStep
This was removed as part of the PR that introduced threat models.
2024-11-26 15:36:47 +01:00
Asger F
bf62582f53 JS: Implement 'speculativeTaintStep'
It is a mandatory part of the interface now; just providing a bare-bones implementation for rather than 'none()'
2024-11-26 15:36:46 +01:00
Asger F
82d61e4194 Merge branch 'js/shared-dataflow-branch' into js/shared-dataflow-merge-main 2024-11-26 15:36:16 +01:00
Asger F
c2e9dca1de Merge pull request #18043 from asgerf/jss/jump-and-test-exclusion
JS: Fix jump steps generated by IIFEs and exception flow
2024-11-26 14:33:42 +01:00
Taus
2734377e5d Python: Add API graph support for parameter annotations
Adds API graph support for observing that in
```python
def foo(x : Bar): ...
```
The variable `x` is likely to be an instance of the type `Bar` inside
this function.
In particular, we add `getInstanceFromAnnotation` as a predicate on API
graph nodes that tracks this step (corresponding to a new edge type
labeled with "annotation" in the API graph), and extend the existing
`getAnInstance` predicate to also include instances arising from type
annotations.

A more complete solution would also add support for annotated
assignments (`x : Foo = ...` or just `x : Foo`) as well as track types
through type aliases (`type Foo = Bar`). This turns out to be
non-trivial, however, as these type constructs don't have any CFG nodes
(and so no data-flow nodes by default either). In order to not have
perfect be the enemy of good, this commit is only targeting the type
parameter case (which is also likely to be the most common use case
anyway).

The tests for API graphs have been extended accordingly, including tests
for the kinds of type ascriptions that we _don't_ currently model in API
graphs (marked with `MISSING:` in the inline tests).
2024-11-26 13:03:06 +00:00
Asger F
f073f3b791 JS: Rename file to foo.test.js 2024-11-26 13:44:00 +01:00
Asger F
65da9b41b5 JS: Add cross-file test in InsecureRandom 2024-11-26 13:43:24 +01:00
Asger F
b4bd8e701c JS: Add test for file classification change 2024-11-26 12:33:39 +01:00
Geoffrey White
d1915c707d Swift: Add a test revealing the issue in pure dataflow. 2024-11-26 11:24:42 +00:00
Geoffrey White
45858527e2 Swift: Add another test case. 2024-11-26 11:15:24 +00:00
Geoffrey White
6130679c34 Swift: Label the now missing cases for CWE-020 and dataflow. 2024-11-26 11:13:19 +00:00
Asger F
930a7b6e28 JS: Update output changes to nodes/edges/subpaths 2024-11-21 13:33:39 +01:00
Asger F
7a77432024 JS: Update lost result in insecure-download
The VariableCapture library consumes one component of the access path limit, which means we lose this result
2024-11-21 13:33:10 +01:00
Asger F
1ac7591faf JS: Update missed flow in capture-flow.js
We previously caught this flow because of a heuristic in capture flow. We'll have to fix it properly later.
2024-11-21 12:57:34 +01:00
Asger F
9dad2d62d7 JS: Update DataFlowConsistency 2024-11-21 12:54:11 +01:00
Asger F
ce00bd2cc9 JS: More docs 2024-11-21 11:06:43 +01:00
Asger F
4e62a512c5 JS: Only apply exception propagator when no other summary applies
Previously a few Promise-related methods were special-cased, which is no longer needed.
2024-11-21 11:01:05 +01:00
Asger F
84820adf3c Add test for exception flow out of finally() 2024-11-21 11:01:03 +01:00
Asger F
948d21ca07 JS: Propagate exceptions from summarized callables by default 2024-11-21 10:24:31 +01:00
Asger F
dcdb2e5133 JS: Fix callback check so it works without parameters 2024-11-21 10:24:29 +01:00
Asger F
b7dd455aff JS: Add test case 2024-11-21 09:21:36 +01:00
REDMOND\brodes
007dd83799 Updating ir test expected files. 2024-11-20 14:40:58 -05:00
REDMOND\brodes
4078d79f2a Adds SEH exception edge types, disjoint from normal C++ edges. Does not apply the edges yet, just stipulates the types. 2024-11-20 14:37:32 -05:00
Alvaro Muñoz
9a137db12b Bump qlpack versions 2024-11-20 15:36:20 +01:00
Alvaro Muñoz
082b4c3ca2 Add poisonable step for pip install . 2024-11-20 15:35:49 +01:00
Asger F
d52bc971b8 Merge branch 'main' into js/shared-dataflow-merge-main 2024-11-20 14:05:03 +01:00
Asger F
d1c9e47d23 JS: More aggressive test file classification 2024-11-19 13:23:32 +01:00
Asger F
01669908f2 JS: Block InsecureRandomness flow into test files 2024-11-19 13:23:31 +01:00
Asger F
80a5a5909e JS: Use getUnderlyingValue() a few places in VariableCapture 2024-11-19 13:23:29 +01:00
Asger F
d2daec4c66 JS: Add tests explaining why the IIFE in f2 didn't work 2024-11-19 13:23:24 +01:00
Alvaro Muñoz
afb7967a0c Delete .actual test files 2024-11-19 11:31:59 +01:00
Alvaro Muñoz
3ce3cf43be refactor common code to identify untrusted checkouts 2024-11-19 11:31:35 +01:00
Asger F
023dcce400 JS: Disable variable capture heuristic
Bailing out can be more expensive as the resulting jump steps themselves
cause perf issues. The limit of 100 variables per scope has also been
added in the interim, which handles the cases that this needed to cover.
2024-11-18 13:44:10 +01:00
Asger F
37676f41aa JS: Remove jump steps from IIFE steps 2024-11-18 13:38:34 +01:00
Asger F
7f2eae0966 JS: Add test case for false flow through IIFEs
We generate local flow steps into and out of IIFEs, but these come jump steps automatically, resulting in FPs.
2024-11-18 13:34:35 +01:00
Asger F
7acc5689cf JS: Port exception steps to a universal summary 2024-11-18 13:27:58 +01:00
Asger F
5ed362f7d6 JS: Add exception test case 2024-11-18 13:23:09 +01:00
Asger F
33b7ba41ca Merge pull request #17535 from asgerf/jss/use-use-flow
JS: Follow use-use flow after a post-update
2024-11-18 12:48:58 +01:00
Paolo Tranquilli
8bcc5f4bf8 Merge pull request #17989 from geoffw0/swift6models2
Swift: More model repairs for Swift 6
2024-11-18 11:52:14 +01:00
Geoffrey White
fa43207538 Swift: Autoformat. 2024-11-18 09:40:06 +00:00
Rasmus Lerchedahl Petersen
065f3d1d7a cpp: locations in range analysis 2024-11-15 14:10:51 +01:00
Rasmus Lerchedahl Petersen
cd5509a0f9 Java: locations for range analysis 2024-11-15 13:11:25 +01:00
Geoffrey White
8245e6c2b9 Swift: Fix unwanted flows. 2024-11-14 17:51:47 +00:00
Geoffrey White
e589b1fcd0 Swift: Fix query barriers. 2024-11-14 17:37:43 +00:00
Geoffrey White
6aa43e001d Swift: Effect on other tests. 2024-11-14 17:29:17 +00:00
Geoffrey White
c2c23c872b Swift: Address some modelling issues for Swift 6. 2024-11-14 17:22:15 +00:00
Geoffrey White
570393fe2b Swift: Additional test cases. 2024-11-14 17:17:00 +00:00
Geoffrey White
f0dc4f5ec3 Swift: Convert the dataflow-taint-core-conversions test to labelled sources. 2024-11-14 16:34:16 +00:00
Kevin Stubbings
a94ba25ebe Apply suggestions from code review
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2024-11-13 14:45:45 -08:00
Dave Bartolomeo
df3b30489b Add --search-path in test workflow 2024-11-13 13:50:41 -05:00
Dave Bartolomeo
be8a49228f Delete dbscheme
Update after merge
2024-11-13 13:42:57 -05:00
Dave Bartolomeo
14119c7d84 Merge remote-tracking branch 'origin/master' into dbartol/move-to-codeql 2024-11-13 13:28:00 -05:00
Kevin Stubbings
460ed30d05 Fixed tests 2024-11-12 16:08:14 -08:00
Kevin Stubbings
eb3a76ddce Merge branch 'github:main' into path-sanitizers 2024-11-12 16:03:00 -08:00
Kevin Stubbings
8744f158bd New tests 2024-11-12 15:44:47 -08:00
Asger F
80ee372ddf JS: Replace an unused value with _ 2024-11-12 11:24:17 +01:00
Asger F
637baabe37 JS: Clarify why there are no SSA definitions 2024-11-12 11:23:35 +01:00
Alvaro Muñoz
064c983b47 Merge branch 'master' of https://github.com/github/codeql-actions 2024-11-09 10:40:14 +01:00
Alvaro Muñoz
44fd14caaf Bump qlpack versions 2024-11-09 10:40:04 +01:00
Kylie Stradley
0110988b1c Merge pull request #105 from github/immutable-actions
Add CodeQL rule for Immutable actions, do not detect immutable actions in unpinned tag rule
2024-11-08 12:15:54 -05:00
Kylie Stradley
d6e38d5e83 Do not detect immutable actions in UnpinnedActionsTag
* these should be handles by the UseOfUnversionedImmutableAction.qll query instead
* factor out immutableAction detection for reuse in both queries
* octokit should not longer ping in UnpinnedActionsTag
2024-11-08 11:51:25 -05:00
Kylie Stradley
e8ee798ffa add temporary immutable actions doc page 2024-11-07 15:29:28 -05:00
Dave Bartolomeo
1f3bab2b65 Move data extensions to use codeql org 2024-11-07 11:15:52 -05:00
Dave Bartolomeo
b2100d00aa Add security-and-quality suite 2024-11-07 11:15:34 -05:00
Dave Bartolomeo
99a49fb27f Move packs to codeql org 2024-11-07 10:43:05 -05:00
Brandon Stewart
6a1e814cde Merge pull request #106 from github/advanced-config
Add rule to detect cases where CodeQL default setup could be used instead of advanced setup
2024-11-06 15:21:31 -05:00
Brandon Stewart
686e30a52a add qlhelp 2024-11-06 20:20:26 +00:00
Paolo Tranquilli
51f7129c79 Swift: accept integration test change 2024-11-06 08:40:29 +01:00
Paolo Tranquilli
02a0021a26 Swift: tweak mangling of extensions 2024-11-06 08:40:12 +01:00
Paolo Tranquilli
9e1e56f769 Swift: remove obsolete bazel definitions 2024-11-06 08:39:53 +01:00
Paolo Tranquilli
afd4585561 Merge branch 'main' into redsun82/swift-6 2024-11-06 08:05:52 +01:00
Paolo Tranquilli
c875667980 Swift: update to 6.0.2 2024-11-06 08:05:14 +01:00
Paolo Tranquilli
87a08fe5fa Merge pull request #17891 from geoffw0/swift6models
Swift: Update models for better Swift 6 compatibility.
2024-11-05 08:55:26 +01:00
Kylie Stradley
0e94777b13 Merge branch 'master' into immutable-actions 2024-11-04 11:57:06 -05:00
Kylie Stradley
5bf02e73ea Update ql/src/Security/CWE-829/UnpinnedActionsTag.ql
Co-authored-by: Alvaro Muñoz <pwntester@github.com>
2024-11-04 11:30:29 -05:00
Alvaro Muñoz
ae6856ab5a models: add new control check model 2024-11-04 14:44:13 +01:00
Alvaro Muñoz
4f62573d17 Bump qlpack versions 2024-11-04 10:11:52 +01:00
Alvaro Muñoz
55476af179 Merge pull request #107 from github/query_if
query: split if expression is always true query
2024-11-04 10:11:14 +01:00
Alvaro Muñoz
db6f174b79 query: split if expression is always true query
critical - if the if statement contains a known control check
high - otherwise
2024-11-04 10:10:47 +01:00
Alvaro Muñoz
80f2b24eeb Bump qlpack versions 2024-11-03 22:29:50 +01:00
Alvaro Muñoz
ea20e9b337 fix: Add versioned python binaries to poisonable steps 2024-11-03 22:29:20 +01:00
Geoffrey White
24c4e87f44 Swift: Fix stray []. 2024-11-01 16:30:15 +00:00
Geoffrey White
f3ea75d27c Swift: Further modelling updates / gap filling that doesn't seem to affect tests. 2024-11-01 16:19:41 +00:00
Geoffrey White
954fbc44bf Swift: Update prefix / suffix models for Swift 6. 2024-11-01 16:19:39 +00:00
Geoffrey White
be12649838 Swift: Update joined models for Swift 6. 2024-11-01 16:19:36 +00:00
Geoffrey White
6f0f73974a Swift: Update dropFirst / dropLast / reversed models for Swift 6. 2024-11-01 16:19:34 +00:00
Brandon Stewart
0b7de6e86a add rule to detect if default setup would be more appropriate 2024-10-31 15:28:55 +00:00
Paolo Tranquilli
1f356078ff Swift: temporarily accept test changes 2024-10-31 15:57:31 +01:00
Alvaro Muñoz
230b2ff4d8 Bump qlpack versions 2024-10-31 14:17:44 +01:00
Alvaro Muñoz
c6048a6fa1 tests: Update tests 2024-10-31 14:16:56 +01:00
Alvaro Muñoz
45b7547016 chore: clean up partial.ql debug query 2024-10-31 13:38:38 +01:00
Alvaro Muñoz
0211902116 models: add models for zentered/issue-forms-parser 2024-10-31 13:38:17 +01:00
Alvaro Muñoz
d85ca10772 fix: account for tojson(expr) expressions 2024-10-31 13:36:59 +01:00
Alvaro Muñoz
ebd45ace50 feat: add source model for peter-murra/issue-forms-body-parser 2024-10-31 10:59:05 +01:00
Paolo Tranquilli
5a045beff9 Swift: turn off SIL verifications 2024-10-31 10:03:08 +01:00
Paolo Tranquilli
ce4273d461 Revert "Swift: use -typecheck in QL tests"
This reverts commit 34b8b43843.
2024-10-31 09:52:08 +01:00
Paolo Tranquilli
3aa7123032 Swift: restrict UnresolvedAstNodes to known locations 2024-10-31 09:26:14 +01:00
Paolo Tranquilli
34b8b43843 Swift: use -typecheck in QL tests 2024-10-31 06:41:46 +01:00
Paolo Tranquilli
7f3745cfcd Swift: fix @isolated(any) DB inconsistencies 2024-10-31 06:22:06 +01:00
Alvaro Muñoz
0157bf3297 fix: improve JS require/import poisonable step to account for cwd 2024-10-30 22:12:17 +01:00
Paolo Tranquilli
66e43c4006 Swift: use ubuntu 22.04 2024-10-30 17:16:35 +01:00
Paolo Tranquilli
3877eb8bc9 Swift: tentatively fix type mangling 2024-10-30 17:08:20 +01:00
Paolo Tranquilli
01417025f2 Swift: use ubuntu-latest 2024-10-30 16:20:27 +01:00
Paolo Tranquilli
5e6228cf7c Swift: fix 2024-10-30 16:11:08 +01:00
Paolo Tranquilli
df8184e0dc Swift: fix check-no-override job 2024-10-30 15:59:03 +01:00
Paolo Tranquilli
d325b8e678 Swift: update load.bzl and resources 2024-10-30 15:56:48 +01:00
Alvaro Muñoz
a2f162e482 Bump qlpack versions 2024-10-30 12:43:44 +01:00
Alvaro Muñoz
263582c796 feat: Add sanitizers for bash test commands 2024-10-30 12:43:19 +01:00
Paolo Tranquilli
91f683d94c Merge branch 'main' into redsun82/swift-6 2024-10-30 12:27:24 +01:00
Paolo Tranquilli
d3fb2543d2 Swift: try out new builds 2024-10-30 12:26:34 +01:00
Alvaro Muñoz
f76d4d67d9 tests: update tests 2024-10-29 22:31:15 +01:00
Alvaro Muñoz
685c9e97cc Bump qlpack versions 2024-10-29 21:17:55 +01:00
Alvaro Muñoz
fcc7efbc5c Bump qlpack versions 2024-10-29 19:19:06 +01:00
Alvaro Muñoz
58f060234a fix: count(text.splitAt()) does not account for all lines, use max(text.splitAt(,i)) instead 2024-10-29 19:17:24 +01:00
Alvaro Muñoz
871193095a feat: Add trigger event to cache poisoning queries 2024-10-29 19:04:02 +01:00
Alvaro Muñoz
ee7e50c1cf Bump qlpack versions 2024-10-29 13:42:02 +01:00
Alvaro Muñoz
24a3df0386 tests: new tests for Code Injection 2024-10-29 13:41:23 +01:00
Alvaro Muñoz
31a9346d2d feat: show trigger event on query results 2024-10-29 11:59:59 +01:00
Asger F
2fb108419c JS: Only parameter-calls as lambda calls 2024-10-29 08:32:15 +01:00
Asger F
1e9e57e46e JS: Fix missing qldoc 2024-10-29 08:32:14 +01:00
Asger F
52ba91a7f8 JS: Updates to nodes/edges in tests
Only changes to nodes/edges for various reasons, no actual result changes
2024-10-29 08:32:13 +01:00
Asger F
1243188825 JS: Update CleartextLogging with fixed FP 2024-10-29 08:32:11 +01:00
Asger F
18b39460f5 JS: Add regained results in UnsafeJQueryPlugin
These were marked as 'NOT OK' in the test file, but weren't previously flagged for some reason
2024-10-29 08:32:10 +01:00
Asger F
d3e70c1e97 JS: Add in-barrier to XSS query
This is a bit of a bandaid to cover issues with the push() method on next/router being
treated as an array push, which causes it to flow into other taint sources.
2024-10-29 08:32:08 +01:00
Asger F
1b85feb1fa JS: Add imprecise post-update steps for when a captured var/this is not tracked precisely
With the capture library we sometimes bails out of handling certain functions for scalability reasons.

This means we have a notion of "captured but imprecisely-tracked" variables and 'this'. In these cases we go back to propagating flow from a post-update node to the local source.
2024-10-29 08:32:07 +01:00
Asger F
d557c7689c JS: Update a test that now has more precise output 2024-10-29 08:32:06 +01:00
Asger F
1efef2ca3c JS: Change rule for getPostUpdateForStore
This causes less wobbles in test outputs
2024-10-29 08:32:05 +01:00
Asger F
ad52b71922 JS: Update immutable.js test to clarify why it stopped working
The Immutable model uses the 'd' and 'f' properties to model Map content, but the test doesn't actually mention those properties, so they were missing from the PropertyName class.

The flow was previously found spuriously by the regular Map model, which also adds flow through the  get/set calls. This flow is however no longer found since it relied on a step from post-update back to getALocalSource which is no longer present.
2024-10-29 08:32:03 +01:00
Asger F
c0997c28cb JS: Reveal issue with immutable.js test
Fixed in the next commit
2024-10-29 08:32:02 +01:00
Asger F
4473e6d977 JS: Update test with some post-update consistency checks gone
For a constructor call, the return value acts as the post-update node for the 'this' argument. The fact that constructor calls are sometimes PostUpdateNodes causes some of these harmless alerts.

The warnings have disappeared in some cases because we no longer target getALocalSource() so the target is no longer the constructor call.
2024-10-29 08:32:01 +01:00
Asger F
cb874945bf Test updates from introduction of implicit 'this' 2024-10-29 08:31:59 +01:00
Asger F
bd94fe1574 JS: Explain false positive in test case 2024-10-29 08:31:58 +01:00
Asger F
e05e077b33 JS: Block jump steps through 'this' now that the capture lib handles 'this' 2024-10-29 08:31:57 +01:00
Asger F
16b08b74eb JS: Add test showing potential for FPs when handling refinement guards 2024-10-29 08:31:55 +01:00
Alvaro Muñoz
0ad7f08c9f fix: do not require github.event.workflow_run.id as an argument for gh run download 2024-10-28 16:15:47 +01:00
Alvaro Muñoz
aecb478e1c Bump qlpack versions 2024-10-28 11:58:45 +01:00
Alvaro Muñoz
18137f58c2 fix: take trigger events into consideration
Code Injection remote flow sources should be triggerable by the
privileged event
2024-10-28 11:58:14 +01:00
Alvaro Muñoz
792e8555af fix: remove context 2 events mappings
client_paylaod (dispatch), commits (push), head_commit (push) and
merge_group are not under external attacker control so remove them
2024-10-28 11:56:59 +01:00
Alvaro Muñoz
62d9302e8b chore: remove leftover commented out code 2024-10-28 11:55:44 +01:00
Alvaro Muñoz
e34835f71a fix: AstNode.getATriggerEvent()
getATriggerEvent did not work for nodes outside a Job.
If there is no enclosing job, get the trigger from the enclosing
workflow
2024-10-28 11:55:23 +01:00
Alvaro Muñoz
6136a98764 Add getEvent to RemoteFlowSource for events able to trigger the source 2024-10-28 11:54:04 +01:00
Alvaro Muñoz
fe9c908880 Bump qlpack versions 2024-10-25 14:18:20 +02:00
Alvaro Muñoz
e6e1704021 Update tests 2024-10-25 10:26:51 +02:00
Alvaro Muñoz
922ae57aba Fix LabelIf ControlCheck so that it recognizes checks not at the beginning of the expression 2024-10-25 10:26:47 +02:00
Alvaro Muñoz
d8f79818d6 Improve extraction of Output/Env assignments 2024-10-25 10:25:47 +02:00
Alvaro Muñoz
6802cd2398 Improve checkout trigger events checks 2024-10-25 10:25:18 +02:00
Kylie Stradley
40ec9d623d update existing tests to accomdate for trips from octokit2 example added to support unversioned immutable action ql 2024-10-24 16:55:44 -04:00
Kylie Stradley
030c08e5ae update expected from example originating from main branch merge 2024-10-24 16:54:27 -04:00
Kylie Stradley
f716222801 remove octokit from trusted orgs for now - reduce PR scope 2024-10-24 16:27:53 -04:00
Kylie Stradley
f8be8e768f Merge branch 'master' into immutable-actions 2024-10-24 15:25:31 -04:00
Kylie Stradley
df0c1e28e7 stub out qlhelp 2024-10-23 21:49:43 -04:00
Kylie Stradley
1c6d346f53 change ql message 2024-10-23 21:24:12 -04:00
Kylie Stradley
c9b1cd2c02 add workflow to catch some ineligible wildcards and eligible latest version for immutable actions 2024-10-23 21:18:04 -04:00
Alvaro Muñoz
dbcf113546 Bump qlpack versions 2024-10-23 22:04:01 +02:00
Alvaro Muñoz
b6a26e76d4 New azure models 2024-10-23 22:03:11 +02:00
Alvaro Muñoz
ae6309daf6 Account for tar -C option to specify path 2024-10-23 22:02:58 +02:00
Alvaro Muñoz
674afc5edd Improve labelgate accuracy 2024-10-23 15:48:42 +02:00
Alvaro Muñoz
9a0795cc75 Bump qlpack versions 2024-10-23 12:16:32 +02:00
Alvaro Muñoz
43211d3286 Update tests 2024-10-23 12:16:02 +02:00
Alvaro Muñoz
315ffdff8d Improve env var injection sanitizers 2024-10-23 12:15:54 +02:00
Alvaro Muñoz
fef37b6025 Remove pull_request from context event map so that accesss to github.event.pull_request are not considered a source for pull_request triggers 2024-10-23 12:15:26 +02:00
Alvaro Muñoz
c9bb42a46c Enforce a checkout kind of trigger to consider gh pr/gh api ... pulls as a source of untrusted data 2024-10-23 12:14:20 +02:00
Alvaro Muñoz
6298f2520e Bump qlpack versions 2024-10-23 10:37:33 +02:00
Alvaro Muñoz
d1d92ae68a Create getATriggerEvent for Steps and refactor the code to use it 2024-10-23 10:13:20 +02:00
Alvaro Muñoz
b2a3aaacfd Bump qlpack versions 2024-10-23 09:40:25 +02:00
Alvaro Muñoz
a057b9dd44 Add poisonable step for azure/powershell 2024-10-23 09:39:34 +02:00
Alvaro Muñoz
0738a66380 Add trigger event checks for all checkout models 2024-10-23 09:37:01 +02:00
Alvaro Muñoz
0cacb6feaf Bump qlpack versions 2024-10-22 22:42:51 +02:00
Alvaro Muñoz
42d4bb577c Better identification of checkout of untrusted code depending on the triggering events 2024-10-22 22:42:11 +02:00
Alvaro Muñoz
8f350d9068 Merge pull request #104 from github/new_gh_sources
New gh CLI sources
2024-10-22 21:36:19 +02:00
Alvaro Muñoz
02c5f74f20 New gh CLI sources 2024-10-22 14:57:59 +02:00
Asger F
958602e43e JS: Cache getARead (as per instructions in the SSA library) 2024-10-22 12:46:20 +02:00
Asger F
e784813c3b JS: Make barrier guards work with use-use flow 2024-10-22 12:46:19 +02:00
Asger F
67fdd864c9 JS: Add TODO 2024-10-22 12:46:18 +02:00
Asger F
81af9a1658 Fix missing flow through super calls 2024-10-22 12:46:17 +02:00
Asger F
12370e9210 JS: Use VariableOrThis in variable capture as well 2024-10-22 12:46:16 +02:00
Asger F
0ebe8bdd91 JS: Add test for missing capture flow for 'this' 2024-10-22 12:46:15 +02:00
Asger F
d31499d727 JS: introduce implicit this uses in general 2024-10-22 12:46:14 +02:00
Asger F
8dc0505f84 JS: Add test for missing flow into 'this' in field initializers 2024-10-22 12:46:13 +02:00
Asger F
c3c003b275 JS: Fix post-update flow into 'this' 2024-10-22 12:46:11 +02:00
Asger F
9fc99d6f9d JS: Fix store into object literals that have a post-update node 2024-10-22 12:46:11 +02:00
Asger F
d626e79ed3 JS: Add two test cases for missing flow 2024-10-22 12:46:10 +02:00
Asger F
992c144559 JS: Add qldoc to file 2024-10-22 12:46:09 +02:00
Asger F
beaacf96b3 JS: Rename Internal -> Cached since whole file is internal now 2024-10-22 12:46:08 +02:00
Asger F
3fca27bee2 JS: Fix indentation
Only formatting changes
2024-10-22 12:46:07 +02:00
Asger F
ed0af958a9 JS: Add Public module and only expose that
Indentation will be fixed in next commit
2024-10-22 12:46:06 +02:00
Asger F
3b663bd2f6 JS: Remove BasicBlockInternal module and mark relevant predicates as public
This exposes the predicates publicly, but will be hidden again in the next commit.
2024-10-22 12:46:04 +02:00
Asger F
211b42d0ce JS: Move BasicBlocks.qll -> internal/BasicBlocksInternal.qll 2024-10-22 12:46:03 +02:00
Asger F
9e600424cc JS: Remove unused predicate 2024-10-22 12:46:02 +02:00
Asger F
78e961cef3 JS: Add use-use flow 2024-10-22 12:46:01 +02:00
Asger F
81e74d8bb5 JS: Add test case for spurious flow from lack of use-use 2024-10-22 12:46:00 +02:00
Asger F
7363b578b1 JS: Instantiate shared SSA library
JS: Remove with statement comment
2024-10-22 12:45:58 +02:00
Asger F
a258489551 JS: Refactor some internal methods to make them easier to alias
We need these to return the dominator instead of declaring it in the parameter list, so that we can use it directly to fulfill part of the signature for the SSA library.

We can't rewrite it with an inline predicate since the SSA module calls with a transitive closure '*', which does not permit inline predicates.
2024-10-22 12:45:57 +02:00
Alvaro Muñoz
54338f4f35 Bump qlpack versions 2024-10-22 11:19:48 +02:00
Alvaro Muñoz
9a7e33bf3f Merge pull request #103 from github/new_events
Add workflow_dispatch and scheduled to the list of privileged and external (user interaction) events
2024-10-22 11:19:13 +02:00
Alvaro Muñoz
da10ee74d3 Add workflow_dispatch and scheduled to the list of privileged and external (user interaction) events 2024-10-22 11:18:42 +02:00
Asger F
443987b484 Merge branch 'main' into js/shared-dataflow-merge-main 2024-10-22 10:30:53 +02:00
Kylie Stradley
023e8cbe3e factor semver to separate function 2024-10-21 20:59:42 -04:00
Alvaro Muñoz
6dbbfa9672 Bump qlpack versions 2024-10-21 12:12:37 +02:00
Alvaro Muñoz
229d42b515 Add sonar-scanner-action as a poisonable step 2024-10-21 11:05:06 +02:00
Alvaro Muñoz
fc5a6703b3 Add github.event.sender.login as an Actor source 2024-10-19 17:01:47 +02:00
Alvaro Muñoz
e03ba55812 Account for checkout path on Untrusted Checkout Critical 2024-10-19 17:01:29 +02:00
Kylie Stradley
2d5cd1a61a WIP. todo: modify help text in query to be helpful, write qlhelp file, find out how to not release to customers 2024-10-18 16:51:31 -04:00
Kylie Stradley
e5508343b1 update unpinned actions tag test 2024-10-18 15:21:33 -04:00
Kylie Stradley
cf9b853a8f unversioned immutable actions wip 2024-10-17 16:14:03 -04:00
Kylie Stradley
325727ed6d recommend to add octokit to trusted orgs 2024-10-17 15:59:45 -04:00
Alvaro Muñoz
7cba2e07bc Bump qlpack versions 2024-10-17 21:40:40 +02:00
Alvaro Muñoz
c44c3bae9f Update tests 2024-10-17 21:39:58 +02:00
yoff
e46722f3be Update python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll 2024-10-17 17:23:00 +02:00
Alvaro Muñoz
8323819504 New sources for octokit/request-action 2024-10-17 15:51:00 +02:00
Alvaro Muñoz
a1047d155c Add new control checks using octokit/request-action 2024-10-17 14:48:53 +02:00
Alvaro Muñoz
6bf3eb79a9 Add sh as a bash-compatible POSIX shell 2024-10-17 10:44:43 +02:00
Alvaro Muñoz
b072cfa1f7 Add pwsh as the default shell for windows runners 2024-10-17 10:40:33 +02:00
Rasmus Lerchedahl Petersen
22d621c625 shared: add locations to typetracking nodes 2024-10-16 15:16:18 +02:00
Alvaro Muñoz
09f1fd1a81 Bump qlpack versions 2024-10-16 11:48:19 +02:00
Alvaro Muñoz
c5c3cd1726 Clean imports 2024-10-16 11:47:35 +02:00
Alvaro Muñoz
b49cd3b916 Better handling of EnvVar Injection and Argument Injection 2024-10-16 08:48:32 +02:00
Kevin Stubbings
374b13e1bb Remove path sanitizer 2024-10-15 14:34:11 -07:00
Kevin Stubbings
1287f1befc Address feedback 2024-10-15 14:01:14 -07:00
yoff
9ed8fe5dd0 Update python/ql/test/library-tests/dataflow/coverage/functional.py
Co-authored-by: Taus <tausbn@github.com>
2024-10-15 17:35:36 +02:00
Rasmus Lerchedahl Petersen
195b70aca6 python: Add test for functional-like programming
This can also serve for a place to add tests for
constructs like threading.Thread, mulitprocess.Process, concurrent.futures.ThreadPoolExecutor, and concurrent.futures.ProcessPoolExecutor.
2024-10-15 12:54:30 +02:00
Alvaro Muñoz
e2e1dddb36 Move arg injection sinks to ShellScript class 2024-10-15 09:48:01 +02:00
Kevin Stubbings
d195273bf4 Add mux.Vars() and url.Path sanitizers 2024-10-14 19:49:29 -07:00
Alvaro Muñoz
2e5379f289 Update expected tests 2024-10-14 15:10:31 +02:00
Alvaro Muñoz
ff17d1dcb1 Add CmdI test 2024-10-14 12:50:11 +02:00
Alvaro Muñoz
3b95ae0b53 Bump QLPacks versions 2024-10-14 12:15:58 +02:00
Alvaro Muñoz
7fa77e2728 Delete test script 2024-10-14 12:05:00 +02:00
Alvaro Muñoz
be87eccbe7 Refactor Script support 2024-10-14 12:04:20 +02:00
Alvaro Muñoz
a09acb5462 Better parsing of Bash script commands 2024-10-13 11:56:09 +02:00
Alvaro Muñoz
c7b57b5b77 Merge command and file store steps 2024-10-13 11:55:41 +02:00
Alvaro Muñoz
48fa2967ed Bump qlpack versions 2024-10-11 12:22:40 +02:00
Alvaro Muñoz
ba5e1ed22f Merge pull request #102 from github/moar_poisonable_steps
Major refactor
2024-10-11 12:21:57 +02:00
Alvaro Muñoz
99e92af034 Update tests 2024-10-11 12:20:57 +02:00
Alvaro Muñoz
1e749ae6d5 Add new poisonable step 2024-10-11 12:20:39 +02:00
Alvaro Muñoz
ee25f35653 Refactor of Bash functions 2024-10-11 12:20:26 +02:00
Alvaro Muñoz
d558ff80c3 New Command sources for git and GITHUB_EVENT_PATH 2024-10-11 12:20:03 +02:00
Alvaro Muñoz
d4a24dfdd1 Refactor FlowSteps 2024-10-11 12:19:22 +02:00
Alvaro Muñoz
898507eb54 Update publish.yml 2024-10-11 12:17:35 +02:00
Alvaro Muñoz
6a99845ecf Remove old code to handle redirections to GITHUB_ENV
Redirections to GITHUB_ENV are better handled now by the Bash module
----
2024-10-10 22:22:56 +02:00
Paolo Tranquilli
524686ce37 Swift: make extractor compilable with Swift 6 2024-10-08 16:39:21 +02:00
Asger F
12e316b99d JS: Update test output after merging in 'main'
- Paths are now relative to the test case, not the qlpack
- Paths going through an implicit reads have changed slightly
2024-10-08 10:11:15 +02:00
Asger F
e2e91ac7d9 Merge branch 'main' into js/shared-dataflow-merge-main 2024-10-08 09:28:26 +02:00
Alvaro Muñoz
b7aba1f081 Bump qlpack versions 2024-10-04 18:05:58 +02:00
Alvaro Muñoz
742602d794 Merge pull request #101 from github/control_checks/toctou_split
Improve control checks to better account for toctou issues
2024-10-04 18:04:33 +02:00
Alvaro Muñoz
860eda9c04 Improve control checks to better account for toctou issues 2024-10-04 18:04:13 +02:00
Alvaro Muñoz
a3cf8766ff Bump qlpack versions 2024-10-03 14:42:23 +02:00
Alvaro Muñoz
c90690d338 Merge pull request #100 from github/arginj_exp
Make Argument Injection queries experimental
2024-10-03 14:41:38 +02:00
Alvaro Muñoz
0c9b808fdf Make Argument Injection queries experimental 2024-10-03 14:41:18 +02:00
Alvaro Muñoz
350b354fb3 remmove leftover comments 2024-10-03 14:17:45 +02:00
Alvaro Muñoz
5494f7f099 Bump qlpack versions 2024-10-03 14:16:37 +02:00
Alvaro Muñoz
a6302913cd Merge pull request #99 from github/bash_parser
Improve Bash script parser
2024-10-03 14:13:53 +02:00
Alvaro Muñoz
7d2cbc1f50 Improve Bash script parser 2024-10-03 14:13:27 +02:00
Asger F
72daa980a0 Merge pull request #17643 from asgerf/jss/cached-barriers
JS: Fix bug causing re-evaluation of cached barriers
2024-10-03 12:59:53 +02:00
Asger F
5d2ce172eb JS: Update a test to handle AdditionalSanitizerGuardNode 2024-10-02 14:44:42 +02:00
Asger F
6cbe04dcb7 JS: Consistently use the shared XSS barrier guards in the XSS queries
Previously only reflected XSS used shared barrier guards.
2024-10-02 14:44:17 +02:00
Asger F
341bacfe55 JS: Fix bug causing re-evaluation of cached barriers 2024-10-02 14:43:18 +02:00
Alvaro Muñoz
68da482352 Bump qlpack versions 2024-10-02 12:36:49 +02:00
Alvaro Muñoz
cd1827e3c9 Merge pull request #98 from github/improve_arginj
improve arginj
2024-10-02 12:36:06 +02:00
Alvaro Muñoz
531f3d40c0 Add tests for new bash parser 2024-10-02 12:35:09 +02:00
Alvaro Muñoz
6b98a5b5b1 Update tests 2024-10-02 12:34:27 +02:00
Alvaro Muñoz
8052696836 Add new Poisonable step for bun 2024-10-02 12:34:10 +02:00
Alvaro Muñoz
c58246363e Add new Argument Injection sinks 2024-10-02 12:34:01 +02:00
Alvaro Muñoz
a5075e5216 Change queries to use the new bash parser 2024-10-02 12:33:42 +02:00
Alvaro Muñoz
2727bf5e2f Add improved Bash script parser 2024-10-02 12:33:05 +02:00
Alvaro Muñoz
4b74adec4b Account for branches filter as a way to prevent workflow_run to trigger on PRs from forks 2024-10-02 12:31:59 +02:00
Alvaro Muñoz
ef37e3c594 Bump qlpack versions 2024-10-01 14:22:08 +02:00
Alvaro Muñoz
853fdf0d35 Merge pull request #97 from github/rasmuswl/avoid-duplicate-code-injection-alerts
Suppress `actions/cache-poisoning/code-injection` alerts covered by `actions/code-injection/critical`
2024-10-01 11:47:41 +02:00
Alvaro Muñoz
4274673628 Merge pull request #95 from github/rasmuswl/fix-qhelp-file 2024-10-01 10:10:27 +02:00
Rasmus Wriedt Larsen
726392c8b7 Suppress actions/cache-poisoning/code-injection alerts covered by actions/code-injection/critical 2024-10-01 09:48:16 +02:00
Alvaro Muñoz
c7fde2a40d Bump qlpack versions 2024-09-30 15:35:00 +02:00
Alvaro Muñoz
7e89c04e61 Merge pull request #96 from github/fix/repo_control_check
fix: Repository checks do not protect workflow_run triggered jobs
2024-09-30 15:28:07 +02:00
Alvaro Muñoz
e0a2eb93d6 fix: Repository checks do not protect workflow_run triggered jobs 2024-09-30 15:27:15 +02:00
Rasmus Wriedt Larsen
c10d5a113e Rename help-file to match .ql file
Reported by running

```
codeql generate query-help --format sarifv2.1.0 --output help.sairf ql/src/codeql-suites/actions-code-scanning.qls
```
2024-09-30 15:13:32 +02:00
Alvaro Muñoz
4edfdb4101 Bump qlpack versions 2024-09-28 23:59:23 +02:00
Alvaro Muñoz
fce300ee92 Merge pull request #94 from github/fix/sanitizer_scalar_value
Fix: ControlChecks protects/dominates only work with Steps. A sink can be in a sub-step node (eg: ScalarValue)
2024-09-28 23:58:47 +02:00
Alvaro Muñoz
f2c5a14883 Fix: ControlChecks protects/dominates only work with Steps. A sink can be in a sub-step node (eg: ScalarValue) 2024-09-28 23:57:32 +02:00
Alvaro Muñoz
1b3b47bb1e Bump qlpack versions 2024-09-27 21:39:51 +02:00
Alvaro Muñoz
05d4b3c9f4 Merge pull request #93 from github/ppe_from_rfs
Add remote flow sources as a mutable ref source for untrusted checkouts
2024-09-27 21:39:16 +02:00
Alvaro Muñoz
4fffde2fc5 Add remote flow sources as a mutable ref source for untrusted checkouts 2024-09-27 21:38:38 +02:00
Alvaro Muñoz
294ebe56c6 Merge branch 'master' of https://github.com/github/codeql-actions 2024-09-27 18:33:55 +02:00
Alvaro Muñoz
1a5a3044c2 Bump qlpack versions 2024-09-27 18:25:31 +02:00
Alvaro Muñoz
2e6f004bda Merge pull request #92 from github/fix/direct_cache_poison
Improve path checks for Artifact and Cache poisoning queries
2024-09-27 18:25:00 +02:00
Alvaro Muñoz
9d26a8da26 Improve path checks for Artifact and Cache poisoning queries 2024-09-27 18:22:35 +02:00
Alvaro Muñoz
65d09b3a4b Merge pull request #91 from github/fix/artpoison
Improve artifact poisoning query
2024-09-27 12:45:59 +02:00
Alvaro Muñoz
86c1d9c30f Improve artifact poisoning query
Better check of download path
Add downloading to /tmp as a sanitizer
2024-09-27 12:35:10 +02:00
Alvaro Muñoz
26f829eff4 Bump qlpack versions 2024-09-27 10:29:47 +02:00
Alvaro Muñoz
27752c7590 Merge pull request #90 from github/regexp_actions
Add new sources and summary steps
2024-09-27 10:29:06 +02:00
Alvaro Muñoz
010ad359d7 Add new sources and summary steps 2024-09-27 10:28:44 +02:00
Alvaro Muñoz
71960b3ddd Bump qlpack versions 2024-09-25 18:22:46 +02:00
Alvaro Muñoz
62162a5771 Merge pull request #89 from github/change_sources
Add new sources for github.event.changes
2024-09-25 18:22:14 +02:00
Alvaro Muñoz
16f1a53584 Add new sources for github.event.changes 2024-09-25 18:21:54 +02:00
Alvaro Muñoz
e147a0bc71 Bump qlpack versions 2024-09-25 15:26:31 +02:00
Alvaro Muñoz
b1ddbc9d13 Improve Control Checks 2024-09-25 15:25:56 +02:00
Alvaro Muñoz
153fb492f7 Update tests 2024-09-24 23:14:37 +02:00
Alvaro Muñoz
43b61eb072 Bump qlpack versions 2024-09-24 23:04:57 +02:00
Alvaro Muñoz
356c200158 Composite Action steps's getEnclosingJob should return the calling job 2024-09-24 23:03:55 +02:00
Alvaro Muñoz
0d55b4e784 Bump qlpack versions 2024-09-24 21:59:10 +02:00
Alvaro Muñoz
f26e41db3f Merge pull request #88 from github/DFG/composite_actions
DFG/composite actions
2024-09-24 21:58:07 +02:00
Alvaro Muñoz
f095622a9b Update expected test results 2024-09-24 21:50:59 +02:00
Alvaro Muñoz
e8a667fdc6 Add new tests 2024-09-24 21:43:31 +02:00
Alvaro Muñoz
4fc9e3f0f1 Add Composite action's outputs as a return node 2024-09-24 21:43:10 +02:00
Alvaro Muñoz
7c2386bbee Simplify callable/call matches 2024-09-24 21:42:52 +02:00
Alvaro Muñoz
ef549ef795 Add Outputs nodes as CFG/DFG nodes 2024-09-24 21:41:03 +02:00
Alvaro Muñoz
ffbddb1073 Simplify Callable/call match 2024-09-24 21:40:15 +02:00
Alvaro Muñoz
090d22fa7a Add GetRepoRoot helper function 2024-09-24 21:38:42 +02:00
Alvaro Muñoz
abd49d5b11 Improve privilege workflow detection 2024-09-24 12:12:29 +02:00
Alvaro Muñoz
fe06c9e5fa d /Users/pwntester/src/github.com/github/codeql-actions/ql 2024-09-24 12:12:09 +02:00
Alvaro Muñoz
2bfb156508 d /Users/pwntester/src/github.com/github/codeql-actions/ql 2024-09-23 23:08:58 +02:00
Alvaro Muñoz
610dcaf23d Bump qlpack versions 2024-09-23 12:31:19 +02:00
Alvaro Muñoz
53f82d3d6c Control Checks in Run/Uses steps also protect Jobs that depend on them 2024-09-23 12:29:35 +02:00
Alvaro Muñoz
269c1de902 Bump qlpack versions 2024-09-23 10:22:18 +02:00
Alvaro Muñoz
5e74f89255 Merge pull request #87 from github/reusable_workflow_priv_checks
Consider a Reusable Workflow privileged if a caller is
2024-09-23 10:19:00 +02:00
Alvaro Muñoz
df59e6f5d2 Consider a Reusable Workflow privileged if a caller is 2024-09-23 10:18:29 +02:00
Alvaro Muñoz
1dd7c3d2ef Bump qlpack versions 2024-09-22 22:06:35 +02:00
Alvaro Muñoz
b685a8df4d Merge pull request #86 from github/analyze_reusable_workflows
Cross remote Reusable Workflow analysis
2024-09-22 22:06:05 +02:00
Alvaro Muñoz
d44e7aee0a Cross remote Reusable Workflow analysis 2024-09-22 22:05:39 +02:00
Alvaro Muñoz
a1e44bc918 Bump qlpack versions 2024-09-20 15:42:19 +02:00
GitHub Security Lab
59592cc087 Merge pull request #85 from github/improve_reusable_workflow_calls
Improve reusable workflow calls
2024-09-20 15:41:42 +02:00
Alvaro Muñoz
116d83da5f Improve reusable workflow calls 2024-09-20 15:40:41 +02:00
Alvaro Muñoz
e9dfd9ccb4 Bump qlpack versions 2024-09-20 11:54:00 +02:00
GitHub Security Lab
d3c1db5948 Merge pull request #84 from github/report_unpin_node
Modify UnpinnedActionsTag report node
2024-09-20 11:53:26 +02:00
Alvaro Muñoz
c20e407c16 Modify UnpinnedActionsTag report node 2024-09-20 11:52:44 +02:00
Alvaro Muñoz
dac930de3a Merge branch 'master' of https://github.com/github/codeql-actions 2024-09-19 18:44:30 +02:00
Alvaro Muñoz
c3d7af8f59 Bump qlpack versions 2024-09-19 18:44:23 +02:00
Alvaro Muñoz
eca3205f3b Merge pull request #83 from github/fix_82
feat: Improve sanitizer checks
2024-09-19 18:40:38 +02:00
Alvaro Muñoz
db328f0b16 Improve Association check 2024-09-19 18:24:08 +02:00
Alvaro Muñoz
4f075f3f36 feat: Improve sanitizer checks 2024-09-19 13:38:08 +02:00
Asger F
1cd00a118c Merge branch 'main' into js/shared-dataflow-merge-main 2024-09-18 14:57:50 +02:00
Asger F
5e4c0906d8 Merge pull request #17412 from asgerf/jss/array-index-constant
JS: Fix handling of constant array index reads, and fix the fallout
2024-09-18 12:28:44 +02:00
Alvaro Muñoz
92f3b1614c Bump qlpack versions 2024-09-17 17:07:35 +02:00
Alvaro Muñoz
69b9542a5f Add help file for SecretsInArtifacts query 2024-09-17 17:06:50 +02:00
Asger F
7ba6995854 JS: Clarify a comment 2024-09-17 15:59:04 +02:00
Asger F
1df69ec1d2 JS: Actually don't propagate into array element 0
Preserving tainted-url-suffix into array element 0 seemed like a good idea, but didn't work out so well.
2024-09-12 13:42:36 +02:00
Asger F
0e4e0f4fdd JS: Preverse tainted-url-suffix when stepping into prefix
A URL of form https://example.com?evil#bar will contain '?evil' after splitting out the '#' suffix, and vice versa.
2024-09-12 13:42:28 +02:00
Asger F
74ab346348 JS: Do not include taint steps in TaintedUrlSuffix::step
TaintedUrlSuffix is currently only used in TaintTracking configs meaning it is already propagated
by taint steps. The inclusion of these taint steps here however meant that implicit reads could appear prior to any of these steps.

This was is problematic for PropRead steps as an expression like x[0] could spuriously read from array element 1 via the path:

x [element 1]
x [empty access path] (after implicit read)
x[0] (taint step through PropRead)
2024-09-12 13:42:25 +02:00
Asger F
2712bf821a JS: Fix a bug in isSafeClientSideUrlProperty 2024-09-12 13:42:23 +02:00
Asger F
bc04131c72 JS: Disallow implicit reads before an optional step 2024-09-12 13:42:22 +02:00
Asger F
e1bed42481 JS: Add inline expectation test specifically for TaintedUrlSuffix 2024-09-12 13:42:20 +02:00
Asger F
cf90c83604 JS: Accept changes to nodes/edges results 2024-09-12 13:42:19 +02:00
Asger F
3b09bc548e JS: Add taint step for shift() 2024-09-12 13:42:17 +02:00
Asger F
3ea1134cc1 JS: Add inline test for .shift() method 2024-09-12 13:42:16 +02:00
Asger F
3fcf4ef7a1 JS: More precise model of .shift()
Array.prototype.shift only returns the first array element.

The mutation of Argument[this] is not yet modelled, and is better handled when we have use-use flow.
2024-09-12 13:42:15 +02:00
Asger F
e4f7560bcd JS: Add missing qldoc 2024-09-12 13:42:14 +02:00
Asger F
15fc450a9e JS: Add reminder to update ClientSideUrlRedirect 2024-09-12 13:42:13 +02:00
Asger F
da696817a3 JS: Convert 'split' taint step to legacy taint step 2024-09-12 13:42:05 +02:00
Asger F
133b016c7c JS: Remove old 'split' handling from TaintedUrlSuffix 2024-09-12 13:41:56 +02:00
Asger F
e87e543850 JS: Ensure optional steps/barriers are computed in the correct stage 2024-09-12 13:35:38 +02:00
Asger F
7790f68fe2 JS: Make the TaintedUrlSuffix library use optional steps/barriers 2024-09-12 13:35:36 +02:00
Asger F
3b34cd72f2 JS: Handle split() with '#' or '?' separator in a separate summary
This summary uses the notion of optional steps/barriers so it becomes configurable whether there is flow into the zero'th array element.

Also makes sure we handle the second-argument version of split().
2024-09-12 13:35:33 +02:00
Asger F
24983a5836 JS: Add OptionalStep and OptionalBarrier MaD tokens
OptionalStep[foo] and OptionalBarrier[foo] contribute steps/barriers that are not active by default, but can be opted into by specific queries or for specific flow states.

(Will be used in the following commits)
2024-09-12 13:30:39 +02:00
Alvaro Muñoz
3a39058299 Bump qlpack versions 2024-09-12 10:42:12 +02:00
Alvaro Muñoz
69818c5bb5 Remove bindingset from DataFlow's compatibleTypes 2024-09-12 09:58:21 +02:00
Alvaro Muñoz
48a0fd500d Bump qlpack versions 2024-09-11 18:09:05 +02:00
Alvaro Muñoz
370d3adbb2 Merge pull request #80 from github/list_files
Add models for list-files actions
2024-09-11 18:08:15 +02:00
Alvaro Muñoz
5fe81ddb08 Update tests 2024-09-11 18:07:25 +02:00
Alvaro Muñoz
15bb4d851d Add new test for flow through matrix 2024-09-11 10:25:31 +02:00
Alvaro Muñoz
b199fdc3e2 Add new models for file listing actions 2024-09-11 10:25:10 +02:00
Asger F
87454a4f11 JS: Remove unused predicate 2024-09-10 14:44:49 +02:00
Alvaro Muñoz
321e5504bc Bump qlpack versions 2024-09-10 13:59:04 +02:00
Alvaro Muñoz
25a210734b Update tests 2024-09-10 13:58:36 +02:00
Alvaro Muñoz
ef41db3ce5 Extract simple reference expression from ORed disjuncts 2024-09-10 13:58:24 +02:00
Asger F
0ddb1c87f5 JS: Test update indicating a problem with .split() 2024-09-10 13:14:37 +02:00
Asger F
e0ca1b0482 JS: Benign test updates 2024-09-10 13:07:24 +02:00
Alvaro Muñoz
a9a297ab78 Update tests 2024-09-10 09:52:21 +02:00
Alvaro Muñoz
147da50cb9 Use Taint Tracking to track PR refs to checkout's ref argument 2024-09-10 09:52:09 +02:00
Alvaro Muñoz
bd0c762781 Refactor: Do not use PRHeadCheckoutStep on any dependency of TaintTracking
Problem is that there are StoreSteps that depend on PRHeadCheckout so
there is a non-monotic recursion error since PRHeadCheckout depends on
TaintTracking module, but this module depends on PRHeadCheckout
2024-09-10 09:51:32 +02:00
Alvaro Muñoz
42b487b348 Match callers and callees when root is not the repo root
When running codeql test run, the root of the database is not the root
of the original repo (the directory containing .github and .git)
therefore calls to reusable workflows are not correctly matched.
2024-09-10 09:49:43 +02:00
Asger F
3d4287b7cc JS: Remove ContentSet#asArrayIndex()
For ContentSet it is ambiguous whether asArrayIndex() should get a singleton content set, or the KnownArrayElement content set. The user will now have to choose between asSingleton().asArrayIndex() or ContentSet::arrayElementKnown.
2024-09-09 13:28:32 +02:00
Asger F
013d226ae3 JS: Update comment 2024-09-09 13:26:27 +02:00
Asger F
55d4e7e742 JS: Use ArrayElementKnown when reading a constant array index 2024-09-09 13:26:25 +02:00
Asger F
094112c905 Merge pull request #17213 from asgerf/jss/spread-argument
JS: Improve handling of spread arguments and rest parameters [shared data flow branch]
2024-09-09 13:15:22 +02:00
Alvaro Muñoz
f9d66d9b5e Bump qlpack versions 2024-09-06 23:37:00 +02:00
Alvaro Muñoz
2720aaf097 Add new test for secrets in artifact query 2024-09-06 23:36:29 +02:00
Alvaro Muñoz
279b0bb8f1 Change description for CWE-1395 query 2024-09-06 23:33:46 +02:00
Alvaro Muñoz
84b02febfe Bump qlpack versions 2024-09-06 22:53:53 +02:00
Alvaro Muñoz
72e0851e91 Update metadata for Secrets in Artifact query 2024-09-06 22:53:16 +02:00
Alvaro Muñoz
5e92026f14 Bump qlpack versions 2024-09-06 17:34:55 +02:00
Alvaro Muñoz
0e3097d604 Merge pull request #79 from github/secrets-in-artifacts
feat: New query to report GITHUB_TOKEN exposed in artifacts
2024-09-06 17:32:49 +02:00
Alvaro Muñoz
25eb417acc Remove public wording 2024-09-06 17:32:35 +02:00
Alvaro Muñoz
37fc6156d0 Removing experimental flag 2024-09-06 17:30:49 +02:00
Alvaro Muñoz
6eef51e415 fix: add path checks 2024-09-06 17:22:44 +02:00
Alvaro Muñoz
fefeae4469 feat: New query to report GITHUB_TOKEN exposed in artifacts 2024-09-06 17:00:15 +02:00
Alvaro Muñoz
b2f6ef246c Merge pull request #78 from github/rasmuswl/syntax-error-query 2024-09-06 15:48:35 +02:00
Rasmus Wriedt Larsen
2f68e6f26e Add missing test file 2024-09-06 14:53:46 +02:00
Rasmus Wriedt Larsen
4820626f29 Add SyntaxError query
This can be used by autofix, but might also be nice to help find YAML syntax errors 🤷
2024-09-06 14:04:46 +02:00
Alvaro Muñoz
ac7b7b7162 Bump qlpack versions 2024-09-06 10:50:58 +02:00
Alvaro Muñoz
4f57aade35 Improve accuracy of actions/download-artifact as a source
If upload is on the same workflow, it needs to be triggered by a priv
workflow
2024-09-06 10:49:27 +02:00
Asger F
fb9732a33f JS: Add another test and TODO about an issue with constant array indices 2024-09-06 08:43:11 +02:00
Asger F
1da68aac73 JS: Benign test output change
This happened as a result of the bugfix in the previous commit
2024-09-06 08:43:10 +02:00
Asger F
a9a8351cce JS: Fix one case of missing handling of unknown array index 2024-09-06 08:43:09 +02:00
Asger F
379c7ef20a JS: Add test to show lack of unknown array element being propagated 2024-09-06 08:43:08 +02:00
Asger F
92bb4b3da8 JS: Address some comments from hvitved 2024-09-05 11:32:07 +02:00
Asger F
4568967a76 JS: Do not use legacy taint steps in TaintedUrlSuffix
Tainted URL suffix steps are added as configuration-specific additional
steps, which means implicit reads may occur before any of these steps.

These steps accidentally included the legacy taint steps which include
a step from 'arguments' to all positional parameters. Combined with the
implicit read, arguments could escape their array index and flow to
any parameter while in the tainted-url flow state.
2024-08-29 13:48:30 +02:00
Asger F
65a36b0b3b JS: Add regression test for argument position confusion 2024-08-29 13:42:28 +02:00
Asger F
f65879eef1 JS: Update a test that no longer fails 2024-08-27 11:35:37 +02:00
Asger F
cb5dbb919d JS: Update test to reflect implicit read flow has been fixed
Shows the effect of https://github.com/github/codeql/pull/17262
2024-08-27 11:35:36 +02:00
Asger F
a2d53c261b JS: Update test output and add related TODO in model of 'async' 2024-08-27 11:35:35 +02:00
Asger F
837a8be1b8 JS: Update test output and add related TODO in 'markdown-table' model 2024-08-27 11:35:34 +02:00
Asger F
2e2181be2c JS: Update test output that only affects nodes/edges/subpaths 2024-08-27 11:35:33 +02:00
Asger F
3e196f83f1 JS: Update Promises/flow2 test 2024-08-27 11:35:32 +02:00
Asger F
aa8bd332bf JS: Add a few more tests 2024-08-27 11:35:31 +02:00
Asger F
371f7ef551 JS: Add implicit taint read of array elements 2024-08-27 11:35:31 +02:00
Asger F
df42e7c527 JS: Add test showing lack of implicit reads for ArrayElement 2024-08-27 11:35:30 +02:00
Asger F
4e7bd9ddd8 JS: Update Arrays test now that array elements do not taint the whole array 2024-08-27 11:35:29 +02:00
Asger F
4389b5c999 JS: Fix issue for .apply() calls 2024-08-27 11:35:28 +02:00
Asger F
34e6864fa3 JS: Note issue with .apply() calls 2024-08-27 11:35:27 +02:00
Asger F
ac1dd1850e JS: Remove taint step from array element to whole array 2024-08-27 11:35:26 +02:00
Asger F
5084d0260f Update tests.expected
The 'arguments' node is only materialised for functions that use 'arguments
2024-08-27 11:35:25 +02:00
Asger F
895cb872ad JS: Add taint into dynamic argument array 2024-08-27 11:35:24 +02:00
Asger F
079a622cf9 JS: Add tests showing missing taint flow
When the spread argument itself is tained and not
inside any content, the read steps currently fail
to propagate the data.
2024-08-27 11:35:23 +02:00
Asger F
6a083136d7 JS: Hide some nodes 2024-08-27 11:35:22 +02:00
Asger F
acdc896c04 JS: Support for dynamic args to flow summaries 2024-08-27 11:35:21 +02:00
Asger F
53a2a66dd0 Add new nodes to early stage 2024-08-27 11:35:20 +02:00
Asger F
5c7e623c47 JS: Add some tests for missing handling of dynamic args in flow summaries 2024-08-27 11:35:19 +02:00
Asger F
c04f0beb8a Update DataFlowConsistency.expected 2024-08-27 11:35:18 +02:00
Asger F
60c3d077b2 Update DataFlowImplConsistency.qll 2024-08-27 11:35:17 +02:00
Asger F
bbb1c8c374 Remove old arguments-array position 2024-08-27 11:35:16 +02:00
Asger F
ed33a6e91b JS: Add explicit model of .join() 2024-08-27 11:35:15 +02:00
Asger F
fa7ad03068 JS: Add store/load steps for the new argument arrays 2024-08-27 11:35:15 +02:00
Asger F
623dbda77d Do not pass regular positional args into the rest parameter 2024-08-27 11:35:14 +02:00
Asger F
a72f79576a JS: Add corresponding argument positions 2024-08-27 11:35:13 +02:00
Asger F
6c7d745a2b JS: Add nodes for static/dynamic argument/parameter arrays 2024-08-27 11:35:12 +02:00
Asger F
5d77c336fc Test case for spread and rest args/params 2024-08-27 11:35:11 +02:00
Asger F
4cdaccd22e JS: Add InlineFlowTest 2024-08-27 11:35:10 +02:00
Asger F
2adaf0f935 Merge pull request #17261 from asgerf/jss/dynamic-import-step
JS: Port step for dynamic imports
2024-08-27 08:27:16 +02:00
Asger F
47c519fc0a JS: Add test for flow through dynamic imports 2024-08-26 15:15:49 +02:00
Asger F
4b8ae2a4f3 Merge branch 'main' into js/shared-dataflow-merge-main 2024-08-26 12:43:16 +02:00
Alvaro Muñoz
0cabcf8ec7 Merge pull request #76 from github/pwntester-patch-1
Update ArgumentInjectionCritical.md
2024-08-23 17:40:48 +02:00
Alvaro Muñoz
293dd1a32b Update ArgumentInjectionCritical.md 2024-08-23 17:40:25 +02:00
Asger F
7cfe3dae85 JS: Port step for dynamic imports 2024-08-23 10:07:28 +02:00
Asger F
379952febc Merge pull request #17285 from asgerf/js/shared-dataflow-bump
JS: Resolve conflicts after merging 'main' into shared data flow branch
2024-08-23 09:58:27 +02:00
Asger F
a2dd47aeb2 JS: Update test output
These files conflicted and have been regenerated.
2024-08-22 14:27:15 +02:00
Asger F
423fd04545 JS: Update new xsjs-specific code to respect TEarlyStageNode 2024-08-22 13:22:35 +02:00
Asger F
c54f5858b1 Merge branch 'main' into js/shared-dataflow-merge-main 2024-08-22 13:22:05 +02:00
Alvaro Muñoz
1ca985b415 Update qlpack.yml 2024-08-12 13:09:06 +02:00
Alvaro Muñoz
0baf7e3cef Update qlpack.yml 2024-08-12 13:08:38 +02:00
Jaroslav Lobačevski
90b3c96a38 Merge pull request #74 from github/docs/help_files
docs/help files
2024-08-12 11:59:07 +02:00
Jaroslav Lobačevski
d6027267aa fix variable name 2024-08-12 09:31:58 +00:00
Jaroslav Lobačevski
e83841bba9 fixes 2024-08-12 09:29:26 +00:00
Jaroslav Lobačevski
a282818272 grammar 2024-08-10 10:52:06 +00:00
Jaroslav Lobačevski
77ecca9f5e grammar 2024-08-10 10:17:40 +00:00
Jaroslav Lobačevski
cc6badaea6 grammar 2024-08-10 09:54:23 +00:00
Alvaro Muñoz
23754b6d2f Update publish.yml 2024-08-09 17:38:57 +02:00
Alvaro Muñoz
2b8169b000 Update publish.yml 2024-08-09 17:37:52 +02:00
Alvaro Muñoz
d166b7c03a Create publish.yml 2024-08-09 17:34:42 +02:00
Alvaro Muñoz
569e80b678 Fix ImproperAccess query 2024-08-09 17:17:18 +02:00
Alvaro Muñoz
9411fac4d0 New Descriptions 2024-08-09 17:06:06 +02:00
Alvaro Muñoz
d8df3ff6b3 Use ControlCheck.dominates in the ImproperAccessControl query 2024-08-09 17:05:41 +02:00
Alvaro Muñoz
9977f25f0f Move some queries to experimental 2024-08-09 17:05:17 +02:00
Alvaro Muñoz
f4f18f38cc Move Argument injection queries to its own CWE 2024-08-09 17:04:32 +02:00
Alvaro Muñoz
8ebe76668c Bump qlpack versions 2024-08-07 17:24:59 +02:00
Alvaro Muñoz
88f6eff724 Merge pull request #73 from github/fix/control_checks_actor
fix(controlcheck): Improve checks for actors
2024-08-07 17:24:27 +02:00
Alvaro Muñoz
1750ebac18 fix(controlcheck): Improve checks for actors 2024-08-07 17:09:50 +02:00
Alvaro Muñoz
b251c661f8 Bump qlpack versions 2024-08-07 13:46:50 +02:00
Alvaro Muñoz
e4559e19d8 Move Output Clobbering to CWE-074 2024-08-07 13:46:27 +02:00
Alvaro Muñoz
ea9bb36ae0 Bump qlpack versions 2024-08-07 13:21:03 +02:00
Alvaro Muñoz
856077233d Merge pull request #72 from github/query/output_clobbering
feat(queries): Improve Output Clobbering query
2024-08-07 13:19:54 +02:00
Alvaro Muñoz
473251371b feat(queries): Improve Output Clobbering query
Add support for clobbering of `set-output` workflow command
2024-08-07 13:17:36 +02:00
Alvaro Muñoz
c442f1b96b Bump qlpack versions 2024-08-06 23:30:47 +02:00
Alvaro Muñoz
ff41cda8fc Merge pull request #71 from github/query/secret_handling
feat(query): New queries for incorrect secrets handling
2024-08-06 23:29:41 +02:00
Alvaro Muñoz
6842babd16 feat(query): New queries for incorrect secrets handling
ExcessiveSecretsExposure: Reports when all secrets are passed to the
workflow runner since that violates the principle of least privelege.
UnmaskedSecretExposure: Reports when secrets are derived from a JSON
secret since they wont get masked by the workflow runner
2024-08-06 23:08:52 +02:00
Asger F
c66000d2fa Merge pull request #17136 from asgerf/js/shared-dataflow-bump
JS: Merge 'main' into shared dataflow branch
2024-08-06 14:14:47 +02:00
Alvaro Muñoz
9f79e51e89 Bump qlpack versions 2024-08-06 12:46:28 +02:00
Alvaro Muñoz
76210f53c8 Merge pull request #69 from github/improve_cache_poisoning
Improve Cache Poisoning Query
2024-08-06 12:45:51 +02:00
Asger F
2d814428d6 JS: Update expected output with provenance 2024-08-06 12:45:08 +02:00
Asger F
0a143a5f52 JS: Do not include type in path explanation 2024-08-06 12:45:07 +02:00
Asger F
1a532dac29 JS: Update VariableCapture instantiation after merge 2024-08-06 12:45:06 +02:00
Asger F
c8bbad6c4d Merge branch 'main' into js/shared-dataflow-merge-main 2024-08-06 12:43:13 +02:00
Alvaro Muñoz
d18179850d Split Cache Poisoning queries in 3
Split them into 3 queries depending of how the cache can be poisoned:
- control of cached files
- execution of controlled code
- code injection

Remove `setup-XXX` actions from CacheWriting class since the cached
files are not in the CWD
2024-08-06 12:04:34 +02:00
Alvaro Muñoz
fbc2e1e7e8 Remove caching actions that cache files outside of the CWD 2024-08-06 10:47:12 +02:00
Alvaro Muñoz
14f1672e74 Fix query message 2024-08-05 23:54:26 +02:00
Alvaro Muñoz
2273aadb4b Improve Cache Poisoning query
The untrusted files path is compared with the path written to the cache
to check if the cache can really be poisoned
2024-08-05 23:47:00 +02:00
Alvaro Muñoz
34b48d559b Add expected tests results 2024-08-05 23:45:51 +02:00
Alvaro Muñoz
c5314aeb6c Add new tests 2024-08-05 23:44:27 +02:00
Alvaro Muñoz
397eb2a762 Add getPath() to PRHeadCheckout and CacheWriting classes
Add getPath() methods to get the path where a checkout step writes the
code and where a Cache write reads the files from.
2024-08-05 23:44:20 +02:00
Alvaro Muñoz
0990774302 feat(poisonable_steps): Add python -m pip install 2024-08-05 18:53:53 +02:00
Alvaro Muñoz
ffe700c204 Merge pull request #68 from github/cat_env
feat(bash): Add support for `cat hazelcast/.github/java-config.env >> $GITHUB_ENV`
2024-08-02 15:49:19 +02:00
Alvaro Muñoz
8cf1a6afa7 feat(bash): Add support for cat hazelcast/.github/java-config.env >> $GITHUB_ENV 2024-08-02 15:48:57 +02:00
Asger F
df64388d79 Merge branch 'main' into js/shared-dataflow-merge-main 2024-08-02 13:18:38 +02:00
Asger F
5c222f7b05 Merge pull request #14412 from asgerf/js/shared-dataflow
[Feature branch] JS: Migrate to shared dataflow library
2024-08-02 12:48:01 +02:00
Alvaro Muñoz
90efdc7deb Bump qlpack versions 2024-08-02 12:47:16 +02:00
Alvaro Muñoz
4d7c985027 Merge pull request #67 from github/bash_script_parsing
feat(bash): Improve bash command parsing
2024-08-02 12:46:04 +02:00
Alvaro Muñoz
41fade5feb feat(bash): Improve bash command parsing 2024-08-02 12:44:43 +02:00
Alvaro Muñoz
c4d70e66e1 Bump qlpack versions 2024-08-01 17:49:13 +02:00
Alvaro Muñoz
822a326a4b Merge pull request #66 from github/tee_support
feat(bash): Add support for tee as a way to write to GITHUB special files
2024-08-01 17:47:55 +02:00
Alvaro Muñoz
f457537b34 feat(bash): Add support for tee as a way to write to GITHUB special files 2024-08-01 17:47:23 +02:00
Alvaro Muñoz
def170425a Bump qlpack versions 2024-08-01 11:43:48 +02:00
Alvaro Muñoz
e043cf3a54 Merge branch 'master' of https://github.com/github/codeql-actions 2024-08-01 11:38:55 +02:00
Alvaro Muñoz
c9b7340718 Bump qlpack versions 2024-08-01 11:38:46 +02:00
Alvaro Muñoz
5006b81565 Merge pull request #65 from github/query/vulnerable_versions
feat(queries): Improve Use Of Vulnerable Actions query
2024-08-01 11:37:24 +02:00
Alvaro Muñoz
6cfec0d245 feat(queries): Improve Use Of Vulnerable Actions query
Move all info to a MaD config file so its easier to mantain
Add other vulnerable actions
2024-08-01 11:37:00 +02:00
Alvaro Muñoz
a05dd49b74 Merge pull request #64 from github/query/path_traversal
query/path traversal
2024-07-31 23:14:48 +02:00
Alvaro Muñoz
5f1884aa32 feat(queries): Add new queries to report path traversal via artifact poisoning 2024-07-31 23:03:34 +02:00
Alvaro Muñoz
483f6229ff refactor: Create abstract class for known vulnerable actions 2024-07-31 23:02:52 +02:00
Alvaro Muñoz
4334524ac4 Merge pull request #63 from github/cwe_1395
feat(queries): Add query to report vulnerable 3rd party actions
2024-07-31 18:30:27 +02:00
Alvaro Muñoz
2b55d79c93 feat(queries): Add query to report vulnerable 3rd party actions 2024-07-31 18:29:17 +02:00
Alvaro Muñoz
a69fa5cb83 Merge pull request #62 from github/actions_download_artifact
feat(queries): Add actions/download-artifact as a source of Artifact Poisoning
2024-07-31 16:31:54 +02:00
Alvaro Muñoz
d548aef3e0 feat(queries): Add actions/download-artifact as a source of Artifact Poisoning 2024-07-31 16:31:15 +02:00
Alvaro Muñoz
80d2bbdc9b Merge pull request #61 from github/missing_permissions
fix(queries): Fix Missing Permissions query
2024-07-31 11:45:54 +02:00
Alvaro Muñoz
ab8dd599b7 fix(queries): Fix Missing Permissions query
If a job is only triggered by `workflow_call`, we dont report any issues
since they should be reported on the calling workflows
2024-07-31 11:45:30 +02:00
Alvaro Muñoz
8ffac2935e Bump qlpack versions 2024-07-30 18:22:20 +02:00
Alvaro Muñoz
65ad387543 fix: Add printf as an equivalent to echo 2024-07-30 18:18:22 +02:00
Alvaro Muñoz
bf10603b5f Bump qlpack versions 2024-07-30 10:28:15 +02:00
Alvaro Muñoz
f5261237a4 feat(suites): Add a bughalla-specific query suite 2024-07-30 10:27:28 +02:00
Alvaro Muñoz
da36924bb1 feat(queries): Add Output Clobbering query 2024-07-30 10:26:41 +02:00
Alvaro Muñoz
06ec94e731 Bump qlpack versions 2024-07-29 22:38:42 +02:00
Alvaro Muñoz
e3df12d77b Update Query suite 2024-07-29 22:37:47 +02:00
Alvaro Muñoz
eaf034e8cb feat(config): Add pipx as poisonable step 2024-07-25 11:09:02 +02:00
Alvaro Muñoz
28cc06e136 Bump qlpack versions 2024-07-24 18:28:09 +02:00
Alvaro Muñoz
ba6ab04dfc feat(suite): Remove severity:warning queries from CodeScanning suite 2024-07-24 18:27:39 +02:00
Alvaro Muñoz
bb78bb6f57 refactor(queries): update severity level for workflow permissions 2024-07-24 18:27:00 +02:00
Alvaro Muñoz
da28f7dc0a feat(config): add asv to poisonable steps list 2024-07-24 15:56:47 +02:00
Alvaro Muñoz
12e78ac4fe fix(regex): update pattern to match both gh and hub commands 2024-07-23 23:37:04 +02:00
Alvaro Muñoz
2dffb865d0 Bump qlpack versions 2024-07-22 12:45:34 +02:00
Alvaro Muñoz
15649afd5c feat(queries): Improve envvar injection queries
Consider those cases where the contents of a file are written to a var
and that var assigned to GITHUB_ENV
2024-07-22 12:44:27 +02:00
Alvaro Muñoz
270ca2ad7d feat(queries): Experimental Output clobbering query 2024-07-15 21:00:54 +02:00
Alvaro Muñoz
fc39249f92 feat(queries): Consider untrusted checkout as a source for code injections 2024-07-15 21:00:28 +02:00
Alvaro Muñoz
76ded33280 Bump qlpack versions 2024-07-13 23:29:36 +02:00
Alvaro Muñoz
cc64c95dbc feat(dataflow): Update edges predicate to only link to next step
Previously each step was linking to all possible following steps. This change makes a better flow path explanation flowing from the checkout to the poisonable step, step by step
2024-07-13 23:28:47 +02:00
Alvaro Muñoz
c1d8ca0976 Bump qlpack versions 2024-07-13 00:01:49 +02:00
Alvaro Muñoz
44911382af feat(tests): Update tests results 2024-07-12 23:49:05 +02:00
Alvaro Muñoz
9917c46f6f feat(core): Add StepsContainer class
A StepsContainer is an abstract class that includes all nodes with steps: Runs and LocalJobs
2024-07-12 23:48:52 +02:00
Alvaro Muñoz
69d173f13c fix(refactor): Remove unnecessary variables 2024-07-12 23:47:52 +02:00
Alvaro Muñoz
7f77e89bbf feat(tests): Add test for checkout in composite action 2024-07-12 23:31:12 +02:00
Alvaro Muñoz
417d5a403e Bump qlpack versions 2024-07-12 12:46:03 +02:00
Alvaro Muñoz
a1787596d2 feat(tests): Update tests 2024-07-12 12:45:19 +02:00
Alvaro Muñoz
e0a075da57 feat(dataflow): Flow through bash assigments on artifact to GH env/output 2024-07-12 12:45:06 +02:00
Alvaro Muñoz
5785a21d56 feat(queries): Env-var injection
Enable Uses sinks for envvar injection
2024-07-12 12:44:25 +02:00
Alvaro Muñoz
f623f73f16 feat(models): Add dotenv models
Envvar-injection sinks
2024-07-12 12:43:25 +02:00
Alvaro Muñoz
8289bf97b9 feat(models): Add support for artifact to step output 2024-07-12 11:10:01 +02:00
Alvaro Muñoz
29d2b287c9 tests: Organize tests 2024-07-12 10:14:39 +02:00
Alvaro Muñoz
c5d31ce08c fix(refactor): Add comments and rename predicates 2024-07-12 10:13:49 +02:00
Alvaro Muñoz
3f8a791b2e fix(queries): Improve Argument Injection query
Add GITHUB_HEAD_REF as a source
2024-07-11 22:59:20 +02:00
Alvaro Muñoz
89024ad604 fix(models): Reuse command delimiter regexps 2024-07-11 22:58:20 +02:00
Alvaro Muñoz
7a54170b31 feat(ext): Move regexp delimiters to Config.qll 2024-07-11 12:59:34 +02:00
Alvaro Muñoz
f4581d0aa5 Bump qlpack versions 2024-07-11 11:36:18 +02:00
Alvaro Muñoz
eb66114d8b feat(models): New ArgInj sink 2024-07-11 11:35:44 +02:00
Alvaro Muñoz
56af52a729 feat(tests): New tests for Command Injection
Injections on a workflow_run triggered protected by a allow branches list should not be reported as critical
2024-07-11 10:46:37 +02:00
Alvaro Muñoz
adbb236465 fix(query): Better identification of argument injection commands 2024-07-11 10:45:49 +02:00
Alvaro Muñoz
8d75250da7 Bump qlpack versions 2024-07-11 10:05:29 +02:00
Alvaro Muñoz
732f0dc29f feat(queries): Argument Injection
Make argument injection sinks congigurable with MaD
2024-07-11 10:04:43 +02:00
Alvaro Muñoz
73c77bc93b Initial implementation
Pending work: complete the regular expression
2024-07-11 10:04:43 +02:00
Alvaro Muñoz
4ad7c1fc95 Merge pull request #57 from github/workflow_run_branches
workflow run branches
2024-07-10 13:09:36 +02:00
Alvaro Muñoz
621ead2266 Fix branches logic 2024-07-10 13:09:23 +02:00
Alvaro Muñoz
090b3d41d1 Fix branches logic 2024-07-10 13:08:54 +02:00
Alvaro Muñoz
53b88627e5 feat(core): Exclude worflow_run#branches#default branch from externally triggerable events 2024-07-10 12:15:49 +02:00
Alvaro Muñoz
f1d1c1e55a Bump QL versions 2024-07-10 11:49:37 +02:00
Alvaro Muñoz
f4dd771d1c feat(models): Add models for ssh-action 2024-07-10 11:49:18 +02:00
Alvaro Muñoz
e23054292b feat(tests): Add new tests
Add new tests to verify that even if a job is privileged, if the vulnerability takes place in a different one, it should be considered as non-priveleged and reported as Cache Poisoning instead of Untrusted Checkout
2024-07-10 11:49:02 +02:00
Alvaro Muñoz
8231261ccf New poisonable steps 2024-07-09 17:28:04 +02:00
Alvaro Muñoz
59fd8530a3 Bump qlpack versions 2024-07-08 22:39:58 +02:00
Alvaro Muñoz
a368b797fd fix(checks): Add repository control checks 2024-07-08 22:39:22 +02:00
Alvaro Muñoz
ee265c4879 fix(models): Slash-command-action
Do not consider slash-command-action command-arguments as a remote flow source if it requires write or admin permissions
2024-07-08 22:38:53 +02:00
Alvaro Muñoz
a2af3c654b Account for all npm and pnpm subcommands
Exclude args such as `npm -v`
2024-07-08 20:46:29 +02:00
Alvaro Muñoz
1657af60df Model get-workflow-origin action 2024-07-08 12:59:36 +02:00
Alvaro Muñoz
20ce5d5344 Add JS local imports as Poisonable steps 2024-07-08 12:59:16 +02:00
Alvaro Muñoz
bc483fc380 Add poisonable step test 2024-07-06 22:44:57 +02:00
Alvaro Muñoz
56b70981ae Bump qlpack versions 2024-07-05 18:18:04 +02:00
Alvaro Muñoz
e5064f8090 Improve poisonable steps 2024-07-05 18:16:50 +02:00
Alvaro Muñoz
966a9b1652 Bump qlpack versions 2024-07-04 13:05:27 +02:00
Alvaro Muñoz
7d58beba67 Better control check support 2024-07-04 13:04:59 +02:00
Alvaro Muñoz
69db192378 Bump qlpack versions 2024-07-03 12:40:48 +02:00
Alvaro Muñoz
c70fb6e911 Consider toJson as a sanitizer for Code Injection in JS 2024-07-03 12:25:24 +02:00
Alvaro Muñoz
7e0146d634 Bump qlpack versions 2024-07-02 23:52:01 +02:00
Alvaro Muñoz
4b01cd5be4 Support flow through fromJson 2024-07-02 23:51:19 +02:00
Alvaro Muñoz
45d51a4d00 Add more poisonable steps 2024-07-02 23:29:53 +02:00
Alvaro Muñoz
1281ca8e81 Bump qlpack versions 2024-07-01 23:01:38 +02:00
Asger F
1d267efb6b JS: Fix missing qldoc 2024-06-28 14:30:56 +02:00
Asger F
e5924c1f84 JS: Another messy test update 2024-06-28 13:08:38 +02:00
Asger F
14fc790617 Update DataFlowConsistency.expected 2024-06-28 13:08:09 +02:00
Alvaro Muñoz
39bff38d70 Bump qlpack versions 2024-06-28 12:32:18 +02:00
Alvaro Muñoz
a485528ebe Refactor bash script parsing to improve coverage of env var injection 2024-06-28 12:31:43 +02:00
Alvaro Muñoz
40a6f3bbee Make EnvVar and Path injection equivalent 2024-06-27 22:53:55 +02:00
Alvaro Muñoz
a9ea9a1f8a Update expected test files 2024-06-27 22:53:32 +02:00
Alvaro Muñoz
effa1e1356 Move ControlChecks to its own file 2024-06-27 22:53:20 +02:00
Alvaro Muñoz
b64f53e03e Bump qlpack versions 2024-06-27 17:33:08 +02:00
Alvaro Muñoz
c57e4929cb New code injection sink 2024-06-27 17:32:21 +02:00
Alvaro Muñoz
31fe5952dc New poisonable steps 2024-06-27 17:32:03 +02:00
Alvaro Muñoz
04c4cedb41 New code injection sink 2024-06-27 17:26:04 +02:00
Alvaro Muñoz
682236e432 New poisonable steps 2024-06-27 17:25:55 +02:00
Alvaro Muñoz
d998373162 Move event sources to config files 2024-06-27 17:08:40 +02:00
Alvaro Muñoz
a99d293309 Bump to dataflow version 1.0.1 2024-06-27 16:33:45 +02:00
Alvaro Muñoz
fdedca394f Merge branch 'master' of https://github.com/github/codeql-actions 2024-06-27 16:10:08 +02:00
Alvaro Muñoz
4516d3df81 Bump qlpack versions 2024-06-27 16:09:49 +02:00
Asger F
1c730bc66e JS: Fix compilation error in DataFlowImplConsistency.qll 2024-06-27 12:47:15 +02:00
Asger F
c3806a2210 JS: Messy test output updates
These initially got messed up by a merge conflict where I couldn't rerun the tests due to breaking
changes in the data flow library. I wanted the breaking-change updates to live in their own commits,
not just eaten by a merge resolution commit, so the test output became broken for a while.

The '#select' result set is unchanged in all of these, so they should be safe to accept.
2024-06-27 11:59:56 +02:00
Asger F
90f0e07e49 JS: Benign update after fixing PropertyName charpred 2024-06-27 11:56:22 +02:00
Alvaro Muñoz
c94b84685c Merge pull request #50 from github/fix_typo
fix typos
2024-06-27 11:56:03 +02:00
Asger F
ee10702e73 JS: Another provanance test output update 2024-06-27 11:56:01 +02:00
Alvaro Muñoz
eeba26a647 fix typos 2024-06-27 11:55:21 +02:00
Alvaro Muñoz
d11c15dc28 Bump qlpack versionsi 2024-06-27 11:07:55 +02:00
Alvaro Muñoz
5997038923 Exclude self-hosted query from CodeScanning suite 2024-06-27 11:07:02 +02:00
Asger F
df0488a470 Ensure Member tokens from flow summaries are seen in PropertyName 2024-06-27 10:22:14 +02:00
Asger F
c52a4b0621 JS: Provide RenderSummarizedCallable 2024-06-27 09:44:45 +02:00
Asger F
e53c0cdce7 Fix unknown Parameter/Argument decoding 2024-06-27 09:39:06 +02:00
Asger F
2473274681 JS: Benign test output changes 2024-06-27 09:06:45 +02:00
Alvaro Muñoz
4aba07074c Bump qlpack versionsi 2024-06-26 19:45:13 +02:00
Alvaro Muñoz
76b115deb0 Dedup Cache poisoning and Untrusted checkout 2024-06-26 19:44:44 +02:00
Alvaro Muñoz
878317ab6b Bump qlpack versions 2024-06-26 19:18:10 +02:00
Alvaro Muñoz
5cd292e23e Make Untrusted Checkout and CachePoisoning rules path-problems 2024-06-26 19:17:37 +02:00
Alvaro Muñoz
e6311966c8 Take explicit permission into account for privilege calculation 2024-06-26 16:17:07 +02:00
Asger F
af7b4e3063 Accept flow difference due to added test cases
New library gets FN for spread arguments in a call to splice(), which
was added to the old version in this PR:
  https://github.com/github/codeql/pull/16739
2024-06-26 13:52:27 +02:00
Asger F
53efb5837b JS: Update some tests with provenance columns
Only includes the changes that purely contain the new provenance columns
2024-06-26 13:51:44 +02:00
Asger F
88edc06517 Avoid bad join in compatibleTypesCached
This is identical to the code in Ruby and seems to prevent a bad join ordering
in a cached version of this predicate in DataFlowCommon
2024-06-26 13:51:41 +02:00
Asger F
fc7c2c5b17 Remove unused code 2024-06-26 13:51:40 +02:00
Asger F
e67e89dd70 Implement decodeUnknownArgument/ParameterPosition 2024-06-26 13:51:39 +02:00
Asger F
3bebd709b3 Handle AnyMemberDeep and ArrayElementDeep in encodeContent 2024-06-26 13:51:38 +02:00
Asger F
6c0c67dce4 Implement encodeWith/WithoutContent 2024-06-26 13:51:37 +02:00
Asger F
b0ea81276b Implement encodeReturn 2024-06-26 13:51:36 +02:00
Asger F
5811a3c5a6 Port getMadStringFromContentSet -> encodeContent 2024-06-26 13:51:35 +02:00
Asger F
8c4e5e8876 Boilerplate implementation of default predicates from FlowSummaryImpl.qll 2024-06-26 13:51:34 +02:00
Asger F
6b35a766a6 Migrate to shared FlowSummary library 2024-06-25 14:43:29 +02:00
Alvaro Muñoz
1fd7c148a5 Bump qlpack versions 2024-06-25 13:58:25 +02:00
Asger F
dd7aff555d Instantiate shared FlowSummary library 2024-06-25 13:35:49 +02:00
Asger F
f0d7c3a7f0 Remove bindingsets 2024-06-25 13:33:06 +02:00
Asger F
6e32f27652 Rename predicates to be consistent with qlpack
In preparation for migrating to the FlowSummary module in the qlpack,
rename predicates to be consistent with the qlpack.
2024-06-25 13:30:33 +02:00
Alvaro Muñoz
61797e9180 Add pull_request-comment-branch head_ref as a source 2024-06-25 13:27:08 +02:00
Asger F
6c8fb61f60 Js: Update FlowSummaryImpl.qll to make things compile 2024-06-25 13:10:24 +02:00
Asger F
64a9598b89 JS: Update interface for isUnreachableInCall 2024-06-25 13:01:23 +02:00
Asger F
505c532af7 JS: Implement totalorder() 2024-06-25 12:58:35 +02:00
Asger F
102ca77acf Switch to getLocation() in DataFlowCall 2024-06-25 11:49:19 +02:00
Asger F
ecf418b8f6 Merge branch 'main' into js/shared-dataflow 2024-06-25 11:48:41 +02:00
Asger F
bd3fccd1a8 JS: Update test output with provenance column 2024-06-25 10:30:56 +02:00
Asger F
20df5adbaa JS: Bugfix in DeduplicatePathGraph
This was introduced after a quick fix to handle the addition of
provenance.
2024-06-25 10:30:14 +02:00
Asger F
f43a189f06 JS: Make CaptureNode.toString() more explicit 2024-06-25 09:56:39 +02:00
GitHub Security Lab
795232e040 Merge pull request #47 from github/poisonable_config
Move configuration to MaD files
2024-06-25 09:48:06 +02:00
Alvaro Muñoz
fc8173239e Move configuration to MaD files 2024-06-25 09:47:43 +02:00
Alvaro Muñoz
24d69f2ee8 Bump qlpack versions 2024-06-24 12:45:35 +02:00
Alvaro Muñoz
b5dfda27fd Add cargo as poisonable step 2024-06-24 12:45:24 +02:00
Alvaro Muñoz
6df70d1a45 Do not consider priv events if runtime data is available 2024-06-23 21:34:30 +02:00
Alvaro Muñoz
4e94c4294c Merge pull request #46 from github/remove_scan_action 2024-06-21 15:26:21 +02:00
Alvaro Muñoz
06918b0492 Remove custom scan action 2024-06-21 09:19:37 +02:00
Alvaro Muñoz
1e4df62a39 Merge pull request #45 from github/change_packages
Move from githubsecuritylab packages to github
2024-06-20 09:51:17 +02:00
Alvaro Muñoz
4619128c11 Move from githubsecuritylab packages to github 2024-06-20 09:50:36 +02:00
Alvaro Muñoz
c764b39c18 Bump qlpack versions 2024-06-17 17:11:10 +02:00
Alvaro Muñoz
1fdf76ac41 Improve download artifact and untrusted checkout queries 2024-06-17 15:17:46 +02:00
Alvaro Muñoz
bdaab69d0b Do not uses globs for source-root 2024-06-13 15:09:37 +02:00
Alvaro Muñoz
6c73e3770f Merge branch 'master' of https://github.com/github/codeql-actions 2024-06-13 11:51:54 +02:00
Alvaro Muñoz
4b4901f99f Bump qlpack versions 2024-06-13 11:51:46 +02:00
Alvaro Muñoz
a84c1c4706 Minor improvemnts 2024-06-13 11:51:15 +02:00
Alvaro Muñoz
ceac1c6392 Do not scan JS files 2024-06-13 11:50:53 +02:00
Alvaro Muñoz
fbaf329428 Remove dependencies with javascript-all 2024-06-13 11:50:28 +02:00
Alvaro Muñoz
c61e71f22d Update build.yml 2024-06-12 11:19:06 +02:00
Alvaro Muñoz
f8dd493a68 Update build.yml 2024-06-12 11:15:17 +02:00
Alvaro Muñoz
f068504c4f Bump qlpack versions 2024-06-12 10:07:36 +02:00
Alvaro Muñoz
95b5eff5d0 Merge pull request #41 from github/js_extractor
Move from yaml to js extractor
2024-06-12 10:05:16 +02:00
Alvaro Muñoz
e5eb85695d Update action to use javascript extractor 2024-06-12 10:04:50 +02:00
Alvaro Muñoz
e2fb677abb Remove DS_Store 2024-06-12 09:48:27 +02:00
Alvaro Muñoz
63fd73020c Update lock files 2024-06-12 08:54:01 +02:00
Alvaro Muñoz
df3d6131a8 Update lock files 2024-06-12 08:50:49 +02:00
Alvaro Muñoz
ad1f35c86a Move from yaml to js extractor 2024-06-11 21:24:22 +02:00
Alvaro Muñoz
92cd50393b Bump qlpack versions 2024-06-07 10:06:46 +02:00
Alvaro Muñoz
3f0f75a7c5 Make CachePoisoning queries high severity 2024-06-07 10:05:39 +02:00
Alvaro Muñoz
c45d4d37aa Bump qlpack versions 2024-06-06 17:34:42 +02:00
Alvaro Muñoz
49a2fd82b1 Bump qlpack versions 2024-06-06 17:32:11 +02:00
Alvaro Muñoz
dea36402a6 Merge branch 'master' of https://github.com/github/codeql-actions 2024-06-06 17:30:49 +02:00
Alvaro Muñoz
d13a937a5d Update Cache Poisoning 2024-06-06 17:30:43 +02:00
Alvaro Muñoz
ba4dd2b0ed Update to latest dataflow shared library 2024-06-06 17:23:40 +02:00
Alvaro Muñoz
d344d9b97a Update to latest dataflow shared library 2024-06-06 17:23:10 +02:00
Alvaro Muñoz
2c96127425 Improve event context sources + test 2024-06-05 16:34:52 +02:00
Alvaro Muñoz
284c52f972 Bump qlpack versions 2024-06-05 10:54:37 +02:00
Alvaro Muñoz
28af21c556 Update ql suites 2024-06-05 08:57:43 +02:00
Alvaro Muñoz
fa05b684d7 Dont consider pull_request with write permissions as priv 2024-06-03 22:17:42 +02:00
Alvaro Muñoz
65b51996a6 new tests 2024-06-03 18:59:51 +02:00
Alvaro Muñoz
a5c6df3070 Move from yaml to js extractor 2024-06-03 18:13:01 +02:00
Alvaro Muñoz
88465bd0e3 Improve privleged detection 2024-06-03 11:26:51 +02:00
Alvaro Muñoz
844b6e014b Bump qlpack versions 2024-05-31 19:04:32 +02:00
Alvaro Muñoz
842b741611 Bump qlpack versions 2024-05-31 16:02:51 +02:00
Alvaro Muñoz
39e517ebd3 Merge pull request #40 from github/improve_regexps
Improve bash and source regexpps
2024-05-31 16:02:01 +02:00
Alvaro Muñoz
3e9c19044e Improve bash and source regexpps 2024-05-31 16:01:27 +02:00
Alvaro Muñoz
c6e3bafe00 Bump qlpack versions 2024-05-24 09:35:06 +02:00
Alvaro Muñoz
1fc45eb296 Improve ControlCheck for untrusted checkouts 2024-05-24 09:33:35 +02:00
Alvaro Muñoz
16a7522807 Improve Untrusted checkout queries 2024-05-22 23:24:17 +02:00
Alvaro Muñoz
33ae3b1625 minor updates 2024-05-22 18:53:39 +02:00
Alvaro Muñoz
367531a659 Bump qlpack versions 2024-05-22 11:08:22 +02:00
Alvaro Muñoz
4d28d6aa7c Improve toctou queries 2024-05-22 11:07:52 +02:00
Alvaro Muñoz
e86fa9744a Bump qlpack versions 2024-05-21 23:05:30 +02:00
Alvaro Muñoz
e5b5a0db04 Merge pull request #39 from github/externally_triggereable_jobs
externally triggereable jobs
2024-05-21 23:03:00 +02:00
Alvaro Muñoz
5d32071adc resolve conflicts 2024-05-21 23:02:34 +02:00
Alvaro Muñoz
313acfcac2 Add externally triggereable data model and predicates 2024-05-21 23:00:40 +02:00
Alvaro Muñoz
d3bff87f9a Add github to json contexts 2024-05-17 23:10:29 +02:00
Alvaro Muñoz
5f8bab0608 Bump qlpack versions 2024-05-17 22:36:26 +02:00
Alvaro Muñoz
66138df61d Merge pull request #37 from github/toctou_refinements
Reduce FP for actor/association checks that cannot be bypassed this way
2024-05-17 11:25:39 +02:00
Alvaro Muñoz
0456dcdc8f Merge pull request #38 from github/expr_trigger_mapping
Ensure event sources are available for triggering events
2024-05-17 11:25:14 +02:00
Alvaro Muñoz
47a66e1075 Add TODO 2024-05-16 21:43:00 +02:00
Alvaro Muñoz
dfeefe0caa Consider actor and association checks as bypassable checks ONLY for issueOps 2024-05-16 16:17:26 +02:00
Alvaro Muñoz
84d4c573f9 Merge branch 'toctou_refinements' of https://github.com/github/codeql-actions into toctou_refinements 2024-05-16 16:14:48 +02:00
Alvaro Muñoz
612be64ffc Consider actor and association checks as bypassable checks ONLY for issueOps 2024-05-16 16:10:26 +02:00
Jaroslav Lobačevski
558bea84d4 Create label_actor.yml 2024-05-16 15:57:13 +02:00
Alvaro Muñoz
e28ad1d644 Reduce FP for actor/association checks that cannot be bypassed this way 2024-05-16 15:57:13 +02:00
Alvaro Muñoz
f325d40a22 Ensure event sources are available for triggering events 2024-05-16 15:55:12 +02:00
Alvaro Muñoz
1b4246e7f1 Update tests for cache poisoning 2024-05-16 11:32:21 +02:00
Jaroslav Lobačevski
c47fdd123d Create label_actor.yml 2024-05-16 10:56:01 +02:00
Alvaro Muñoz
888b9fecca Reduce FP for actor/association checks that cannot be bypassed this way 2024-05-16 10:28:24 +02:00
Alvaro Muñoz
446765bcbb Update Cache Poisoning rule 2024-05-15 22:08:03 +02:00
Alvaro Muñoz
731889bf88 Bump qlpack versions 2024-05-15 21:29:51 +02:00
Alvaro Muñoz
d15dc68e43 Merge pull request #35 from github/default_branch_name 2024-05-15 17:57:25 +02:00
Alvaro Muñoz
d5e679a340 Merge pull request #36 from github/JarLob-patch-1 2024-05-15 17:52:00 +02:00
Jaroslav Lobačevski
6f87b75504 Update test.yml 2024-05-15 17:44:16 +02:00
Jaroslav Lobačevski
00052d1ea1 exists 2024-05-15 15:37:57 +00:00
Jaroslav Lobačevski
17a6d28e18 Fix OR 2024-05-15 15:37:17 +00:00
Jaroslav Lobačevski
11edff936b Fix tests 2024-05-15 15:27:59 +00:00
Jaroslav Lobačevski
1a4939a13b Apply suggestions from code review
Co-authored-by: Alvaro Muñoz <pwntester@github.com>
2024-05-15 16:19:58 +02:00
Alvaro Muñoz
f09e79a79b Merge pull request #33 from github/fix_32
Add context paths containing tainted fields
2024-05-15 16:00:22 +02:00
Jaroslav Lobačevski
a2503dd14b fix default_branch_name visibility 2024-05-15 10:22:40 +00:00
Jaroslav Lobačevski
cae29e0abe temporary fix 2024-05-15 10:03:17 +00:00
Jaroslav Lobačevski
f38af29f80 Fix array 2024-05-15 09:36:18 +00:00
Jaroslav Lobačevski
6e8fc89034 Add default branch name check 2024-05-15 09:29:24 +00:00
Alvaro Muñoz
7a66b12437 add tests 2024-05-14 22:33:50 +02:00
Alvaro Muñoz
30d0b9d133 Add context paths containing tainted fields 2024-05-14 22:07:49 +02:00
Alvaro Muñoz
3120d4b328 Merge branch 'master' of https://github.com/github/codeql-actions 2024-05-14 15:38:48 +02:00
Alvaro Muñoz
33b3fc67c7 Merge pull request #30 from github/peter_murray_issue-body-parser-action_model
Add missing source for peter-murray/issue-body-parser-action
2024-05-14 15:38:18 +02:00
Alvaro Muñoz
67c964808b Merge pull request #29 from github/toctou_queries
TOCTOU queries
2024-05-14 15:36:18 +02:00
Alvaro Muñoz
f96b9cc535 Update tests 2024-05-14 15:35:13 +02:00
Alvaro Muñoz
ca59423c8a Bump qlpack versions 2024-05-14 15:32:40 +02:00
Alvaro Muñoz
ff2cfa568d Merge pull request #31 from github/branch_deploy_head_source
Treat branch-deploy action as a source of HEAD ref for untrusted checkouts
2024-05-14 15:30:11 +02:00
Alvaro Muñoz
a0939bb0a3 Bump qlpack versions 2024-05-14 15:29:45 +02:00
Alvaro Muñoz
0473c3824f Treat branch-deploy action as a source of HEAD ref for untrusted checkouts 2024-05-14 11:38:39 +02:00
Alvaro Muñoz
00f77ca9ec Add missing source for peter-murray/issue-body-parser-action 2024-05-14 11:36:43 +02:00
Alvaro Muñoz
73fbd2311b Improper access check queries and tests 2024-05-14 10:20:04 +02:00
Alvaro Muñoz
7c295e011a TOCTOU queries and tests 2024-05-14 10:19:27 +02:00
Alvaro Muñoz
b4096e0201 Refactor control checks 2024-05-14 09:56:23 +02:00
Alvaro Muñoz
60769f1671 Bump qlpack versions 2024-05-13 16:26:53 +02:00
Alvaro Muñoz
54d103ffe4 Merge pull request #28 from github/feat/matrix_expressions
Resolve Matrix expression to their possible values
2024-05-13 16:25:52 +02:00
Alvaro Muñoz
cee0389d6e Update SelfHostedQuery.qll
Co-authored-by: Jaroslav Lobačevski <jarlob@github.com>
2024-05-13 15:33:28 +02:00
Alvaro Muñoz
a1efc78ac7 Refactor regexps 2024-05-13 13:47:01 +02:00
Alvaro Muñoz
9ee9314cb9 Resolve conflicts after rebasing 2024-05-13 10:37:42 +02:00
Alvaro Muñoz
9310150fb0 Resolve conflict 2024-05-13 09:20:45 +02:00
Alvaro Muñoz
b2d7c823b3 Merge pull request #25 from github/support_trigger_events
New `On` and `Event` classes
2024-05-13 09:18:53 +02:00
Alvaro Muñoz
510cefecbe Remove debug left-overs 2024-05-10 14:59:12 +02:00
Alvaro Muñoz
e0d147f39a Add On and Event AST nodes
Capture information about trigger events on the new On and Event classes
2024-05-10 14:13:44 +02:00
Alvaro Muñoz
8590a0ba8f Refactor runOnDefaultBranch 2024-05-10 14:12:54 +02:00
Alvaro Muñoz
4d61204404 New tests 2024-05-10 14:12:25 +02:00
Alvaro Muñoz
a30c2aa5de Update PoisonableSteps 2024-05-09 23:32:21 +02:00
Alvaro Muñoz
3b684d8c94 Merge pull request #19 from github/cache_poisoning_actions
Fix error in select
2024-05-08 22:44:57 +02:00
Alvaro Muñoz
eb4eb4e931 Merge branch 'master' into cache_poisoning_actions 2024-05-08 22:43:22 +02:00
Alvaro Muñoz
d6fb0ae84e Update tests 2024-05-08 22:41:05 +02:00
Alvaro Muñoz
ad45d319c5 Resolve conflict 2024-05-08 22:37:22 +02:00
Alvaro Muñoz
1ea0312f36 Bump qlpack versions 2024-05-08 22:35:25 +02:00
Alvaro Muñoz
d2e9411e12 Update and new tests 2024-05-08 22:35:17 +02:00
Alvaro Muñoz
44377acb08 Improve Cache Poisoning quer 2024-05-08 22:35:06 +02:00
Alvaro Muñoz
2d09d1e6d8 Fix alert text 2024-05-08 22:34:30 +02:00
Alvaro Muñoz
f95a3e5298 Refactor eventtrigger and privileged methods
Move them from Workflows to Jobs
2024-05-08 22:34:11 +02:00
Alvaro Muñoz
ddf72a2cf3 Add more poisonable steps 2024-05-08 22:32:24 +02:00
Alvaro Muñoz
e8f2bc3ef6 Remove debug method 2024-05-08 22:32:11 +02:00
Alvaro Muñoz
409a6aa137 Update ql/src/Security/CWE-349/CachePoisoning.ql
Co-authored-by: Jaroslav Lobačevski <jarlob@github.com>
2024-05-08 18:48:16 +02:00
Alvaro Muñoz
fafb44d4f6 Add CachePoisoning by Code Injection query 2024-05-08 15:20:48 +02:00
Alvaro Muñoz
b965a55339 Fix error in select
Casting to CachingWritingStep in the select clause was shadowing all the Poisonable result
2024-05-08 15:04:48 +02:00
Alvaro Muñoz
c39e802c17 Fix sources for tj-actions/verify-changed-files 2024-05-08 13:56:49 +02:00
Alvaro Muñoz
1df74e29c1 Merge branch 'master' of https://github.com/github/codeql-actions 2024-05-08 09:44:58 +02:00
Alvaro Muñoz
d3bb6668f6 Missing getMajorVersion predicate 2024-05-08 09:44:48 +02:00
Alvaro Muñoz
6a87192f64 Account for insecure action versions 2024-05-08 09:43:32 +02:00
Alvaro Muñoz
de74b88866 Update 2024-05-08 09:43:32 +02:00
Alvaro Muñoz
778c6ad923 Fix tj-actions/changed-files sources 2024-05-08 09:43:32 +02:00
Jorge
2a84b9cbfb Merge pull request #8 from github/jorgectf-patch-1
Copy master branch only
2024-05-07 09:49:56 +02:00
Jorge
5d6a3c4900 Copy master branch only 2024-05-07 09:45:12 +02:00
Alvaro Muñoz
b7960776cc Merge pull request #7 from github/fix_dorny_paths_filter_source
Fix incorrect source for dorny path filters
2024-05-07 09:45:04 +02:00
Alvaro Muñoz
b22e305699 Fix untrusted checkout tests 2024-05-06 23:32:42 +02:00
Alvaro Muñoz
ddf4bb194e Fix incorrect source for dorny path filters 2024-05-06 23:32:06 +02:00
Alvaro Muñoz
1ddfbb05f3 Update actions fragment 2024-05-06 22:19:02 +02:00
Alvaro Muñoz
0ea34dfb52 Update action.yml 2024-05-06 22:11:43 +02:00
Alvaro Muñoz
c3c6410a73 Update action.yml 2024-05-06 20:01:48 +02:00
Alvaro Muñoz
254664d274 Bump qlpack versions 2024-05-06 18:39:15 +02:00
Alvaro Muñoz
c14d069ad6 Merge pull request #5 from github/cache_poisoning
Add Cache Poisoning Query
2024-05-06 18:37:52 +02:00
Alvaro Muñoz
2980139283 Merge pull request #6 from github/untrusted_checkout_improvments
untrusted checkout improvments
2024-05-06 18:37:13 +02:00
Alvaro Muñoz
373e0a278a Rename untrusted checkout queries 2024-05-06 18:36:46 +02:00
Alvaro Muñoz
f6b1daa59c Improve query 2024-05-06 18:26:58 +02:00
Alvaro Muñoz
2359e2de90 Clean query 2024-05-06 17:24:43 +02:00
Alvaro Muñoz
9417e1d164 Classify checkout steps 2024-05-06 17:13:00 +02:00
Alvaro Muñoz
bb028e41d4 Add Cache Poisoning Query 2024-05-06 17:10:34 +02:00
Asger F
536c115c1c JS: Fix location override in CaptureNode 2024-05-06 13:51:25 +02:00
Asger F
23d28fc098 Shared: add location for 'this' nodes 2024-05-06 13:50:40 +02:00
Asger F
5a2260b481 JS: Update to match changes to API 2024-05-06 10:13:25 +02:00
Asger F
19f14622f3 JS: Update use of Locations 2024-05-06 10:13:24 +02:00
Asger F
2de9af2236 JS: Update to getLocation() in DeduplicatePathGraph 2024-05-06 10:13:07 +02:00
Alvaro Muñoz
addedd0e2a Comment out unused source 2024-05-04 23:29:55 +02:00
Alvaro Muñoz
4be3011887 Merge pull request #4 from github/refactor_untrusted_checkout
Refactor untrusted checkout queries
2024-05-04 23:28:15 +02:00
Alvaro Muñoz
16c77cbe25 Refactor untrusted checkout queries 2024-05-04 23:27:26 +02:00
Asger F
c408ab9e6a Merge branch 'main' into js/shared-dataflow 2024-05-02 19:43:34 +02:00
Alvaro Muñoz
9843f375ee ignore runtime info for pull_request triggered workflows 2024-04-30 12:20:53 +02:00
Alvaro Muñoz
186f9d018d Merge pull request #2 from github/separate_sources
Split sources by taint type
2024-04-28 12:04:02 +02:00
Alvaro Muñoz
831b8cfaa6 Bump qlpack versions 2024-04-28 12:03:40 +02:00
Alvaro Muñoz
0f3281c386 Support bash heredoc 2024-04-28 09:36:27 +02:00
Alvaro Muñoz
00f6ff8c01 Split sources by taint type 2024-04-27 11:02:33 +02:00
Alvaro Muñoz
27d0a3406d Improve Env path/var injection queries 2024-04-26 16:17:29 +02:00
Alvaro Muñoz
39308fd89f Fix typo 2024-04-24 22:09:03 +02:00
Alvaro Muñoz
0ff967b102 Fix typo 2024-04-24 22:07:18 +02:00
Alvaro Muñoz
fbf03fa8e2 New expression is always true tests 2024-04-24 21:51:27 +02:00
Alvaro Muñoz
c9b2dac128 Update action.yml 2024-04-24 15:07:05 +02:00
Alvaro Muñoz
944bd84a58 Add missing spaces 2024-04-23 15:15:16 +02:00
Alvaro Muñoz
16cf60af00 Add double quotes to env var 2024-04-23 15:05:40 +02:00
Alvaro Muñoz
6237a8e24c Update action.yml 2024-04-23 13:27:44 +02:00
Alvaro Muñoz
5cd8d70a9c Bump qlpack versions 2024-04-23 13:09:06 +02:00
Alvaro Muñoz
858df49012 Generate yaml file 2024-04-23 13:08:27 +02:00
Alvaro Muñoz
a2ed07ec35 Update scan action 2024-04-23 12:43:23 +02:00
Alvaro Muñoz
f73571a752 fix: fix shell comments 2024-04-23 11:20:52 +02:00
Alvaro Muñoz
4b03282be0 Merge pull request #1 from github/extensionpack
Support external workflow extpacks
2024-04-22 23:31:49 +02:00
Alvaro Muñoz
17933cbb54 Bump qlpack versions 2024-04-22 23:30:22 +02:00
Alvaro Muñoz
61976c684e Lower privilege checks to Jobs 2024-04-22 23:28:58 +02:00
Alvaro Muñoz
ef9583a921 Bump qlpack versions 2024-04-22 16:20:36 +02:00
Alvaro Muñoz
c31e9dde5e Add EnvPathInjection query 2024-04-22 16:19:56 +02:00
Alvaro Muñoz
ab7196ac52 Fix FPs in EnvVarInjection 2024-04-22 09:53:30 +02:00
Alvaro Muñoz
9183fb0d80 Fix expression always true query 2024-04-20 23:31:08 +02:00
Alvaro Muñoz
46d2bb24e5 Fix expression always true query 2024-04-20 22:57:22 +02:00
Alvaro Muñoz
1a44d83ddb Bump qlpack versions 2024-04-19 17:58:40 +02:00
Alvaro Muñoz
d504cd9b4d Better detection of poisonable steps 2024-04-19 16:20:09 +02:00
Alvaro Muñoz
7a8af5e8ea Additional sources 2024-04-19 16:19:35 +02:00
Alvaro Muñoz
cb1e19a317 New ExpressionIdAlwaysTrue query 2024-04-19 16:19:10 +02:00
Alvaro Muñoz
e084cef23d Merge branch 'master' of https://github.com/github/codeql-actions 2024-04-19 12:23:05 +02:00
Alvaro Muñoz
19a87a13db Update lock files 2024-04-19 12:22:58 +02:00
Alvaro Muñoz
febba3d6d3 Update gitignore 2024-04-19 12:22:20 +02:00
Alvaro Muñoz
a222bfc33d Update test.yml 2024-04-19 12:07:00 +02:00
Alvaro Muñoz
843d9e24c4 Update test.yml 2024-04-19 12:05:09 +02:00
Alvaro Muñoz
ecf8198984 Update test.yml 2024-04-19 12:00:02 +02:00
Alvaro Muñoz
417830020d Update test.yml 2024-04-19 11:55:08 +02:00
Alvaro Muñoz
0713294006 Update test.yml 2024-04-19 11:52:56 +02:00
Alvaro Muñoz
96abb193c7 Update test.yml 2024-04-19 11:39:03 +02:00
Alvaro Muñoz
d2e675f68c Merge branch 'master' of https://github.com/github/codeql-actions 2024-04-19 11:31:31 +02:00
Alvaro Muñoz
e200746678 remove qlpack locks from repo 2024-04-19 11:31:22 +02:00
Alvaro Muñoz
5190e0865c Update test.yml 2024-04-19 10:29:12 +02:00
Jorge
8c8a9b8a18 Update test.yml 2024-04-19 10:01:55 +02:00
Alvaro Muñoz
6bc0d6dc32 Update test.yml 2024-04-19 09:59:15 +02:00
Jorge
c681b13046 Update copy-to-bughalla.yml 2024-04-19 09:55:12 +02:00
Alvaro Muñoz
d69c10c4f6 Update test.yml 2024-04-19 09:40:44 +02:00
Alvaro Muñoz
5d5a02ccc3 Update test.yml 2024-04-18 22:02:04 +02:00
Alvaro Muñoz
591dfe07fe Update copy-to-bughalla.yml 2024-04-18 21:55:09 +02:00
Alvaro Muñoz
bd4f158b22 Update test.yml 2024-04-18 21:48:40 +02:00
Alvaro Muñoz
a4cf78b9ed Update test.yml 2024-04-18 21:43:20 +02:00
Alvaro Muñoz
a29e0c438d Update test.yml 2024-04-18 21:38:27 +02:00
Alvaro Muñoz
86cc50971b Update test.yml 2024-04-18 21:30:15 +02:00
Alvaro Muñoz
d4d3957392 Create test.yml 2024-04-18 21:29:14 +02:00
Alvaro Muñoz
1cdcb3271b Merge pull request #48 from GitHubSecurityLab/new_untrusted_checkout_step
new untrusted checkout step
2024-04-17 11:56:10 +02:00
Alvaro Muñoz
afaab8b644 add tests 2024-04-17 11:26:21 +02:00
Alvaro Muñoz
bd9cd3eb86 new untrusted checkout step 2024-04-17 11:23:00 +02:00
Alvaro Muñoz
d18c575cd4 fix broken models 2024-04-17 11:22:45 +02:00
Alvaro Muñoz
a5d8a4568e Merge pull request #47 from GitHubSecurityLab/ca-rw-summaries-sources
CA RW summaries and sources
2024-04-17 10:18:01 +02:00
jorgectf
764f6fbc0d Fix "inputs" models typo 2024-04-16 21:35:30 +02:00
jorgectf
463a7a6062 Add resuable workflow summaries and sources 2024-04-16 21:33:59 +02:00
jorgectf
d1a4d18fca Add composite actions summaries and sources 2024-04-16 21:33:50 +02:00
Alvaro Muñoz
9ecda65e32 Update Priv workflow definition 2024-04-16 11:41:53 +02:00
Alvaro Muñoz
25eace71bf Bump qlpack versions 2024-04-12 13:08:41 +02:00
Alvaro Muñoz
e45010ec5b Add Secret exfiltration query 2024-04-12 13:07:54 +02:00
Alvaro Muñoz
db86c40c50 Enable dataflow through GITHUB_ENV vars 2024-04-12 13:07:40 +02:00
Alvaro Muñoz
2925380e72 Remove dummy models 2024-04-11 16:27:40 +02:00
Alvaro Muñoz
29cef4fd73 Bump qlpack versions 2024-04-11 16:24:51 +02:00
Alvaro Muñoz
841499eeb0 Improve privleged workflow detection 2024-04-11 16:23:51 +02:00
Alvaro Muñoz
ed70ef0307 Make Artifact poisoning query a path problem 2024-04-11 15:46:49 +02:00
Alvaro Muñoz
b761565dcf Merge branch 'master' of https://github.com/GitHubSecurityLab/codeql-actions 2024-04-11 15:18:19 +02:00
Alvaro Muñoz
1b2e02df64 Add support for multiline assigments 2024-04-11 15:18:09 +02:00
Alvaro Muñoz
4f0ec73307 Merge pull request #46 from GitHubSecurityLab/ca-rw-sinks
Add models for composite actions and reusable workflows sinks
2024-04-11 12:02:01 +02:00
jorgectf
6c245605a7 Discard already-modeled sinks 2024-04-11 11:26:45 +02:00
jorgectf
83f9527cc4 Add models for reusable workflows sinks 2024-04-11 11:25:54 +02:00
jorgectf
ae84303fac Add models for composite actions sinks 2024-04-11 11:25:23 +02:00
jorgectf
5a12a2213b Add provenance to existing models 2024-04-11 11:24:42 +02:00
jorgectf
c373238fa6 Add subfolders to dataExtensions 2024-04-11 11:23:53 +02:00
jorgectf
c56f220b13 Add provenance field 2024-04-11 11:23:28 +02:00
jorgectf
a817a22cc7 Remove redundant import 2024-04-11 11:22:36 +02:00
jorgectf
0051914245 Add .cache to gitignore 2024-04-11 11:21:59 +02:00
Alvaro Muñoz
8d2b8be133 Add github.event as a source 2024-04-10 22:32:49 +02:00
Alvaro Muñoz
5968da87bb Bump qlpack versions 2024-04-08 18:53:39 +02:00
Alvaro Muñoz
58b21d4684 Improve assignments to GITHUB ENVARS detection 2024-04-08 18:52:13 +02:00
Alvaro Muñoz
ae5b8bc0ac Bump qlpack versions 2024-04-08 17:12:45 +02:00
Alvaro Muñoz
31a1ea9593 Improve envvar injection 2024-04-08 17:12:00 +02:00
Alvaro Muñoz
45a51a9f74 Bump qlpack versions 2024-04-08 12:55:24 +02:00
Alvaro Muñoz
56d2d8ec10 Update test results 2024-04-08 12:54:30 +02:00
Alvaro Muñoz
5d81c4d69e Merge pull request #45 from GitHubSecurityLab/artifact_posining
Improve Artifact Poisoning query
2024-04-08 12:53:35 +02:00
Alvaro Muñoz
2651e5a673 Improve Artifact poisoning related queries 2024-04-08 12:52:10 +02:00
Alvaro Muñoz
3209378f45 Remove TODO 2024-04-05 14:25:25 +02:00
Alvaro Muñoz
28ccf4fa68 Improve Artifact Poisoning query 2024-04-05 09:18:01 +02:00
Alvaro Muñoz
ce5928c6ba Bump qlpack versions 2024-04-03 15:43:43 +02:00
Alvaro Muñoz
73878ed3cd Merge pull request #42 from GitHubSecurityLab/priv_workflows
priv workflows
2024-04-03 15:41:04 +02:00
Alvaro Muñoz
f7ddd8b769 Include problem queries in actions-all suite 2024-04-03 15:39:50 +02:00
Alvaro Muñoz
2988bc8885 Centralize isPrivileged decisions 2024-04-03 15:39:00 +02:00
Alvaro Muñoz
119c7b8158 Bump qlpack versions 2024-04-03 11:41:42 +02:00
Alvaro Muñoz
9c90db3f83 Merge pull request #41 from GitHubSecurityLab/env_injection
New Artifact Poisoning and EnvVar Injection queries
2024-04-03 11:39:56 +02:00
Alvaro Muñoz
a2bbf704ee fix: triggering events for artifact poisoning 2024-04-03 11:39:35 +02:00
Alvaro Muñoz
2a1226c37a Add workflow_dispatch to the triggers for artifact poisoning 2024-04-02 12:54:42 +02:00
Alvaro Muñoz
152d29da38 Add Artifact poisoning and Env Injection queries 2024-04-01 18:53:37 +02:00
Alvaro Muñoz
c7b3148af6 Merge pull request #39 from GitHubSecurityLab/new_sources
feat(sources): New sources
2024-04-01 10:56:45 +02:00
Alvaro Muñoz
cc16318a90 Make new trilom source compliant with new sources 2024-04-01 10:56:03 +02:00
Alvaro Muñoz
ee81a87428 resolve conflicts 2024-04-01 10:54:02 +02:00
Alvaro Muñoz
9807cf87d5 resolve conflicts 2024-04-01 10:52:46 +02:00
Alvaro Muñoz
bdfd46111f Only triggered on non-pull_request events 2024-04-01 10:51:26 +02:00
Alvaro Muñoz
822e9bcaab env var injection query 2024-03-23 21:55:54 +01:00
Alvaro Muñoz
ff3759eca8 Merge pull request #40 from GitHubSecurityLab/refactor_source_checks
feat(sources): Do not take triggers into consideration
2024-03-23 21:42:19 +01:00
Alvaro Muñoz
2ed3aceddf feat(sources): Do not take triggers into consideration 2024-03-22 13:32:29 +01:00
Alvaro Muñoz
9d5b026fde Merge branch 'master' of https://github.com/GitHubSecurityLab/codeql-actions 2024-03-21 14:21:30 +01:00
Alvaro Muñoz
06747cd98b Add tests for untrusted checkouts in workflow_run triggered workflows 2024-03-21 14:19:46 +01:00
Alvaro Muñoz
b6a097caa4 Merge pull request #38 from GitHubSecurityLab/improve_untrusted_co 2024-03-18 14:36:42 +01:00
Alvaro Muñoz
874e45e3e5 feat(sources): New sources
This PR also adds the ability to not limit a source to a trigger event
2024-03-18 13:22:53 +01:00
Alvaro Muñoz
9683ae35bc Add tests 2024-03-18 13:04:57 +01:00
Alvaro Muñoz
8023a527a4 fix(untrusted_co): Do not report Reusable workflows called from pull_request 2024-03-18 13:02:11 +01:00
Alvaro Muñoz
0a2be55507 Merge branch 'master' of https://github.com/GitHubSecurityLab/codeql-actions 2024-03-18 11:00:30 +01:00
Alvaro Muñoz
8906bd9635 Bump versions 2024-03-18 11:00:22 +01:00
Jorge
cbfd53a17c Merge pull request #37 from GitHubSecurityLab/fix-inputs
Fix inputs with composite action
2024-03-15 23:03:27 +01:00
Jorge
e60c0b875f Fix inputs for composite action 2024-03-15 22:01:06 +00:00
Jorge
09c2ba4280 Make action download actions-all 2024-03-15 16:39:18 +01:00
Jorge
e0bbb66be4 Try to fix actions-all suite 2024-03-15 15:11:21 +01:00
Alvaro Muñoz
0da8f8d299 Merge pull request #36 from GitHubSecurityLab/fix_source_regexps
fix(fn): Apply json wrappers to source regexps
2024-03-15 14:05:29 +01:00
Alvaro Muñoz
d9e589c6e7 Remove unnecessary boundary anchors 2024-03-15 13:58:46 +01:00
Alvaro Muñoz
6cb15f06bc fix(fn): Apply json wrappers to source regexps 2024-03-15 13:54:21 +01:00
Alvaro Muñoz
27a9bc8564 Merge branch 'master' of https://github.com/GitHubSecurityLab/codeql-actions 2024-03-15 13:34:21 +01:00
Alvaro Muñoz
01d8d79e6d Bump versions 2024-03-15 13:34:12 +01:00
Alvaro Muñoz
ea135a60de Merge pull request #35 from GitHubSecurityLab/jorgectf-patch-2
Fix tokens
2024-03-15 11:25:08 +01:00
Jorge
5908d6c567 Fix tokens 2024-03-15 11:23:37 +01:00
Jorge
465700b2cd Merge pull request #33 from GitHubSecurityLab/jorgectf-patch-1
Add `GITHUB_TOKEN`
2024-03-15 11:19:41 +01:00
Alvaro Muñoz
188f9d5adc Merge pull request #34 from GitHubSecurityLab/refactor_queries
Refactor queries
2024-03-15 11:17:31 +01:00
Alvaro Muñoz
169e57e874 Refactor queries 2024-03-15 11:10:41 +01:00
Jorge
a36ae6a7e2 Add GITHUB_TOKEN 2024-03-15 11:07:01 +01:00
Alvaro Muñoz
92dbceb507 boost pack versions 2024-03-15 10:19:08 +01:00
Asger F
711a08b0d4 JS: Add TODO about switching to the shared library 2024-03-15 09:26:19 +01:00
Alvaro Muñoz
12af3bdf08 resolve conflicts 2024-03-14 22:42:57 +01:00
Alvaro Muñoz
46afa9c1f3 Add new tests 2024-03-14 22:41:01 +01:00
Alvaro Muñoz
f251783c26 Apply suggestions from code review
Co-authored-by: Jorge <46056498+jorgectf@users.noreply.github.com>
2024-03-14 21:52:22 +01:00
Alvaro Muñoz
d21d453d1c Split queries 2024-03-14 21:52:22 +01:00
jorgectf
d26ead7c3b Add security sinks 2024-03-14 21:52:22 +01:00
Jorge
4fcd68ba5a Merge pull request #31 from GitHubSecurityLab/new_sinks
Add security sinks
2024-03-14 19:11:27 +01:00
Jorge
1e64b18212 Add suite that runs all queries 2024-03-14 19:09:22 +01:00
Alvaro Muñoz
70dd7fe18f Apply suggestions from code review
Co-authored-by: Jorge <46056498+jorgectf@users.noreply.github.com>
2024-03-14 17:47:20 +01:00
Alvaro Muñoz
d011269bf8 Merge pull request #32 from GitHubSecurityLab/choose-suite 2024-03-14 17:42:55 +01:00
Jorge
53209a26b1 build 2024-03-14 16:22:34 +00:00
Jorge
a9aba88bc5 Add alternate value 2024-03-14 17:21:26 +01:00
Jorge
678f99b6be build 2024-03-14 16:14:33 +00:00
Jorge
a9057a7386 Add suite input 2024-03-14 17:10:35 +01:00
Alvaro Muñoz
cfed2d4ce0 Split queries 2024-03-14 16:30:23 +01:00
Alvaro Muñoz
8e5eeb2ea3 Merge branch 'untrusted_co' 2024-03-14 16:15:53 +01:00
Alvaro Muñoz
5130135df0 fix(stepsExpression): allow steps from a composite action to communicate 2024-03-14 16:14:55 +01:00
Alvaro Muñoz
a3ccc2eba3 Merge pull request #30 from GitHubSecurityLab/untrusted_co
Improve UntrustedCheckout query
2024-03-14 14:52:39 +01:00
Alvaro Muñoz
778d8978b0 DF support for untrusted checkout query 2024-03-14 13:55:10 +01:00
Alvaro Muñoz
22d0600da8 Support more PR head checkouts 2024-03-14 13:28:39 +01:00
Alvaro Muñoz
d12b24886f Merge branch 'untrusted_co' of https://github.com/GitHubSecurityLab/codeql-actions into untrusted_co 2024-03-14 12:58:56 +01:00
Alvaro Muñoz
35df9519e1 Support more untrusted checkout cases 2024-03-14 12:58:47 +01:00
Alvaro Muñoz
9ca1ac5bb9 Fix expression regexp 2024-03-14 12:58:02 +01:00
Alvaro Muñoz
3150f24d3f Update tests and fix regexp 2024-03-14 12:21:16 +01:00
Alvaro Muñoz
7160f08222 Update ql/test/query-tests/Security/CWE-829/.github/workflows/auto_ci.yml
Co-authored-by: Jaroslav Lobačevski <jarlob@github.com>
2024-03-14 12:03:40 +01:00
Alvaro Muñoz
03277cc24b Add test for self-referencing jobs 2024-03-14 11:58:44 +01:00
Alvaro Muñoz
8e2c1a4f4e Expose predicates to check local flow 2024-03-14 11:58:07 +01:00
Alvaro Muñoz
3e2dffce8b Rename ContextExpression to SimpleReferenceExpression 2024-03-14 11:57:43 +01:00
Alvaro Muñoz
e726f9fff1 Apply suggestions from code review
Co-authored-by: Jaroslav Lobačevski <jarlob@github.com>
2024-03-14 09:24:32 +01:00
Alvaro Muñoz
aa37339deb Apply suggestions from code review 2024-03-14 09:22:40 +01:00
Alvaro Muñoz
fe1bf58ae5 Apply suggestions from code review
Co-authored-by: Jaroslav Lobačevski <jarlob@github.com>
2024-03-14 09:22:05 +01:00
jorgectf
446a2dc267 Add security sinks 2024-03-13 23:22:13 +01:00
Alvaro Muñoz
872b1f88f0 More regexp improvements 2024-03-13 22:47:19 +01:00
Alvaro Muñoz
0e50204672 More regexp improvements 2024-03-13 22:19:55 +01:00
Asger F
eff5f3b7d6 JS: Remove duplicate dependency from qlpack.yml 2024-03-13 20:43:44 +01:00
Alvaro Muñoz
87b284e5e6 update 2024-03-13 19:14:57 +01:00
Alvaro Muñoz
839d16cde5 Treat If's values as expression no matter the delimiters 2024-03-13 18:41:17 +01:00
Alvaro Muñoz
1bf2431c99 Improve UntrustedCheckout query
Account for more events, more triggers and heuristics to detect git checkouts
2024-03-13 15:41:57 +01:00
Asger F
ddf6eb3a04 JS: Quick fix to make DeduplicatePathGraph compile
There's an open PR for this where a real fix should be written
2024-03-13 15:24:53 +01:00
Asger F
8ecdb5cefe Update VariableCapture.qll 2024-03-13 15:24:20 +01:00
Asger F
82abd867a0 JS: Update uses of AccessPathSyntax
This doesn't yet migrate to the FlowSummaryImpl.qll in a qlpack, just trying to make things compile first
2024-03-13 15:17:58 +01:00
Asger F
e5bc8db2f0 JS: Fix conflicting default for visbleImplInCallContext 2024-03-13 15:17:08 +01:00
Asger F
bb1f729a3f Update VariableCapture.qll 2024-03-13 15:16:37 +01:00
Asger F
97567f412e JS: Update VariableCapture.qll after changes to API 2024-03-13 14:53:00 +01:00
Asger F
5e7d1d5c2c Merge branch 'main' into js/shared-dataflow-merged 2024-03-13 14:27:16 +01:00
Alvaro Muñoz
aa62603899 Merge pull request #29 from GitHubSecurityLab/clean
fix: clean debug lefovers
2024-03-13 13:50:11 +01:00
Alvaro Muñoz
0b71d02407 fix: clean debug lefovers 2024-03-13 13:49:50 +01:00
Asger F
fa8933eb41 JS: Reduce duplication in UnsafeDynamicMethodAccessQuery 2024-03-13 12:30:05 +01:00
Asger F
ea4bc9cdbb JS: Comment about manually applying taint steps 2024-03-13 12:30:05 +01:00
Asger F
406b080ce3 JS: Add comment about allowImplicitRead in PostMessageStar 2024-03-13 11:30:52 +01:00
Asger F
0a2050bc42 JS: Deduplicate predicate in HostHeaderPoisoningQuery 2024-03-13 11:27:18 +01:00
Asger F
11983faccf JS: Remove out-commented code 2024-03-13 11:26:56 +01:00
Asger F
b31f20a64e JS: Explain why ObjetWrapperFlowLabel is deprecated 2024-03-13 11:08:25 +01:00
Asger F
e0aae53ac7 JS: Remove unnecessary BarrierGuardLegacy class 2024-03-13 11:05:23 +01:00
Asger F
fce2be0af3 JS: Use BarrierGuardLegacy in TaintedPath 2024-03-13 11:02:09 +01:00
Asger F
e640154048 JS: Be backwards compatible with AdditionalBarrierGuardNode
I've confirmed that the 'legacyBarrier' predicate does not occur in the DIL
2024-03-13 10:54:02 +01:00
Asger F
14e75be510 JS: Expand comments and synthetic node name in ForOfLoops 2024-03-13 09:27:00 +01:00
Asger F
e66f27cfe3 JS: Move hasWildcardReplaceRegExp to a shared place 2024-03-13 09:19:26 +01:00
Asger F
4043bc13ab JS: Explicit mark comment as a TODO 2024-03-13 09:19:03 +01:00
Asger F
858c79e395 JS: Add plain taint step through Promise.all() 2024-03-13 08:57:42 +01:00
Asger F
13a8e0fbf0 JS: Add failing test for Promise.all() 2024-03-13 08:54:06 +01:00
Asger F
2c1aa08f79 JS: Rename Strings2 -> Strings 2024-03-12 21:18:14 +01:00
Asger F
478dd25f3e JS: Rename Sets2 -> Sets 2024-03-12 21:17:29 +01:00
Asger F
433489478d JS: Rename Promise2 -> Promise 2024-03-12 21:16:43 +01:00
Asger F
e2f3565227 JS: Rename Maps2 -> Maps 2024-03-12 21:14:29 +01:00
Asger F
b3fad7a8dc JS: Rename Iterators2 -> Iterators 2024-03-12 15:12:07 +01:00
Asger F
5aafd33cec JS: Rename Arrays2 -> Arrays 2024-03-12 15:11:29 +01:00
Asger F
76e0445af0 JS: Be consistent about caching in PreCallGraphStep 2024-03-12 15:08:59 +01:00
Asger F
28fc8ba0c1 JS: Remove EmptyType 2024-03-12 14:59:04 +01:00
Asger F
f94aa2ceec Update javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll 2024-03-12 14:41:11 +01:00
Alvaro Muñoz
37331c3d43 Merge pull request #28 from GitHubSecurityLab/new_ast_refactor
Refactor ast nodes
2024-03-12 10:17:34 +01:00
Alvaro Muñoz
9b97dbd870 Refactor ast nodes 2024-03-12 10:16:43 +01:00
Alvaro Muñoz
86075c95bd Improve ExpressionNode Location handling 2024-03-07 22:28:54 +01:00
Alvaro Muñoz
4f7cce9c11 Merge pull request #27 from GitHubSecurityLab/refactor_astnode
Add Expression nodes and locations
2024-03-07 15:36:54 +01:00
Alvaro Muñoz
96246f4b74 Add Expression nodes and their corresponding locations 2024-03-07 15:35:47 +01:00
Alvaro Muñoz
e5527d7a18 Refactor ast nodes 2024-03-05 19:59:43 +01:00
Alvaro Muñoz
b3cecfc7e8 Merge pull request #26 from GitHubSecurityLab/refactor_ast
Refactor AST layer
2024-03-04 17:39:56 +01:00
Alvaro Muñoz
c8e89797eb remove test db 2024-03-04 15:43:38 +01:00
Alvaro Muñoz
6875640c64 Refactor getXXXExpr methods 2024-03-04 10:33:26 +01:00
Alvaro Muñoz
1c2f19f4e1 Merge Actions.qll and Ast.qll 2024-03-01 16:06:06 +01:00
Alvaro Muñoz
bcf3081259 Refactor Input/Outpts 2024-03-01 11:17:23 +01:00
Alvaro Muñoz
0eabdd9507 Rename classes 2024-03-01 09:44:33 +01:00
Alvaro Muñoz
e979f51956 Merge pull request #25 from GitHubSecurityLab/add_tests
test: Add tests
2024-02-29 13:47:57 +01:00
Alvaro Muñoz
6b11506abb test: Add tests 2024-02-29 13:23:59 +01:00
Alvaro Muñoz
cbe43bf72b Merge pull request #24 from GitHubSecurityLab/matrix_ctx
matrix ctx
2024-02-29 12:08:20 +01:00
Alvaro Muñoz
5b40d98849 Update test db build script 2024-02-28 14:36:21 +01:00
Alvaro Muñoz
8a9ec88b36 feat(matrix): Add support for flow through matrix vars 2024-02-28 13:21:29 +01:00
Alvaro Muñoz
447b65e7a9 Add script to build full DBs (testproj ones remove source code origin) 2024-02-28 12:37:41 +01:00
Alvaro Muñoz
8e7e5d03a5 fix(test): Add expected files 2024-02-28 11:15:38 +01:00
Mathew Payne
409d35ba1f Merge pull request #23 from GitHubSecurityLab/IAC_queries
feat(queries): Migrate queries from AdvancedSecurity repo
2024-02-27 20:11:12 +00:00
Alvaro Muñoz
fe976faf6a feat(queries): Migrate queries from AdvancedSecurity repo 2024-02-27 15:20:35 +01:00
Alvaro Muñoz
c29f3a7779 Merge pull request #21 from GitHubSecurityLab/refactor_env_access
refactor env access
2024-02-26 13:02:33 +01:00
Alvaro Muñoz
98f3a1e7bf fix(env): Improve env access support 2024-02-26 10:43:55 +01:00
Alvaro Muñoz
645177cc80 Account for github.event.label check as a sanitizer for untrusted checkout 2024-02-26 09:39:42 +01:00
Alvaro Muñoz
1458434504 Merge branch 'master' of https://github.com/GitHubSecurityLab/codeql-actions 2024-02-23 11:54:41 +01:00
Alvaro Muñoz
f513a19c24 fix: restrict EnvCtxAccessExpr to Env decarlations on the same file 2024-02-23 11:53:47 +01:00
Alvaro Muñoz
f5355e722d Merge pull request #20 from GitHubSecurityLab/untrusted_checkout 2024-02-22 15:52:08 +01:00
Alvaro Muñoz
68f15f2b85 rename query id 2024-02-22 13:14:53 +01:00
Alvaro Muñoz
ecefb7ffb5 feat(untrusted checkout query): Add new query and tests 2024-02-22 13:12:37 +01:00
Alvaro Muñoz
d0b904a590 Fix QLpack names 2024-02-21 21:57:45 +01:00
Alvaro Muñoz
7a1369d9d0 Merge pull request #19 from GitHubSecurityLab/steps 2024-02-21 18:38:44 +01:00
Jorge
9e2be7d674 Apply suggestions from code review
Co-authored-by: Alvaro Muñoz <pwntester@github.com>
2024-02-21 17:27:39 +01:00
Alvaro Muñoz
d6f6e1fc0b Merge pull request #18 from GitHubSecurityLab/triggers
feat(triggers): New query and support for trigger-based severity decisions
2024-02-21 16:51:16 +01:00
Alvaro Muñoz
3d5567d698 Update ql/lib/codeql/actions/Ast.qll
Co-authored-by: Jorge <46056498+jorgectf@users.noreply.github.com>
2024-02-21 16:50:44 +01:00
Alvaro Muñoz
a28f8e90f0 Update ql/lib/ext/tj-actions_branch-names.model.yml 2024-02-21 16:50:33 +01:00
Jorge
3ca7adab4f Merge branch 'master' into steps 2024-02-21 15:31:42 +01:00
jorgectf
e1d6c7dac4 Add some steps 2024-02-21 15:29:27 +01:00
Alvaro Muñoz
a2b0a01298 fix: fix merge conflict 2024-02-21 10:57:51 +01:00
Alvaro Muñoz
ea29a09fd7 feat(triggers): New query for critical issues
Adds a new query and the required changes to be able to account for the trigger events so that we dont report issues if they are not likely exploitable.
2024-02-21 10:56:17 +01:00
Alvaro Muñoz
3aa4f7f1af feat(triggers): Add getEnclosingWorkflowStmt to Statement class 2024-02-21 10:56:17 +01:00
Alvaro Muñoz
3814462266 feat(triggers): New query for critical issues
Adds a new query and the required changes to be able to account for the trigger events so that we dont report issues if they are not likely exploitable.
2024-02-21 10:23:37 +01:00
Alvaro Muñoz
4b9cec79dc Merge pull request #17 from GitHubSecurityLab/reusable_workflow_models
feat(reusable-workflow-models): Reusable workflow MaD
2024-02-21 10:20:40 +01:00
Alvaro Muñoz
a2210dca79 feat(triggers): Add getEnclosingWorkflowStmt to Statement class 2024-02-20 21:48:29 +01:00
Alvaro Muñoz
c84e64e76c Merge pull request #16 from GitHubSecurityLab/model-gen-queries
feat(model-generation): Add more model generation queries
2024-02-20 12:05:12 +01:00
Alvaro Muñoz
010d7df71d feat(reusable-workflow-models): Reusable workflow MaD
Add support to define sources/sinks/summaries for Reusable Workflows as
MaD entries.
2024-02-20 11:58:54 +01:00
Alvaro Muñoz
1d582a4c4d feat(model-generation): Add more model generation queries
Add new queries for finding reusable workflows that behave as summaries, sources or sinks.
Add new query for finding composite actions that behave as sinks.
Add `github.event.inputs` context to the regular expression matching input var accesses.
2024-02-20 10:50:02 +01:00
jorgectf
334fda18ba Fix copy workflow 2024-02-16 16:39:40 +01:00
Jorge
5cb9c21e05 Fetch before push 2024-02-16 16:06:05 +01:00
Alvaro Muñoz
55ff6ff8ee Merge pull request #15 from GitHubSecurityLab/copy-workflow
Add copy workflow
2024-02-16 16:05:08 +01:00
Alvaro Muñoz
7c3503e6c7 fix: remove debug leftovers 2024-02-16 16:03:38 +01:00
Jorge
4e44444d5a Add copy workflow 2024-02-16 16:03:01 +01:00
Alvaro Muñoz
43a55e80a9 feat(model-generator): New qls for modelling composite actions 2024-02-16 16:02:10 +01:00
Alvaro Muñoz
8ae1e26d5d fix(action): qls reference 2024-02-16 15:49:29 +01:00
Alvaro Muñoz
76f245b337 feat(actions): use published actions packs 2024-02-16 15:34:20 +01:00
Alvaro Muñoz
8e59fb7558 fix(actions): ql pack installation 2024-02-16 14:47:34 +01:00
Alvaro Muñoz
003b8cc8c0 fix(actions): ql pack installation 2024-02-16 14:44:47 +01:00
Alvaro Muñoz
13c5ec07b4 fix(actions): ql pack installation 2024-02-16 14:41:47 +01:00
Alvaro Muñoz
b3bab160d2 fix(actions): ql pack installation 2024-02-16 14:41:21 +01:00
Alvaro Muñoz
41639dd0e2 fix(actions): ql pack installation 2024-02-16 14:37:43 +01:00
Alvaro Muñoz
b11d8dad49 fix(actions): ql pack installation 2024-02-16 14:31:07 +01:00
Alvaro Muñoz
04a2ae9ad3 fix(actions): ql pack installation 2024-02-16 14:29:03 +01:00
Alvaro Muñoz
a94793fc09 fix(actions): pass the qlpack dirs 2024-02-16 14:14:53 +01:00
Alvaro Muñoz
e9f3006204 fix(actions): pass the qlpack dirs 2024-02-16 14:10:52 +01:00
Alvaro Muñoz
c58c4e0d54 feat(actions): refactor as composite action to be able to pass env vars 2024-02-16 14:06:46 +01:00
Alvaro Muñoz
e2699c31f8 feat(action): clone and install local packs 2024-02-16 13:56:58 +01:00
Alvaro Muñoz
959a974c8b feat(action): clone pack (not use the registry) 2024-02-16 13:32:05 +01:00
Alvaro Muñoz
5d1264d3a4 feat(action): update references to qlpacks 2024-02-16 12:56:06 +01:00
Alvaro Muñoz
cf4ab41df2 feat(action): rename qlpacks to use githubsecuritylab prefix 2024-02-16 12:32:48 +01:00
Alvaro Muñoz
0105d63a44 Add Action to scan repos 2024-02-16 12:25:23 +01:00
Alvaro Muñoz
f5c6905a50 Merge pull request #13 from GitHubSecurityLab/github_ctx
Improve regexs
2024-02-15 12:03:33 +01:00
Alvaro Muñoz
499c3e7ac3 Improve regexs 2024-02-15 12:03:06 +01:00
Alvaro Muñoz
65b226d36e Merge pull request #12 from GitHubSecurityLab/ctx_expressions
feat(bash-step): Improve bash step accuracy
2024-02-15 11:52:18 +01:00
Alvaro Muñoz
1cd32195a7 feat(bash-step): Improve bash step accuracy
Only pass the taint when the env var is directlty set as the step output
2024-02-15 11:51:28 +01:00
Alvaro Muñoz
0f73080a7b Merge pull request #11 from GitHubSecurityLab/fix_composite_actions
feat(composite-actions): Fix summary and source queries for composite actions analysis
2024-02-14 18:11:12 +01:00
Alvaro Muñoz
3c12e43d3f feat(composite-actions): Fix summary and source queries for composite actions analysis 2024-02-14 18:09:12 +01:00
Alvaro Muñoz
700882730c Merge pull request #10 from GitHubSecurityLab/job_outputs
feat(field-flow): Refactor flow through job outputs
2024-02-14 17:14:09 +01:00
Alvaro Muñoz
f65587e5cf feat(fieldflow): Refactor flow through Job outputs
Job output should flow to the “key” (YamlString) and be read from there
from the JobOutputAccessExpr.

- NeedsCtxAccessExpr.getRefExpr should point to the UsesExpr(RW calling Job)
  or to the OutputsStmt(Regular Job).
- JobsCtxAccessExpr.getRefExpr should point to the OutputsStmt(Regular Job).
- Create storeStep from OutputExpr to OutputStmt using output var name
  as the field name.
- Create a readStep for CtxAccessExpr to read the referenced fields from
  the job outputs.
2024-02-14 17:08:13 +01:00
Alvaro Muñoz
90d1ae4a05 fix: simplify Ast 2024-02-14 14:06:28 +01:00
Alvaro Muñoz
494fb2470e fix: refactor local, read and store steps 2024-02-14 14:05:13 +01:00
Alvaro Muñoz
ebaac5f5cb fix: enforce input,output,env prefixes in MaD 2024-02-14 14:03:11 +01:00
Alvaro Muñoz
7139d3b6d2 Merge pull request #8 from GitHubSecurityLab/changed-files-sources
Add some changed-files sources
2024-02-14 10:56:20 +01:00
Alvaro Muñoz
2b3b3732b9 resolve conflicts 2024-02-14 10:55:31 +01:00
Alvaro Muñoz
6b83afebaa Merge pull request #9 from GitHubSecurityLab/content_set
feat(field-flow): enhance dataflow tracking
2024-02-14 10:49:11 +01:00
Alvaro Muñoz
e6b4676f90 feat(field-flow): enhance dataflow tracking
implement field flow to reduce false positives
2024-02-14 10:47:00 +01:00
jorgectf
29b3d6c9ef Prefix sources with output. 2024-02-13 15:00:53 +01:00
jorgectf
6627a858e3 Suffix with .model 2024-02-13 13:24:25 +01:00
jorgectf
fa91837f63 Trim yaml 2024-02-13 13:22:18 +01:00
jorgectf
68901e252c Add some changed-files sources 2024-02-13 13:18:52 +01:00
Alvaro Muñoz
32b1d77b4a Merge pull request #7 from GitHubSecurityLab/input_output_nodes
Better handling of input and output expressions
2024-02-13 11:52:10 +01:00
Alvaro Muñoz
271c512f4d better identification of Composite Actions input and output nodes 2024-02-13 11:40:22 +01:00
Alvaro Muñoz
cc3f2eed68 add characteristic predicates to InputExpr and OutputExpr 2024-02-13 11:24:16 +01:00
Alvaro Muñoz
3c5358c381 Merge pull request #6 from GitHubSecurityLab/composite_actions
feat: support for composite action's analysis
2024-02-12 22:57:31 +01:00
Alvaro Muñoz
e9707af38d feat: support for composite action's analysis 2024-02-12 22:55:58 +01:00
Alvaro Muñoz
9030cb3df4 Merge pull request #5 from GitHubSecurityLab/env_context
Implement support for env context
2024-02-12 15:48:37 +01:00
Alvaro Muñoz
99358c62e2 Extend CFG to reach env expressions 2024-02-12 15:47:27 +01:00
Alvaro Muñoz
70d1741177 Merge pull request #4 from GitHubSecurityLab/improve_mad
Refactor MaD semantics
2024-02-12 15:46:50 +01:00
Alvaro Muñoz
4b57cee300 Initial implementaion of env context support 2024-02-12 15:14:47 +01:00
Alvaro Muñoz
4f0b66ea03 Refactor MaD semantics 2024-02-12 13:47:44 +01:00
Alvaro Muñoz
f2fc411d6b Merge pull request #3 from GitHubSecurityLab/extensible_predicates
Add support for external definitions
2024-02-09 22:59:23 +01:00
Alvaro Muñoz
2eaca7e826 Add support for external definitions 2024-02-09 22:55:10 +01:00
Alvaro Muñoz
e9c1114f98 Merge pull request #2 from GitHubSecurityLab/refactor_cfgscope
Refactor CfgScopes and Ast predicate names
2024-02-09 13:48:29 +01:00
Alvaro Muñoz
b54316fc9a Refactor CfgScopes and Ast predicate names 2024-02-09 13:35:47 +01:00
Alvaro Muñoz
9c6fd20e5e Move reusable tests to src pack 2024-02-09 12:29:48 +01:00
Alvaro Muñoz
96e41bb043 Merge pull request #1 from GitHubSecurityLab/reusable_workflows
Add support for Reusable workflows
2024-02-09 12:28:17 +01:00
Alvaro Muñoz
3152ed71ba dataflow through reusable workflows 2024-02-09 11:57:47 +01:00
Alvaro Muñoz
9659098ab6 Support for Reusable workflows 2024-02-08 15:40:06 +01:00
Alvaro Muñoz
db413361f7 Add Reusable Workflow test 2024-02-08 15:11:39 +01:00
Alvaro Muñoz
5006ffe203 Use the LibYaml default AST hierarchy 2024-02-08 12:01:41 +01:00
Alvaro Muñoz
83ca36bc76 Support RunExpr's env vars 2024-02-08 11:56:55 +01:00
Alvaro Muñoz
1708e0f19d Move tests files to .github/workflows 2024-02-08 11:55:21 +01:00
Alvaro Muñoz
da2ac2af03 Process only .github/workflows yaml files 2024-02-08 11:52:14 +01:00
Alvaro Muñoz
0398fbd0d7 Refactor AST layer 2024-02-05 18:04:37 +01:00
Alvaro Muñoz
b3eae71f95 fix test 2024-02-05 13:30:46 +01:00
Alvaro Muñoz
3902a55fbb Update build test db script 2024-02-05 10:52:17 +01:00
Alvaro Muñoz
b57e6b41a3 Add testproj to gitignore 2024-02-05 10:48:53 +01:00
Alvaro Muñoz
093b1a2211 Remove test dbs 2024-02-05 10:45:52 +01:00
Alvaro Muñoz
355ccf42ee Do not compress local flow steps
Use `neverSkipPathGrap` to `any()` so no local flow steps get pruned
and thrown away in order to compress the presented dataflow path.
2024-02-05 10:44:37 +01:00
Alvaro Muñoz
45d959d13f Initial implementation 2024-02-05 09:26:11 +01:00
Alvaro Muñoz
70a7bb1f75 Add .gitignore 2024-02-05 09:25:33 +01:00
Kevin Stubbings
8277c602ac depstubber 2023-11-21 14:31:52 -08:00
Kevin Stubbings
d7e2fbc11d Finish 2023-11-21 14:27:17 -08:00
Kevin Stubbings
9958ad904c thesame 2023-11-20 23:40:55 -08:00
Kevin Stubbings
28288e0d23 basic2 2023-11-20 23:40:55 -08:00
Kevin Stubbings
3b78477406 Basics 2023-11-20 23:40:55 -08:00
Asger F
a02ab2ad88 JS: Port heuristic versions of standard queries 2023-10-13 13:15:08 +02:00
Asger F
3c7c5377ec JS: Add content approximation
This seems to fix a performance issue for RegExpInjection in angular
2023-10-13 13:15:08 +02:00
Asger F
5775fe6d6e JS: Use TAnyType in FlowSummaryPrivate 2023-10-13 13:15:08 +02:00
Asger F
9faf300dd0 JS: Use type-pruning to restrict callback flow 2023-10-13 13:15:08 +02:00
Asger F
e738b5d125 JS: Expand callback test case
Type-based pruning is confused by the different tests being interleaved, so we additionally want to have a test that is independent from the other parts of this test.
2023-10-13 13:15:08 +02:00
Asger F
d3f5169e66 JS: Lower field-flow branch limit on Polynomial ReDoS 2023-10-13 13:15:08 +02:00
Asger F
51dec79401 JS: Lower access path limit to 2 2023-10-13 13:15:08 +02:00
Asger F
24bab27ffe JS: Add TODO for dynamic import step 2023-10-13 13:15:08 +02:00
Asger F
7c5eb89491 JS: Add tests for captured 'this' (genuine FN) 2023-10-13 13:15:08 +02:00
Asger F
98c79e7674 JS: Update test output showing lack of global flow (geniune FN) 2023-10-13 13:15:08 +02:00
Asger F
9b46c4596c JS: Update HeuristicSoruceCodeInjection test 2023-10-13 13:15:08 +02:00
Asger F
bab639f23c JS: Update ReflectedXssWithCustomSanitizer test 2023-10-13 13:15:08 +02:00
Asger F
85e8998067 JS: Update ImportEquals test 2023-10-13 13:15:08 +02:00
Asger F
2eff07f476 JS: Update TaintTracking test 2023-10-13 13:15:08 +02:00
Asger F
b5ad36686e JS: Block flow into window.location 2023-10-13 13:15:08 +02:00
Asger F
75c915b2a3 JS: Update Spife test 2023-10-13 13:15:07 +02:00
Asger F
c2f66c0f93 JS: Update Restify2 test 2023-10-13 13:15:07 +02:00
Asger F
b304fb4337 JS: Reorder result sets in ReactJS test output 2023-10-13 13:15:07 +02:00
Asger F
32eddd3c07 JS: Update ReactJS test output 2023-10-13 13:15:07 +02:00
Asger F
b8a0afbb9f JS: Make overriding ConsistencyChecking.getATestFile() optional 2023-10-13 13:15:07 +02:00
Asger F
6c9f4a10ac JS: Port TaintBarriers test 2023-10-13 13:15:07 +02:00
Asger F
e5946bf43b JS: Port HeuristicSource test 2023-10-13 13:15:07 +02:00
Asger F
771519bbc5 JS: Port Routing test 2023-10-13 13:15:07 +02:00
Asger F
2364bd84e0 JS: Fix whitespace in a test (trivial change) 2023-10-13 13:15:07 +02:00
Asger F
98d1bb3826 JS: Reorder result sets in a test (trivial change) 2023-10-13 13:15:07 +02:00
Asger F
81bd292a16 JS: Port Promises test
Result changes are benign
2023-10-13 13:15:07 +02:00
Asger F
dd8a24c6c0 JS: Port LabelledBarrierGuards test 2023-10-13 13:15:07 +02:00
Asger F
458f0a077c JS: Port InterProceduralFlow test
All the new results are benign
2023-10-13 13:15:07 +02:00
Asger F
0d10aba67d Revert "JS: Add global post-update steps"
This resulted in huge performance issues from too much global flow
2023-10-13 13:15:07 +02:00
Asger F
50aace3fa3 JS: Add global post-update steps 2023-10-13 13:15:07 +02:00
Asger F
9372f7993d JS: Update Generators test
Data flow difference is benign
2023-10-13 13:15:07 +02:00
Asger F
995df41532 JS: Update Vuex test 2023-10-13 13:15:07 +02:00
Asger F
3983530983 JS: Update Templating/Xss test 2023-10-13 13:15:07 +02:00
Asger F
b9344134d3 JS: Update Redux test 2023-10-13 13:15:07 +02:00
Asger F
d2053445a7 JS: Update frameworks/PropertyProjection test 2023-10-13 13:15:07 +02:00
Asger F
2eec47b52c JS: Update frameworks/Next test 2023-10-13 13:15:07 +02:00
Asger F
644f9683b1 JS: Update frameworks/immutable test 2023-10-13 13:15:07 +02:00
Asger F
a2d4a03c0e JS: Update framework/data test 2023-10-13 13:15:06 +02:00
Asger F
6600fe9d51 JS: Port ComposedFunctions test 2023-10-13 13:15:06 +02:00
Asger F
09892279e6 JS: Port Collections test 2023-10-13 13:15:06 +02:00
Asger F
466ffdf8f5 JS: Port AsyncTaintTracking test 2023-10-13 13:15:06 +02:00
Asger F
09b0ba0c1f JS: Port Angular2 test 2023-10-13 13:15:06 +02:00
Asger F
92812eee78 JS: Add test for flow summaries 2023-10-13 13:15:06 +02:00
Asger F
af05789cbf JS: Remove noise from data flow test 2023-10-13 13:15:06 +02:00
Asger F
c652470e2f JS: Do not port CustomLoadStoreStep test 2023-10-13 13:15:06 +02:00
Asger F
1a95961bac JS: Port Classes test 2023-10-13 13:15:06 +02:00
Asger F
9a15a557b4 JS: Port SimpleBarrierGuard test 2023-10-13 13:15:06 +02:00
Asger F
ff086377cb JS: Port Arrays test 2023-10-13 13:15:06 +02:00
Asger F
d35959a098 JS: Add utility for comparing results in tests 2023-10-13 13:15:06 +02:00
Asger F
43be45207d JS: Port meta queries 2023-10-13 13:15:06 +02:00
Asger F
c55300d4b0 JS: Port PolynomialReDoS 2023-10-13 13:15:06 +02:00
Asger F
b8847dbc5d JS: Port Xxe 2023-10-13 13:15:06 +02:00
Asger F
c2d170b4fd JS: Port XpathInjection 2023-10-13 13:15:06 +02:00
Asger F
03f8c0fc5e JS: Port XmlBomb 2023-10-13 13:15:06 +02:00
Asger F
83095535f9 JS: Port UnvalidatedDynamicMethodCall 2023-10-13 13:15:06 +02:00
Asger F
ba9edb4e54 JS: Port UnsafeShellCommandConstruction 2023-10-13 13:15:06 +02:00
Asger F
d08e4504ff JS: Port UnsafeJQueryPlugin 2023-10-13 13:15:06 +02:00
Asger F
6e3f4bd7d8 JS: Port UnsafeHtmlConstruction 2023-10-13 13:15:06 +02:00
Asger F
7f4d42ddcd JS: Port UnsafeDynamicMethodAccess 2023-10-13 13:15:06 +02:00
Asger F
758f42495c JS: Port UnsafeDeserialization 2023-10-13 13:15:05 +02:00
Asger F
32022ccbda JS: Port UnsafeCodeConstruction 2023-10-13 13:15:05 +02:00
Asger F
5af608c937 JS: Port TypeConfusionThroughParameterTampering 2023-10-13 13:15:05 +02:00
Asger F
25962a9ba6 JS: Port TemplateObjectInjection 2023-10-13 13:15:05 +02:00
Asger F
51624c02a2 JS: Port TaintedFormatString 2023-10-13 13:15:05 +02:00
Asger F
63343b1ba4 JS: Port StackTraceExposure 2023-10-13 13:15:05 +02:00
Asger F
d446444667 JS: Port ShellCommandInjectionFromEnvironment 2023-10-13 13:15:05 +02:00
Asger F
06835a800c JS: Port SecondOrderCommandInjection 2023-10-13 13:15:05 +02:00
Asger F
4af7694309 JS: Port ResourceExhaustion 2023-10-13 13:15:05 +02:00
Asger F
b9bd0520e2 JS: Port RemotePropertyInjection 2023-10-13 13:15:05 +02:00
Asger F
dcc73a7f90 JS: Port RegExpInjection 2023-10-13 13:15:05 +02:00
Asger F
2400af4bc3 JS: Port PostMessageStar 2023-10-13 13:15:05 +02:00
Asger F
e1fae3d16d JS: Port InsufficientPasswordHash 2023-10-13 13:15:05 +02:00
Asger F
fd98b2546d JS: Port InsecureTemporaryFile 2023-10-13 13:15:05 +02:00
Asger F
cd1a1e25ae JS: Port InsecureRandomness 2023-10-13 13:15:05 +02:00
Asger F
99f63b1cfa JS: Port InsecureDownload 2023-10-13 13:15:05 +02:00
Asger F
8c001916b6 JS: Port IndirectCommandInjection 2023-10-13 13:15:05 +02:00
Asger F
e3ab5bdd16 JS: Port IncompleteHtmlAttributeSanitization 2023-10-13 13:15:05 +02:00
Asger F
9128722627 JS: Port ImproperCodeSanitization 2023-10-13 13:15:05 +02:00
Asger F
8715c1b324 JS: Port HostHeaderPoisoningInEmailGeneration 2023-10-13 13:15:05 +02:00
Asger F
bc88f50a5f JS: Port HardcodedDataInterpretedAsCode 2023-10-13 13:15:04 +02:00
Asger F
4bac90252c JS: Port HardcodedCredentials 2023-10-13 13:15:04 +02:00
Asger F
f4d62c3225 JS: Port HttpToFileAccess 2023-10-13 13:15:04 +02:00
Asger F
2935aac559 JS: Port FileAccessToHttp 2023-10-13 13:15:04 +02:00
Asger F
8e95a90d03 JS: Port UntrustedDataToExternalAPI 2023-10-13 13:15:04 +02:00
Asger F
abd937a49d JS: Port DifferentKindsComparisonBypass 2023-10-13 13:15:04 +02:00
Asger F
d324e554f3 JS: Port DeepObjectResourceExhaustion 2023-10-13 13:15:04 +02:00
Asger F
30f1fbc10d JS: Port CorsMisconfigurationForCredentials 2023-10-13 13:15:04 +02:00
Asger F
f14303acea JS: Port ConditionalBypass 2023-10-13 13:15:04 +02:00
Asger F
2296a273c4 JS: Port BuildArtifactLeak 2023-10-13 13:15:04 +02:00
Asger F
85617c292e JS: Port BrokenCryptoAlgorithm 2023-10-13 13:15:04 +02:00
Asger F
395f52303c JS: Port barriers in UrlConcatenation.qll 2023-10-13 13:15:04 +02:00
Asger F
7a1aead831 JS: Port ZipSlip 2023-10-13 13:15:04 +02:00
Asger F
e9189f965f JS: Port LogInjection 2023-10-13 13:15:04 +02:00
Asger F
ae680e747b JS: Port LoopBoundInjection 2023-10-13 13:15:04 +02:00
Asger F
40d68cb4dc JS: Port CleartextStorage 2023-10-13 13:15:04 +02:00
Asger F
b8a6f81669 JS: Port CleartextLogging 2023-10-13 13:15:04 +02:00
Asger F
a5c221fcfc JS: Port PrototypePollutingMergeCall 2023-10-13 13:15:04 +02:00
Asger F
adf7d5409d JS: Port PrototypePollutingFunction 2023-10-13 13:15:04 +02:00
Asger F
f1f45927b1 JS: Port PrototypePollutingAssignment 2023-10-13 13:15:04 +02:00
Asger F
81d2721248 JS: Port ClientSideUrlRedirect 2023-10-13 13:15:04 +02:00
Asger F
46fd727a55 JS: Port ServerSideUrlRedirect 2023-10-13 13:15:04 +02:00
Asger F
92816b1c9a JS: Port ClientSideRequestForgery 2023-10-13 13:15:03 +02:00
Asger F
b2216627be JS: Port RequestForgery 2023-10-13 13:15:03 +02:00
Asger F
d7b4e0c206 JS: Port ExceptionXss 2023-10-13 13:15:03 +02:00
Asger F
cf5450dbd5 JS: Port XssThroughDom 2023-10-13 13:15:03 +02:00
Asger F
5f05232e02 JS: Port StoredXss 2023-10-13 13:15:03 +02:00
Asger F
46b90e51fc JS: Port ReflectedXss 2023-10-13 13:15:03 +02:00
Asger F
e091fdefa4 JS: Port DomBasedXss 2023-10-13 13:15:03 +02:00
Asger F
2818fa62d6 JS: Updates to shared Xss.qll 2023-10-13 13:15:03 +02:00
Asger F
547a8a958a JS: Port SqlInjection 2023-10-13 13:15:03 +02:00
Asger F
65e9706c8e JS: Port TaintedPath 2023-10-13 13:15:03 +02:00
Asger F
fcfab5238e JS: Port CodeInjection 2023-10-13 13:15:03 +02:00
Asger F
17233a6749 JS: Port CommandInjection 2023-10-13 13:15:03 +02:00
Asger F
ccd6d3dcd7 JS: Port example queries 2023-10-13 13:15:03 +02:00
Asger F
449ec72dbe JS: Port experimental queries 2023-10-13 13:15:03 +02:00
Asger F
aa5a2836f5 JS: Update barriers in TaintedObject 2023-10-13 13:15:03 +02:00
Asger F
bc68b6a7f8 JS: Add AdHocWhitelistSanitizer::getABarrierNode()
This sanitizer guard is opt-in, i.e. not an AdditionalSanitizerGuardNode.
2023-10-13 13:15:03 +02:00
Asger F
26f7f94246 JS: Expose default taint steps/sanitizers
We need access to these in order to port taint-tracking configurations
where only some flow labels should use taint steps. This isn't supported
by the shared data flow library.

Such queries must therefore be converted to plain data-flow
configurations that explicitly add taint steps to the relevant flow
states.
2023-10-13 13:15:03 +02:00
Asger F
c924b4a220 JS: Expose shared API in DataFlow/TaintTracking modules 2023-10-13 13:15:03 +02:00
Asger F
1ed3235639 JS: use BarrierGuards 2023-10-13 13:15:03 +02:00
Asger F
277292e3b9 JS: Improve performance of barrier guards without pruning 2023-10-13 13:15:03 +02:00
Asger F
06fd9c2359 JS: Add barrier guard library 2023-10-13 13:14:43 +02:00
Asger F
46e4cdc623 JS: Disallow consecutive captured contents 2023-10-13 13:14:43 +02:00
Asger F
7bcf8b858b JS: Capture flow 2023-10-13 13:14:43 +02:00
Asger F
16df2c31bb Create DataFlowImplConsistency.qll 2023-10-13 12:42:41 +02:00
Asger F
3ef478669b JS: Collapse some cached stages 2023-10-13 12:42:41 +02:00
Asger F
9fef8803ed JS: Avoid BarrierGuardNode's range from depending on Configuration 2023-10-13 12:42:41 +02:00
Asger F
e31ae3a1bf JS: Model JSON.stringify with "deep" read operators 2023-10-13 12:42:41 +02:00
Asger F
0c2e52baba JS: Summary/steps for iterators and generators 2023-10-13 12:42:41 +02:00
Asger F
da3a0de814 JS: Port String#replace to flow summary 2023-10-13 12:42:41 +02:00
Asger F
f0c2afe39e JS: Add flow summaries for maps and sets 2023-10-13 12:42:40 +02:00
Asger F
5054c43b18 JS: Add flow summaries/steps for promises and async/await 2023-10-13 12:42:40 +02:00
Asger F
4319b07798 JS: Add flow summaries for Arrays 2023-10-13 12:42:40 +02:00
Asger F
a31e251529 JS: Add flow summaries for core methods 2023-10-13 12:42:40 +02:00
Asger F
46fec8ea7e JS: Add AdditionalFlowInternal
This provides access to more features than we want to expose publicly at the moment, but is useful for modelling certain language features.
2023-10-13 12:42:40 +02:00
Asger F
3f20d71a9b JS: Add legacy post-update step
This is to ensure getALocalSource() can be replaced by getPostUpdateNode() as the base of a store
2023-10-13 12:42:40 +02:00
Asger F
6037ff553c JS: Add LegacyPreUpdateStep
This contributes to both LegacyFlowStep and SharedTypeTrackingStep.

That is, this is for steps that are used by type-tracking and the old data flow library, but not the new data flow library.
2023-10-13 12:42:40 +02:00
Asger F
27c7d5004a JS: Do the same for additional taint steps 2023-10-13 12:42:40 +02:00
Asger F
1afe06e3a5 JS: Add "additional" and "legacy" steps
See the comment at the top of AdditionalFlowSteps.qll
2023-10-13 12:42:40 +02:00
Asger F
c24a0e00f5 JS: Move SharedTaintStep to AdditionalTaintSteps.qll
NOTE that this commit only moves around code. There are no changes.
2023-10-13 12:42:40 +02:00
Asger F
5bccc652c8 JS: Move SharedFlowStep to AdditionalFlowSteps.qll
NOTE that this commit only moves around code. There are no changes.
2023-10-13 12:42:40 +02:00
Asger F
293899d648 JS: Add 'Awaited' token 2023-10-13 12:42:40 +02:00
Asger F
32070abb27 JS: Implicitly treat array steps as taint steps 2023-10-13 12:42:40 +02:00
Asger F
60101f5e6a JS: Instantiate flow summary library 2023-10-13 12:42:40 +02:00
Asger F
8dc0800526 JS: Add the shared FlowSummaryImpl.qll file 2023-10-13 12:42:40 +02:00
Asger F
f316da78d2 JS: Add FunctionSelfReferenceNode 2023-10-13 12:42:40 +02:00
Asger F
760873c01c JS: Basic instantiation of shared library 2023-10-13 12:42:40 +02:00
Asger F
3455463e71 JS: Add instantiation boilerplate
Note that this commit won't compile on its own, but putting the boilerplate in its own commit
2023-10-13 12:42:40 +02:00
Asger F
c839822eb9 JS: Add PostUpdateNode 2023-10-13 12:42:40 +02:00
Asger F
01952f17bf JS: Add some missing getContainer() predicates 2023-10-13 12:42:40 +02:00
Asger F
21300eef4c JS:Add ConstructorThisArgumentNode 2023-10-13 12:42:40 +02:00
Asger F
b499c6075a JS: Add Contents.qll 2023-10-13 12:42:40 +02:00
Asger F
79e7aae9f6 JS: Add TEarlyStageNode 2023-10-13 12:42:39 +02:00
Asger F
51ef0e5836 JS: Move TNode into a cached module 2023-10-13 12:42:39 +02:00
Asger F
60b179bda2 Shared: add DeduplicatePathGraph
Note that there is a separate PR open with this library
2023-10-13 12:42:39 +02:00
9763 changed files with 534740 additions and 193554 deletions

View File

@@ -2,6 +2,9 @@ common --enable_platform_specific_config
# because we use --override_module with `%workspace%`, the lock file is not stable
common --lockfile_mode=off
# Build release binaries by default, can be overwritten to in local.bazelrc and set to `fastbuild` or `dbg`
build --compilation_mode opt
# when building from this repository in isolation, the internal repository will not be found at ..
# where `MODULE.bazel` looks for it. The following will get us past the module loading phase, so
# that we can build things that do not rely on that
@@ -9,6 +12,9 @@ common --override_module=semmle_code=%workspace%/misc/bazel/semmle_code_stub
build --repo_env=CC=clang --repo_env=CXX=clang++
# print test output, like sembuild does.
# Set to `errors` if this is too verbose.
test --test_output all
# we use transitions that break builds of `...`, so for `test` to work with that we need the following
test --build_tests_only
@@ -24,4 +30,13 @@ common --registry=https://bcr.bazel.build
common --@rules_dotnet//dotnet/settings:strict_deps=false
# Reduce this eventually to empty, once we've fixed all our usages of java, and https://github.com/bazel-contrib/rules_go/issues/4193 is fixed
common --incompatible_autoload_externally="+@rules_java,+@rules_shell"
build --java_language_version=17
build --tool_java_language_version=17
build --tool_java_runtime_version=remotejdk_17
build --java_runtime_version=remotejdk_17
build --@rules_python//python/config_settings:python_version=3.12
try-import %workspace%/local.bazelrc

View File

@@ -8,3 +8,5 @@ common --registry=https://bcr.bazel.build
# its implementation packages without providing any code itself.
# We either can depend on internal implementation details, or turn of strict deps.
common --@rules_dotnet//dotnet/settings:strict_deps=false
build --@rules_python//python/config_settings:python_version=3.12

View File

@@ -1 +1 @@
8.0.0rc1
8.1.1

View File

@@ -0,0 +1,7 @@
FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04
USER root
# Install needed packages according to https://codeql.github.com/docs/codeql-overview/system-requirements/
# most come from the base image, but we need to install some additional ones
RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y sudo man-db python3.12 npm unminimize
RUN yes | unminimize

View File

@@ -1,5 +1,4 @@
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04",
"extensions": [
"rust-lang.rust-analyzer",
"bungcip.better-toml",
@@ -8,6 +7,10 @@
"ms-vscode.test-adapter-converter",
"slevesque.vscode-zipexplorer"
],
"build": {
// Path is relative to the devcontainer.json file.
"dockerfile": "Dockerfile.codespaces"
},
"settings": {
"files.watcherExclude": {
"**/target/**": true

View File

@@ -1,9 +0,0 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.236.0/containers/cpp/.devcontainer/base.Dockerfile
# [Choice] Debian / Ubuntu version (use Debian 11, Ubuntu 18.04/22.04 on local arm64/Apple Silicon): debian-11, debian-10, ubuntu-22.04, ubuntu-20.04, ubuntu-18.04
FROM mcr.microsoft.com/vscode/devcontainers/cpp:0-ubuntu-22.04
USER root
ADD root.sh /tmp/root.sh
ADD update-codeql.sh /usr/local/bin/update-codeql
RUN bash /tmp/root.sh && rm /tmp/root.sh

View File

@@ -1,25 +0,0 @@
{
"extensions": [
"github.vscode-codeql",
"hbenl.vscode-test-explorer",
"ms-vscode.test-adapter-converter",
"slevesque.vscode-zipexplorer",
"ms-vscode.cpptools"
],
"settings": {
"files.watcherExclude": {
"**/target/**": true
},
"codeQL.runningQueries.memory": 2048
},
"build": {
"dockerfile": "Dockerfile",
},
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
"remoteUser": "vscode",
"onCreateCommand": ".devcontainer/swift/user.sh"
}

View File

@@ -1,34 +0,0 @@
set -xe
BAZELISK_VERSION=v1.12.0
BAZELISK_DOWNLOAD_SHA=6b0bcb2ea15bca16fffabe6fda75803440375354c085480fe361d2cbf32501db
# install git lfs apt source
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
# install gh apt source
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y install --no-install-recommends \
zlib1g-dev \
uuid-dev \
python3-distutils \
python3-pip \
bash-completion \
git-lfs \
gh
# Install Bazel
curl -fSsL -o /usr/local/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/${BAZELISK_VERSION}/bazelisk-linux-amd64
echo "${BAZELISK_DOWNLOAD_SHA} */usr/local/bin/bazelisk" | sha256sum --check -
chmod 0755 /usr/local/bin/bazelisk
ln -s bazelisk /usr/local/bin/bazel
# install latest codeql
update-codeql

View File

@@ -1,20 +0,0 @@
#!/bin/bash -e
URL=https://github.com/github/codeql-cli-binaries/releases
LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' $URL/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
CURRENT_VERSION=v$(codeql version 2>/dev/null | sed -ne 's/.*release \([0-9.]*\)\./\1/p')
if [[ $CURRENT_VERSION != $LATEST_VERSION ]]; then
if [[ $UID != 0 ]]; then
echo "update required, please run this script with sudo:"
echo " sudo $0"
exit 1
fi
ZIP=$(mktemp codeql.XXXX.zip)
curl -fSqL -o $ZIP $URL/download/$LATEST_VERSION/codeql-linux64.zip
unzip -q $ZIP -d /opt
rm $ZIP
ln -sf /opt/codeql/codeql /usr/local/bin/codeql
echo installed version $LATEST_VERSION
else
echo current version $CURRENT_VERSION is up-to-date
fi

View File

@@ -1,15 +0,0 @@
set -xe
git lfs install
# add the workspace to the codeql search path
mkdir -p /home/vscode/.config/codeql
echo "--search-path /workspaces/codeql" > /home/vscode/.config/codeql/config
# create a swift extractor pack with the current state
cd /workspaces/codeql
bazel run swift/create-extractor-pack
#install and set up pre-commit
python3 -m pip install pre-commit --no-warn-script-location
$HOME/.local/bin/pre-commit install

3
.gitattributes vendored
View File

@@ -86,4 +86,5 @@
/misc/ripunzip/ripunzip-* filter=lfs diff=lfs merge=lfs -text
# swift prebuilt resources
/swift/third_party/resource-dir/*.zip filter=lfs diff=lfs merge=lfs -text
/swift/third_party/resources/*.zip filter=lfs diff=lfs merge=lfs -text
/swift/third_party/resources/*.tar.zst filter=lfs diff=lfs merge=lfs -text

View File

@@ -4,10 +4,13 @@ queries:
- uses: security-and-quality
paths-ignore:
- '/actions/ql/test'
- '/cpp/'
- '/java/'
- '/python/'
- '/javascript/ql/test'
- '/javascript/ql/integration-tests'
- '/javascript/extractor/tests'
- '/rust/ql/test'
- '/rust/ql/integration-tests'
- '/javascript/extractor/parser-tests'
- '/javascript/ql/src/'
- '/rust/ql'

View File

@@ -1,14 +0,0 @@
### Pull Request checklist
#### All query authors
- [ ] A change note is added if necessary. See [the documentation](https://github.com/github/codeql/blob/main/docs/change-notes.md) in this repository.
- [ ] All new queries have appropriate `.qhelp`. See [the documentation](https://github.com/github/codeql/blob/main/docs/query-help-style-guide.md) in this repository.
- [ ] QL tests are added if necessary. See [Testing custom queries](https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries) in the GitHub documentation.
- [ ] New and changed queries have correct query metadata. See [the documentation](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md) in this repository.
#### Internal query authors only
- [ ] Autofixes generated based on these changes are valid, only needed if this PR makes significant changes to `.ql`, `.qll`, or `.qhelp` files. See [the documentation](https://github.com/github/codeql-team/blob/main/docs/best-practices/validating-autofix-for-query-changes.md) (internal access required).
- [ ] Changes are validated [at scale](https://github.com/github/codeql-dca/) (internal access required).
- [ ] Adding a new query? Consider also [adding the query to autofix](https://github.com/github/codeml-autofix/blob/main/docs/updating-query-support.md#adding-a-new-query-to-the-query-suite).

View File

@@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-13, windows-2019]
os: [ubuntu-22.04, macos-13, windows-2019]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4

View File

@@ -30,7 +30,8 @@ jobs:
run: |
EXIT_CODE=0
# TODO: remove the shared exception from the regex when coverage of qlpacks without dbschemes is supported
changed_lib_packs="$(git diff --name-only --diff-filter=ACMRT HEAD^ HEAD | { grep -Po '^(?!(shared))[a-z]*/ql/lib' || true; } | sort -u)"
# TODO: remove the actions exception once https://github.com/github/codeql-team/issues/3656 is fixed
changed_lib_packs="$(git diff --name-only --diff-filter=ACMRT HEAD^ HEAD | { grep -Po '^(?!(shared|actions))[a-z]*/ql/lib' || true; } | sort -u)"
for pack_dir in ${changed_lib_packs}; do
lang="${pack_dir%/ql/lib}"
codeql generate library-doc-coverage --output="${RUNNER_TEMP}/${lang}-current.txt" --dir="${pack_dir}"

34
.github/workflows/codegen.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
name: Codegen
on:
pull_request:
paths:
- "misc/bazel/**"
- "misc/codegen/**"
- "*.bazel*"
- .github/workflows/codegen.yml
- .pre-commit-config.yaml
branches:
- main
- rc/*
- codeql-cli-*
permissions:
contents: read
jobs:
codegen:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version-file: 'misc/codegen/.python-version'
- uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507
name: Check that python code is properly formatted
with:
extra_args: autopep8 --all-files
- name: Run codegen tests
shell: bash
run: |
bazel test //misc/codegen/...

View File

@@ -18,6 +18,10 @@ on:
jobs:
CodeQL-Build:
strategy:
fail-fast: false
matrix:
language: ['actions', 'csharp']
runs-on: ubuntu-latest
@@ -38,9 +42,8 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@main
# Override language selection by uncommenting this and choosing your languages
with:
languages: csharp
languages: ${{ matrix.language }}
config-file: ./.github/codeql/codeql-config.yml
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).

View File

@@ -19,7 +19,7 @@ on:
jobs:
CodeQL-Build:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
permissions:
contents: read
@@ -38,12 +38,10 @@ jobs:
languages: cpp
config-file: ./.github/codeql/codeql-config.yml
- name: "[Ubuntu] Remove GCC 13 from runner image"
shell: bash
- name: Install dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list
sudo apt-get update
sudo apt-get install -y --allow-downgrades libc6=2.35-* libc6-dev=2.35-* libstdc++6=12.3.0-* libgcc-s1=12.3.0-*
sudo apt-get install -y uuid-dev
- name: "Build Swift extractor using Bazel"
run: |

View File

@@ -3,6 +3,7 @@ on:
pull_request:
paths:
- "go/**"
- "!go/documentation/**"
- "!go/ql/**" # don't run other-os if only ql/ files changed
- .github/workflows/go-tests-other-os.yml
- .github/actions/**

22
.github/workflows/go-tests-rtjo.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: "Go: Run RTJO Tests"
on:
pull_request:
types:
- labeled
permissions:
contents: read
jobs:
test-linux:
if: "github.repository_owner == 'github' && github.event.label.name == 'Run: RTJO Language Tests'"
name: RTJO Test Linux (Ubuntu)
runs-on: ubuntu-latest-xl
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Run tests
uses: ./go/actions/test
with:
run-code-checks: true
dynamic-join-order-mode: all

View File

@@ -3,6 +3,7 @@ on:
push:
paths:
- "go/**"
- "!go/documentation/**"
- "shared/**"
- .github/workflows/go-tests.yml
- .github/actions/**
@@ -13,6 +14,7 @@ on:
pull_request:
paths:
- "go/**"
- "!go/documentation/**"
- "shared/**"
- .github/workflows/go-tests.yml
- .github/actions/**

View File

@@ -40,7 +40,7 @@ jobs:
ql/target
key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-qltest-cargo-${{ hashFiles('ql/rust-toolchain.toml', 'ql/**/Cargo.lock') }}
- name: Check formatting
run: cd ql; cargo fmt --all -- --check
run: cd ql; cargo fmt -- --check
- name: Build extractor
run: |
cd ql;

View File

@@ -79,7 +79,7 @@ jobs:
key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-rust-cargo-${{ hashFiles('ruby/extractor/rust-toolchain.toml', 'ruby/extractor/**/Cargo.lock') }}
- name: Check formatting
if: steps.cache-extractor.outputs.cache-hit != 'true'
run: cd extractor && cargo fmt --all -- --check
run: cd extractor && cargo fmt -- --check
- name: Build
if: steps.cache-extractor.outputs.cache-hit != 'true'
run: cd extractor && cargo build --verbose

40
.github/workflows/ruby-qltest-rtjo.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: "Ruby: Run RTJO Language Tests"
on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
env:
CARGO_TERM_COLOR: always
defaults:
run:
working-directory: ruby
permissions:
contents: read
jobs:
qltest-rtjo:
if: "github.repository_owner == 'github' && github.event.label.name == 'Run: RTJO Language Tests'"
runs-on: ubuntu-latest-xl
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/fetch-codeql
- uses: ./ruby/actions/create-extractor-pack
- name: Cache compilation cache
id: query-cache
uses: ./.github/actions/cache-query-compilation
with:
key: ruby-qltest
- name: Run QL tests
run: |
codeql test run --dynamic-join-order-mode=all --threads=0 --ram 50000 --search-path "${{ github.workspace }}" --check-databases --check-undefined-labels --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}"
env:
GITHUB_TOKEN: ${{ github.token }}

View File

@@ -23,26 +23,48 @@ permissions:
contents: read
jobs:
rust-code:
rust-ast-generator:
runs-on: ubuntu-latest
defaults:
run:
working-directory: rust/ast-generator
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Inject sources
shell: bash
run: |
bazel run //rust/ast-generator:inject-sources
- name: Format
working-directory: rust/extractor
shell: bash
run: |
cargo fmt --check
- name: Compilation
working-directory: rust/extractor
shell: bash
run: cargo check
- name: Clippy
working-directory: rust/extractor
shell: bash
run: |
cargo clippy --fix
git diff --exit-code
cargo clippy --no-deps -- -D warnings
rust-code:
runs-on: ubuntu-latest
defaults:
run:
working-directory: rust/extractor
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Format
shell: bash
run: |
cargo fmt --check
- name: Compilation
shell: bash
run: cargo check
- name: Clippy
shell: bash
run: |
cargo clippy --no-deps -- -D warnings
rust-codegen:
runs-on: ubuntu-latest
steps:

View File

@@ -18,58 +18,39 @@ on:
- main
- rc/*
- codeql-cli-*
push:
paths:
- "swift/**"
- "misc/bazel/**"
- "misc/codegen/**"
- "shared/**"
- "*.bazel*"
- .github/workflows/swift.yml
- .github/actions/**
- codeql-workspace.yml
- .pre-commit-config.yaml
- "!**/*.md"
- "!**/*.qhelp"
branches:
- main
- rc/*
- codeql-cli-*
permissions:
contents: read
defaults:
run:
shell: bash
working-directory: swift
jobs:
# not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks
# without waiting for the macOS build
build-and-test-macos:
build-and-test:
if: github.repository_owner == 'github'
runs-on: macos-13-xlarge
strategy:
matrix:
runner: [ubuntu-latest, macos-13-xlarge]
fail-fast: false
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- uses: ./swift/actions/build-and-test
build-and-test-linux:
if: github.repository_owner == 'github'
runs-on: ubuntu-latest-xl
steps:
- uses: actions/checkout@v4
- uses: ./swift/actions/build-and-test
qltests-linux:
if: github.repository_owner == 'github'
needs: build-and-test-linux
runs-on: ubuntu-latest-xl
steps:
- uses: actions/checkout@v4
- uses: ./swift/actions/run-ql-tests
qltests-macos:
if: ${{ github.repository_owner == 'github' && github.event_name == 'pull_request' }}
needs: build-and-test-macos
runs-on: macos-13-xlarge
steps:
- uses: actions/checkout@v4
- uses: ./swift/actions/run-ql-tests
- name: Setup (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y uuid-dev zlib1g-dev
- name: Build Swift extractor
shell: bash
run: |
bazel run :install
- name: Run Swift tests
shell: bash
run: |
bazel test ... --test_tag_filters=-override --test_output=errors
clang-format:
if : ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -78,18 +59,9 @@ jobs:
with:
extra_args: clang-format --all-files
codegen:
if : ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bazelbuild/setup-bazelisk@v2
- uses: actions/setup-python@v4
with:
python-version-file: 'swift/.python-version'
- uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507
name: Check that python code is properly formatted
with:
extra_args: autopep8 --all-files
- uses: ./.github/actions/fetch-codeql
- uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507
name: Check that QL generated code was checked in
@@ -97,15 +69,14 @@ jobs:
extra_args: swift-codegen --all-files
- name: Generate C++ files
run: |
bazel run //swift/codegen:codegen -- --generate=trap,cpp --cpp-output=$PWD/generated-cpp-files
bazel run codegen -- --generate=trap,cpp --cpp-output=$PWD/generated-cpp-files
- uses: actions/upload-artifact@v4
with:
name: swift-generated-cpp-files
path: generated-cpp-files/**
database-upgrade-scripts:
if : ${{ github.event_name == 'pull_request' }}
check-no-override:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/fetch-codeql
- uses: ./swift/actions/database-upgrade-scripts
- name: Check that no override is present in load.bzl
run: bazel test ... --test_tag_filters=override --test_output=errors

View File

@@ -32,17 +32,17 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Check formatting
run: cargo fmt --all -- --check
run: cargo fmt -- --check
- name: Run tests
run: cargo test --verbose
fmt:
runs-on: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check formatting
run: cargo fmt --check
clippy:
runs-on: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run clippy

2
.gitignore vendored
View File

@@ -8,7 +8,7 @@
# qltest projects and artifacts
*.actual
*/ql/test/**/*.testproj
*/ql/test*/**/*.testproj
*/ql/test/**/go.sum
# Visual studio temporaries, except a file used by QL4VS

View File

@@ -72,7 +72,7 @@ repos:
- id: rust-codegen
name: Run Rust checked in code generation
files: ^misc/codegen/|^rust/(prefix\.dbscheme|schema/|codegen/|.*/generated/|ql/lib/(rust\.dbscheme$|codeql/rust/elements)|\.generated.list)
files: ^misc/codegen/|^rust/(prefix\.dbscheme|schema/|codegen/|.*/generated/|ql/lib/(rust\.dbscheme$|codeql/rust/elements)|\.generated.list|ast-generator/)
language: system
entry: bazel run //rust/codegen -- --quiet
pass_filenames: false

11
.vscode/tasks.json vendored
View File

@@ -50,6 +50,11 @@
"${input:name}",
"${input:categoryQuery}"
],
"options": {
"env": {
"EDITOR": "code -r",
}
},
"presentation": {
"reveal": "never",
"close": true
@@ -67,6 +72,11 @@
"${input:name}",
"${input:categoryLibrary}"
],
"options": {
"env": {
"EDITOR": "code -r"
}
},
"presentation": {
"reveal": "never",
"close": true
@@ -81,6 +91,7 @@
"description": "Language",
"options":
[
"actions",
"go",
"java",
"javascript",

View File

@@ -1,4 +0,0 @@
---
category: majorAnalysis
---
* Added support for TypeScript 5.7.

View File

@@ -1,3 +1,4 @@
/actions/ @github/codeql-dynamic
/cpp/ @github/codeql-c-analysis
/csharp/ @github/codeql-csharp
/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor
@@ -7,12 +8,16 @@
/javascript/ @github/codeql-javascript
/python/ @github/codeql-python
/ruby/ @github/codeql-ruby
/rust/ @github/codeql-rust
/swift/ @github/codeql-swift
/misc/codegen/ @github/codeql-swift
/java/kotlin-extractor/ @github/codeql-kotlin
/java/ql/test-kotlin1/ @github/codeql-kotlin
/java/ql/test-kotlin2/ @github/codeql-kotlin
# Experimental CodeQL cryptography
**/experimental/quantum/ @github/ps-codeql
# CodeQL tools and associated docs
/docs/codeql/codeql-cli/ @github/codeql-cli-reviewers
/docs/codeql/codeql-for-visual-studio-code/ @github/codeql-vscode-reviewers
@@ -37,6 +42,7 @@ MODULE.bazel @github/codeql-ci-reviewers
/.github/workflows/go-* @github/codeql-go
/.github/workflows/ql-for-ql-* @github/codeql-ql-for-ql-reviewers
/.github/workflows/ruby-* @github/codeql-ruby
/.github/workflows/rust.yml @github/codeql-rust
/.github/workflows/swift.yml @github/codeql-swift
# Misc

1144
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,9 +8,10 @@ members = [
"rust/extractor",
"rust/extractor/macros",
"rust/ast-generator",
"rust/autobuild",
]
[patch.crates-io]
# patch for build script bug preventing bazel build
# see https://github.com/rust-lang/rustc_apfloat/pull/17
rustc_apfloat = { git = "https://github.com/redsun82/rustc_apfloat.git", rev = "096d585100636bc2e9f09d7eefec38c5b334d47b" }
rustc_apfloat = { git = "https://github.com/redsun82/rustc_apfloat.git", rev = "32968f16ef1b082243f9bf43a3fbd65c381b3e27" }

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2006-2020 GitHub, Inc.
Copyright (c) 2006-2025 GitHub, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -14,28 +14,30 @@ local_path_override(
# see https://registry.bazel.build/ for a list of available packages
bazel_dep(name = "platforms", version = "0.0.10")
bazel_dep(name = "rules_go", version = "0.50.0")
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "rules_go", version = "0.50.1")
bazel_dep(name = "rules_pkg", version = "1.0.1")
bazel_dep(name = "rules_nodejs", version = "6.2.0-codeql.1")
bazel_dep(name = "rules_python", version = "0.36.0")
bazel_dep(name = "rules_python", version = "0.40.0")
bazel_dep(name = "rules_shell", version = "0.3.0")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "abseil-cpp", version = "20240116.0", repo_name = "absl")
bazel_dep(name = "abseil-cpp", version = "20240116.1", repo_name = "absl")
bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json")
bazel_dep(name = "fmt", version = "10.0.0")
bazel_dep(name = "rules_kotlin", version = "2.0.0-codeql.1")
bazel_dep(name = "gazelle", version = "0.38.0")
bazel_dep(name = "gazelle", version = "0.40.0")
bazel_dep(name = "rules_dotnet", version = "0.17.4")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
bazel_dep(name = "rules_rust", version = "0.52.2")
bazel_dep(name = "rules_rust", version = "0.58.0")
bazel_dep(name = "zstd", version = "1.5.5.bcr.1")
bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
# Keep edition and version approximately in sync with internal repo.
# the versions there are canonical, the versions here are used for CI in github/codeql, as well as for the vendoring of dependencies.
RUST_EDITION = "2021"
RUST_EDITION = "2024"
RUST_VERSION = "1.81.0"
RUST_VERSION = "1.85.0"
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
rust.toolchain(
@@ -51,24 +53,95 @@ use_repo(rust, "rust_toolchains")
register_toolchains("@rust_toolchains//:all")
rust_host_tools = use_extension("@rules_rust//rust:extensions.bzl", "rust_host_tools")
# Don't download a second toolchain as host toolchain, make sure this is the same version as above
# The host toolchain is used for vendoring dependencies.
rust_host_tools.host_tools(
edition = RUST_EDITION,
version = RUST_VERSION,
)
# deps for python extractor
# keep in sync by running `misc/bazel/3rdparty/update_cargo_deps.sh`
py_deps = use_extension("//misc/bazel/3rdparty:py_deps_extension.bzl", "p")
use_repo(py_deps, "vendor__anyhow-1.0.44", "vendor__cc-1.0.70", "vendor__clap-2.33.3", "vendor__regex-1.5.5", "vendor__smallvec-1.6.1", "vendor__string-interner-0.12.2", "vendor__thiserror-1.0.29", "vendor__tree-sitter-0.20.4", "vendor__tree-sitter-graph-0.7.0")
use_repo(
py_deps,
"vendor_py__anyhow-1.0.95",
"vendor_py__cc-1.2.14",
"vendor_py__clap-4.5.30",
"vendor_py__regex-1.11.1",
"vendor_py__tree-sitter-0.20.4",
"vendor_py__tree-sitter-graph-0.7.0",
)
# deps for ruby+rust
# keep in sync by running `misc/bazel/3rdparty/update_cargo_deps.sh`
tree_sitter_extractors_deps = use_extension("//misc/bazel/3rdparty:tree_sitter_extractors_extension.bzl", "r")
use_repo(tree_sitter_extractors_deps, "vendor__anyhow-1.0.93", "vendor__argfile-0.2.1", "vendor__chrono-0.4.38", "vendor__clap-4.5.20", "vendor__dunce-1.0.5", "vendor__encoding-0.2.33", "vendor__figment-0.10.19", "vendor__flate2-1.0.34", "vendor__glob-0.3.1", "vendor__globset-0.4.15", "vendor__itertools-0.10.5", "vendor__itertools-0.13.0", "vendor__lazy_static-1.5.0", "vendor__log-0.4.22", "vendor__num-traits-0.2.19", "vendor__num_cpus-1.16.0", "vendor__proc-macro2-1.0.89", "vendor__quote-1.0.37", "vendor__ra_ap_base_db-0.0.232", "vendor__ra_ap_cfg-0.0.232", "vendor__ra_ap_hir-0.0.232", "vendor__ra_ap_hir_def-0.0.232", "vendor__ra_ap_hir_expand-0.0.232", "vendor__ra_ap_ide_db-0.0.232", "vendor__ra_ap_intern-0.0.232", "vendor__ra_ap_load-cargo-0.0.232", "vendor__ra_ap_parser-0.0.232", "vendor__ra_ap_paths-0.0.232", "vendor__ra_ap_project_model-0.0.232", "vendor__ra_ap_span-0.0.232", "vendor__ra_ap_syntax-0.0.232", "vendor__ra_ap_vfs-0.0.232", "vendor__rand-0.8.5", "vendor__rayon-1.10.0", "vendor__regex-1.11.1", "vendor__serde-1.0.214", "vendor__serde_json-1.0.133", "vendor__serde_with-3.11.0", "vendor__stderrlog-0.6.0", "vendor__syn-2.0.87", "vendor__tracing-0.1.40", "vendor__tracing-subscriber-0.3.18", "vendor__tree-sitter-0.24.4", "vendor__tree-sitter-embedded-template-0.23.2", "vendor__tree-sitter-json-0.24.8", "vendor__tree-sitter-ql-0.23.1", "vendor__tree-sitter-ruby-0.23.1", "vendor__triomphe-0.1.14", "vendor__ungrammar-1.16.1")
use_repo(
tree_sitter_extractors_deps,
"vendor_ts__anyhow-1.0.97",
"vendor_ts__argfile-0.2.1",
"vendor_ts__chalk-ir-0.100.0",
"vendor_ts__chrono-0.4.40",
"vendor_ts__clap-4.5.35",
"vendor_ts__dunce-1.0.5",
"vendor_ts__either-1.15.0",
"vendor_ts__encoding-0.2.33",
"vendor_ts__figment-0.10.19",
"vendor_ts__flate2-1.1.0",
"vendor_ts__glob-0.3.2",
"vendor_ts__globset-0.4.15",
"vendor_ts__itertools-0.14.0",
"vendor_ts__lazy_static-1.5.0",
"vendor_ts__mustache-0.9.0",
"vendor_ts__num-traits-0.2.19",
"vendor_ts__num_cpus-1.16.0",
"vendor_ts__proc-macro2-1.0.94",
"vendor_ts__quote-1.0.40",
"vendor_ts__ra_ap_base_db-0.0.273",
"vendor_ts__ra_ap_cfg-0.0.273",
"vendor_ts__ra_ap_hir-0.0.273",
"vendor_ts__ra_ap_hir_def-0.0.273",
"vendor_ts__ra_ap_hir_expand-0.0.273",
"vendor_ts__ra_ap_hir_ty-0.0.273",
"vendor_ts__ra_ap_ide_db-0.0.273",
"vendor_ts__ra_ap_intern-0.0.273",
"vendor_ts__ra_ap_load-cargo-0.0.273",
"vendor_ts__ra_ap_parser-0.0.273",
"vendor_ts__ra_ap_paths-0.0.273",
"vendor_ts__ra_ap_project_model-0.0.273",
"vendor_ts__ra_ap_span-0.0.273",
"vendor_ts__ra_ap_stdx-0.0.273",
"vendor_ts__ra_ap_syntax-0.0.273",
"vendor_ts__ra_ap_vfs-0.0.273",
"vendor_ts__rand-0.9.0",
"vendor_ts__rayon-1.10.0",
"vendor_ts__regex-1.11.1",
"vendor_ts__serde-1.0.219",
"vendor_ts__serde_json-1.0.140",
"vendor_ts__serde_with-3.12.0",
"vendor_ts__syn-2.0.100",
"vendor_ts__toml-0.8.20",
"vendor_ts__tracing-0.1.41",
"vendor_ts__tracing-flame-0.2.0",
"vendor_ts__tracing-subscriber-0.3.19",
"vendor_ts__tree-sitter-0.24.6",
"vendor_ts__tree-sitter-embedded-template-0.23.2",
"vendor_ts__tree-sitter-json-0.24.8",
"vendor_ts__tree-sitter-ql-0.23.1",
"vendor_ts__tree-sitter-ruby-0.23.1",
"vendor_ts__triomphe-0.1.14",
"vendor_ts__ungrammar-1.16.1",
)
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# rust-analyzer sources needed by the rust ast-generator (see `rust/ast-generator/README.md`)
RUST_ANALYZER_SRC_TAG = "2025-01-07"
http_archive(
name = "rust-analyzer-src",
build_file = "//rust/ast-generator:BUILD.rust-analyzer-src.bazel",
integrity = "sha256-eo8mIaUafZL8LOM65bDIIIXw1rNQ/P/x5RK/XUtgo5g=",
patch_args = ["-p1"],
patches = [
"//rust/ast-generator:patches/rust-analyzer.patch",
],
strip_prefix = "rust-analyzer-%s" % RUST_ANALYZER_SRC_TAG,
url = "https://github.com/rust-lang/rust-analyzer/archive/refs/tags/%s.tar.gz" % RUST_ANALYZER_SRC_TAG,
)
dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
dotnet.toolchain(dotnet_version = "9.0.100")
@@ -82,7 +155,7 @@ use_repo(csharp_main_extension, "paket.main")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "codegen_deps",
python_version = "3.11",
python_version = "3.12",
requirements_lock = "//misc/codegen:requirements_lock.txt",
)
use_repo(pip, "codegen_deps")
@@ -94,10 +167,12 @@ use_repo(
swift_deps,
"binlog",
"picosha2",
"swift_prebuilt_darwin_x86_64",
"swift_prebuilt_linux",
"swift_toolchain_linux",
"swift_toolchain_macos",
"swift-prebuilt-linux",
"swift-prebuilt-linux-download-only",
"swift-prebuilt-macos",
"swift-prebuilt-macos-download-only",
"swift-resource-dir-linux",
"swift-resource-dir-macos",
)
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
@@ -132,6 +207,7 @@ use_repo(
"kotlin-compiler-2.0.0-RC1",
"kotlin-compiler-2.0.20-Beta2",
"kotlin-compiler-2.1.0-Beta1",
"kotlin-compiler-2.1.20-Beta1",
"kotlin-compiler-embeddable-1.5.0",
"kotlin-compiler-embeddable-1.5.10",
"kotlin-compiler-embeddable-1.5.20",
@@ -146,6 +222,7 @@ use_repo(
"kotlin-compiler-embeddable-2.0.0-RC1",
"kotlin-compiler-embeddable-2.0.20-Beta2",
"kotlin-compiler-embeddable-2.1.0-Beta1",
"kotlin-compiler-embeddable-2.1.20-Beta1",
"kotlin-stdlib-1.5.0",
"kotlin-stdlib-1.5.10",
"kotlin-stdlib-1.5.20",
@@ -160,10 +237,11 @@ use_repo(
"kotlin-stdlib-2.0.0-RC1",
"kotlin-stdlib-2.0.20-Beta2",
"kotlin-stdlib-2.1.0-Beta1",
"kotlin-stdlib-2.1.20-Beta1",
)
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.23.1")
go_sdk.download(version = "1.24.0")
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.from_file(go_mod = "//go/extractor:go.mod")
@@ -189,16 +267,6 @@ lfs_files(
executable = True,
)
lfs_files(
name = "swift-resource-dir-linux",
srcs = ["//swift/third_party/resource-dir:resource-dir-linux.zip"],
)
lfs_files(
name = "swift-resource-dir-macos",
srcs = ["//swift/third_party/resource-dir:resource-dir-macos.zip"],
)
register_toolchains(
"@nodejs_toolchains//:all",
)

View File

@@ -4,7 +4,9 @@ codeql_pkg_files(
name = "extractor",
srcs = [
"codeql-extractor.yml",
] + glob(["tools/**"]),
"//:LICENSE",
],
exes = glob(["tools/**"]),
strip_prefix = strip_prefix.from_pkg(),
visibility = ["//actions:__pkg__"],
)

View File

@@ -1,21 +1,34 @@
if (($null -ne $env:LGTM_INDEX_INCLUDE) -or ($null -ne $env:LGTM_INDEX_EXCLUDE) -or ($null -ne $env:LGTM_INDEX_FILTERS)) {
Write-Output 'Path filters set. Passing them through to the JavaScript extractor.'
} else {
Write-Output 'No path filters set. Using the default filters.'
$DefaultPathFilters = @(
'exclude:**/*',
'include:.github/workflows/**/*.yml',
'include:.github/workflows/**/*.yaml',
'include:**/action.yml',
'include:**/action.yaml'
)
# Note: We're adding the `reusable_workflows` subdirectories to proactively
# record workflows that were called cross-repo, check them out locally,
# and enable an interprocedural analysis across the workflow files.
# These workflows follow the convention `.github/reusable_workflows/<nwo>/*.ya?ml`
$DefaultPathFilters = @(
'exclude:**/*',
'include:.github/workflows/*.yml',
'include:.github/workflows/*.yaml',
'include:.github/reusable_workflows/**/*.yml',
'include:.github/reusable_workflows/**/*.yaml',
'include:**/action.yml',
'include:**/action.yaml'
)
if ($null -ne $env:LGTM_INDEX_FILTERS) {
Write-Output 'LGTM_INDEX_FILTERS set. Using the default filters together with the user-provided filters, and passing through to the JavaScript extractor.'
# Begin with the default path inclusions only,
# followed by the user-provided filters.
# If the user provided `paths`, those patterns override the default inclusions
# (because `LGTM_INDEX_FILTERS` will begin with `exclude:**/*`).
# If the user provided `paths-ignore`, those patterns are excluded.
$PathFilters = ($DefaultPathFilters -join "`n") + "`n" + $env:LGTM_INDEX_FILTERS
$env:LGTM_INDEX_FILTERS = $PathFilters
} else {
Write-Output 'LGTM_INDEX_FILTERS not set. Using the default filters, and passing through to the JavaScript extractor.'
$env:LGTM_INDEX_FILTERS = $DefaultPathFilters -join "`n"
}
# Find the JavaScript extractor directory via `codeql resolve extractor`.
$CodeQL = Join-Path $env:CODEQL_DIST 'codeql.exe'
$env:CODEQL_EXTRACTOR_JAVASCRIPT_ROOT = &$CodeQL resolve extractor --language javascript
$env:CODEQL_EXTRACTOR_JAVASCRIPT_ROOT = &"$CodeQL" resolve extractor --language javascript
if ($LASTEXITCODE -ne 0) {
throw 'Failed to resolve JavaScript extractor.'
}
@@ -34,7 +47,7 @@ $env:CODEQL_EXTRACTOR_JAVASCRIPT_SOURCE_ARCHIVE_DIR = $env:CODEQL_EXTRACTOR_ACTI
$env:CODEQL_EXTRACTOR_JAVASCRIPT_TRAP_DIR = $env:CODEQL_EXTRACTOR_ACTIONS_TRAP_DIR
$env:CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE = $env:CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE
&$JavaScriptAutoBuild
&"$JavaScriptAutoBuild"
if ($LASTEXITCODE -ne 0) {
throw "JavaScript autobuilder failed."
}

View File

@@ -1,3 +1,4 @@
@echo off
rem All of the work is done in the PowerShell script
powershell.exe %~dp0autobuild-impl.ps1
echo "Running PowerShell script at '%~dp0autobuild-impl.ps1'"
powershell.exe -File "%~dp0autobuild-impl.ps1"

View File

@@ -2,25 +2,43 @@
set -eu
# Note: We're adding the `reusable_workflows` subdirectories to proactively
# record workflows that were called cross-repo, check them out locally,
# and enable an interprocedural analysis across the workflow files.
# These workflows follow the convention `.github/reusable_workflows/<nwo>/*.ya?ml`
DEFAULT_PATH_FILTERS=$(cat << END
exclude:**/*
include:.github/workflows/**/*.yml
include:.github/workflows/**/*.yaml
include:.github/workflows/*.yml
include:.github/workflows/*.yaml
include:.github/reusable_workflows/**/*.yml
include:.github/reusable_workflows/**/*.yaml
include:**/action.yml
include:**/action.yaml
END
)
if [ -n "${LGTM_INDEX_INCLUDE:-}" ] || [ -n "${LGTM_INDEX_EXCLUDE:-}" ] || [ -n "${LGTM_INDEX_FILTERS:-}" ] ; then
echo "Path filters set. Passing them through to the JavaScript extractor."
if [ -n "${LGTM_INDEX_FILTERS:-}" ]; then
echo "LGTM_INDEX_FILTERS set. Using the default filters together with the user-provided filters, and passing through to the JavaScript extractor."
# Begin with the default path inclusions only,
# followed by the user-provided filters.
# If the user provided `paths`, those patterns override the default inclusions
# (because `LGTM_INDEX_FILTERS` will begin with `exclude:**/*`).
# If the user provided `paths-ignore`, those patterns are excluded.
PATH_FILTERS="$(cat << END
${DEFAULT_PATH_FILTERS}
${LGTM_INDEX_FILTERS}
END
)"
LGTM_INDEX_FILTERS="${PATH_FILTERS}"
export LGTM_INDEX_FILTERS
else
echo "No path filters set. Using the default filters."
echo "LGTM_INDEX_FILTERS not set. Using the default filters, and passing through to the JavaScript extractor."
LGTM_INDEX_FILTERS="${DEFAULT_PATH_FILTERS}"
export LGTM_INDEX_FILTERS
fi
# Find the JavaScript extractor directory via `codeql resolve extractor`.
CODEQL_EXTRACTOR_JAVASCRIPT_ROOT="$($CODEQL_DIST/codeql resolve extractor --language javascript)"
CODEQL_EXTRACTOR_JAVASCRIPT_ROOT="$("${CODEQL_DIST}/codeql" resolve extractor --language javascript)"
export CODEQL_EXTRACTOR_JAVASCRIPT_ROOT
echo "Found JavaScript extractor at '${CODEQL_EXTRACTOR_JAVASCRIPT_ROOT}'."
@@ -36,4 +54,4 @@ env CODEQL_EXTRACTOR_JAVASCRIPT_DIAGNOSTIC_DIR="${CODEQL_EXTRACTOR_ACTIONS_DIAGN
CODEQL_EXTRACTOR_JAVASCRIPT_SOURCE_ARCHIVE_DIR="${CODEQL_EXTRACTOR_ACTIONS_SOURCE_ARCHIVE_DIR}" \
CODEQL_EXTRACTOR_JAVASCRIPT_TRAP_DIR="${CODEQL_EXTRACTOR_ACTIONS_TRAP_DIR}" \
CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE="${CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE}" \
${JAVASCRIPT_AUTO_BUILD}
"${JAVASCRIPT_AUTO_BUILD}"

View File

@@ -0,0 +1,28 @@
extensions:
- addsTo:
pack: codeql/actions-all
extensible: immutableActionsDataModel
data:
- ["actions/checkout"]
- ["actions/cache"]
- ["actions/setup-node"]
- ["actions/upload-artifact"]
- ["actions/setup-python"]
- ["actions/download-artifact"]
- ["actions/github-script"]
- ["actions/setup-java"]
- ["actions/setup-go"]
- ["actions/upload-pages-artifact"]
- ["actions/deploy-pages"]
- ["actions/setup-dotnet"]
- ["actions/stale"]
- ["actions/labeler"]
- ["actions/create-github-app-token"]
- ["actions/configure-pages"]
- ["github/codeql-action/analyze"]
- ["github/codeql-action/autobuild"]
- ["github/codeql-action/init"]
- ["github/codeql-action/resolve-environment"]
- ["github/codeql-action/start-proxy"]
- ["github/codeql-action/upload-sarif"]
- ["octokit/request-action"]

View File

@@ -0,0 +1,14 @@
# Model pack containing the list of known immutable actions. The Immutable Actions feature is not
# yet released, so this pack will only be used within GitHub. Once the feature is available to
# customers, we will move the contents of this pack back into the standard library pack.
name: codeql/immutable-actions-list
version: 0.0.1-dev
library: true
warnOnImplicitThis: true
extensionTargets:
# We expect to need this model pack even after GA of Actions analysis, so make it compatible with
# all future prereleases plus 1.x.x. We should be able to remove this back before we need to
# bump the major version to 2.
codeql/actions-all: ">=0.4.3 <2.0.0"
dataExtensions:
- ext/**/*.yml

View File

@@ -0,0 +1,5 @@
import actions
from AstNode n
where n instanceof Workflow or n instanceof CompositeAction
select n

View File

@@ -0,0 +1,6 @@
| src/.github/action.yaml:1:1:11:32 | name: ' ... action' |
| src/.github/actions/action-name/action.yml:1:1:11:32 | name: ' ... action' |
| src/.github/workflows/workflow.yml:1:1:12:33 | name: A workflow |
| src/action.yml:1:1:11:32 | name: ' ... action' |
| src/excluded/action.yml:1:1:11:32 | name: ' ... action' |
| src/included/action.yml:1:1:11:32 | name: ' ... action' |

View File

@@ -0,0 +1,2 @@
| src/included/action.yml:1:1:11:32 | name: ' ... action' |
| src/included/unreachable-workflow.yml:1:1:12:33 | name: A ... orkflow |

View File

@@ -0,0 +1,5 @@
| src/.github/action.yaml:1:1:11:32 | name: ' ... action' |
| src/.github/actions/action-name/action.yml:1:1:11:32 | name: ' ... action' |
| src/.github/workflows/workflow.yml:1:1:12:33 | name: A workflow |
| src/action.yml:1:1:11:32 | name: ' ... action' |
| src/included/action.yml:1:1:11:32 | name: ' ... action' |

View File

@@ -0,0 +1,2 @@
| src/included/action.yml:1:1:11:32 | name: ' ... action' |
| src/included/unreachable-workflow.yml:1:1:12:33 | name: A ... orkflow |

View File

@@ -0,0 +1,5 @@
import actions
from AstNode n
where n instanceof Workflow or n instanceof CompositeAction
select n

View File

@@ -0,0 +1,4 @@
paths:
- 'included'
paths-ignore:
- 'excluded'

View File

@@ -0,0 +1,2 @@
paths-ignore:
- 'excluded'

View File

@@ -0,0 +1,2 @@
paths:
- 'included'

View File

@@ -0,0 +1,6 @@
src/.github/action.yaml
src/.github/actions/action-name/action.yml
src/.github/workflows/workflow.yml
src/action.yml
src/excluded/action.yml
src/included/action.yml

View File

@@ -0,0 +1,3 @@
src/included/action.yml
src/included/not-an-action.yml
src/included/unreachable-workflow.yml

View File

@@ -0,0 +1,5 @@
src/.github/action.yaml
src/.github/actions/action-name/action.yml
src/.github/workflows/workflow.yml
src/action.yml
src/included/action.yml

View File

@@ -0,0 +1,3 @@
src/included/action.yml
src/included/not-an-action.yml
src/included/unreachable-workflow.yml

View File

@@ -0,0 +1,11 @@
name: 'A composite action'
description: 'Do something'
runs:
using: "composite"
steps:
- name: Print
run: echo "Hello world"
shell: bash
- name: Checkout
uses: actions/checkout@v4

View File

@@ -0,0 +1,11 @@
name: 'A composite action'
description: 'Do something'
runs:
using: "composite"
steps:
- name: Print
run: echo "Hello world"
shell: bash
- name: Checkout
uses: actions/checkout@v4

View File

@@ -0,0 +1,12 @@
name: An unreachable workflow
on:
push:
branches:
- main
jobs:
job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

View File

@@ -0,0 +1,12 @@
name: A workflow
on:
push:
branches:
- main
jobs:
job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

View File

@@ -0,0 +1,11 @@
name: 'A composite action'
description: 'Do something'
runs:
using: "composite"
steps:
- name: Print
run: echo "Hello world"
shell: bash
- name: Checkout
uses: actions/checkout@v4

View File

@@ -0,0 +1,11 @@
name: 'A composite action'
description: 'Do something'
runs:
using: "composite"
steps:
- name: Print
run: echo "Hello world"
shell: bash
- name: Checkout
uses: actions/checkout@v4

View File

@@ -0,0 +1,12 @@
name: An unreachable workflow
on:
push:
branches:
- main
jobs:
job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

View File

@@ -0,0 +1,11 @@
name: 'A composite action'
description: 'Do something'
runs:
using: "composite"
steps:
- name: Print
run: echo "Hello world"
shell: bash
- name: Checkout
uses: actions/checkout@v4

View File

@@ -0,0 +1 @@
name: 'Not an action, just a YAML file'

View File

@@ -0,0 +1,12 @@
name: An unreachable workflow
on:
push:
branches:
- main
jobs:
job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

View File

@@ -0,0 +1,12 @@
name: An unreachable workflow
on:
push:
branches:
- main
jobs:
job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

View File

@@ -0,0 +1,18 @@
import pytest
@pytest.mark.ql_test(expected=".default-filters.expected")
def test_default_filters(codeql, actions, check_source_archive):
check_source_archive.expected_suffix = ".default-filters.expected"
codeql.database.create(source_root="src")
@pytest.mark.ql_test(expected=".paths-only.expected")
def test_config_paths_only(codeql, actions):
codeql.database.create(source_root="src", codescanning_config="codeql-config.paths-only.yml")
@pytest.mark.ql_test(expected=".paths-ignore-only.expected")
def test_config_paths_ignore_only(codeql, actions):
codeql.database.create(source_root="src", codescanning_config="codeql-config.paths-ignore-only.yml")
@pytest.mark.ql_test(expected=".paths-and-paths-ignore.expected")
def test_config_paths_and_paths_ignore(codeql, actions):
codeql.database.create(source_root="src", codescanning_config="codeql-config.paths-and-paths-ignore.yml")

View File

@@ -0,0 +1,41 @@
## 0.4.7
No user-facing changes.
## 0.4.6
### Bug Fixes
* The query `actions/code-injection/medium` now produces alerts for injection
vulnerabilities on `pull_request` events.
## 0.4.5
No user-facing changes.
## 0.4.4
No user-facing changes.
## 0.4.3
### New Features
* The "Unpinned tag for a non-immutable Action in workflow" query (`actions/unpinned-tag`) now supports expanding the trusted action owner list using data extensions (`extensible: trustedActionsOwnerDataModel`). If you trust an Action publisher, you can include the owner name/organization in a model pack to add it to the allow list for this query. This addition will prevent security alerts when using unpinned tags for Actions published by that owner. For more information on creating a model pack, see [Creating a CodeQL Model Pack](https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs#creating-a-codeql-model-pack).
## 0.4.2
### Bug Fixes
* Fixed data for vulnerable versions of `actions/download-artifact` and `rlespinasse/github-slug-action` (following GHSA-cxww-7g56-2vh6 and GHSA-6q4m-7476-932w).
* Improved `untrustedGhCommandDataModel` regex for `gh pr view` and Bash taint analysis in GitHub Actions.
## 0.4.1
No user-facing changes.
## 0.4.0
### New Features
* Initial public preview release

View File

@@ -1 +1 @@
predicate placeholder(int x) { x = 0 }
import codeql.actions.Ast

View File

@@ -0,0 +1,5 @@
## 0.4.0
### New Features
* Initial public preview release

View File

@@ -0,0 +1,3 @@
## 0.4.1
No user-facing changes.

View File

@@ -0,0 +1,6 @@
## 0.4.2
### Bug Fixes
* Fixed data for vulnerable versions of `actions/download-artifact` and `rlespinasse/github-slug-action` (following GHSA-cxww-7g56-2vh6 and GHSA-6q4m-7476-932w).
* Improved `untrustedGhCommandDataModel` regex for `gh pr view` and Bash taint analysis in GitHub Actions.

View File

@@ -0,0 +1,5 @@
## 0.4.3
### New Features
* The "Unpinned tag for a non-immutable Action in workflow" query (`actions/unpinned-tag`) now supports expanding the trusted action owner list using data extensions (`extensible: trustedActionsOwnerDataModel`). If you trust an Action publisher, you can include the owner name/organization in a model pack to add it to the allow list for this query. This addition will prevent security alerts when using unpinned tags for Actions published by that owner. For more information on creating a model pack, see [Creating a CodeQL Model Pack](https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs#creating-a-codeql-model-pack).

View File

@@ -0,0 +1,3 @@
## 0.4.4
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.4.5
No user-facing changes.

View File

@@ -0,0 +1,6 @@
## 0.4.6
### Bug Fixes
* The query `actions/code-injection/medium` now produces alerts for injection
vulnerabilities on `pull_request` events.

View File

@@ -0,0 +1,3 @@
## 0.4.7
No user-facing changes.

View File

@@ -0,0 +1,4 @@
---
lockVersion: 1.0.0
dependencies: {}
compiled: false

View File

@@ -0,0 +1,2 @@
---
lastReleaseVersion: 0.4.7

View File

@@ -0,0 +1,98 @@
/** Provides classes for working with locations. */
import files.FileSystem
import codeql.actions.ast.internal.Ast
bindingset[loc]
pragma[inline_late]
private string locationToString(Location loc) {
exists(string filepath, int startline, int startcolumn, int endline, int endcolumn |
loc.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and
result = filepath + "@" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn
)
}
newtype TLocation =
TBaseLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) {
exists(File file |
file.getAbsolutePath() = filepath and
locations_default(_, file, startline, startcolumn, endline, endcolumn)
)
or
exists(ExpressionImpl e |
e.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
)
or
filepath = "" and startline = 0 and startcolumn = 0 and endline = 0 and endcolumn = 0
}
/**
* A location as given by a file, a start line, a start column,
* an end line, and an end column.
*
* For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
*/
class Location extends TLocation, TBaseLocation {
string filepath;
int startline;
int startcolumn;
int endline;
int endcolumn;
Location() { this = TBaseLocation(filepath, startline, startcolumn, endline, endcolumn) }
/** Gets the file for this location. */
File getFile() {
exists(File file |
file.getAbsolutePath() = filepath and
result = file
)
}
/** Gets the 1-based line number (inclusive) where this location starts. */
int getStartLine() { result = startline }
/** Gets the 1-based column number (inclusive) where this location starts. */
int getStartColumn() { result = startcolumn }
/** Gets the 1-based line number (inclusive) where this.getLocationDefault() location ends. */
int getEndLine() { result = endline }
/** Gets the 1-based column number (inclusive) where this.getLocationDefault() location ends. */
int getEndColumn() { result = endcolumn }
/** Gets the number of lines covered by this location. */
int getNumLines() { result = endline - startline + 1 }
/** Gets a textual representation of this element. */
pragma[inline]
string toString() { result = locationToString(this) }
/**
* Holds if this element is at the specified location.
* The location spans column `startcolumn` of line `startline` to
* column `endcolumn` of line `endline` in file `filepath`.
* For more information, see
* [Providing locations in CodeQL queries](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
*/
predicate hasLocationInfo(string p, int sl, int sc, int el, int ec) {
p = filepath and
sl = startline and
sc = startcolumn and
el = endline and
ec = endcolumn
}
/** Holds if this location starts strictly before the specified location. */
pragma[inline]
predicate strictlyBefore(Location other) {
this.getStartLine() < other.getStartLine()
or
this.getStartLine() = other.getStartLine() and this.getStartColumn() < other.getStartColumn()
}
}
/** An entity representing an empty location. */
class EmptyLocation extends Location {
EmptyLocation() { this.hasLocationInfo("", 0, 0, 0, 0) }
}

View File

@@ -0,0 +1,400 @@
private import codeql.actions.ast.internal.Ast
private import codeql.Locations
import codeql.actions.Helper
class AstNode instanceof AstNodeImpl {
AstNode getAChildNode() { result = super.getAChildNode() }
AstNode getParentNode() { result = super.getParentNode() }
string getAPrimaryQlClass() { result = super.getAPrimaryQlClass() }
Location getLocation() { result = super.getLocation() }
string toString() { result = super.toString() }
Step getEnclosingStep() { result = super.getEnclosingStep() }
Job getEnclosingJob() { result = super.getEnclosingJob() }
Event getATriggerEvent() { result = super.getATriggerEvent() }
Workflow getEnclosingWorkflow() { result = super.getEnclosingWorkflow() }
CompositeAction getEnclosingCompositeAction() { result = super.getEnclosingCompositeAction() }
Expression getInScopeEnvVarExpr(string name) { result = super.getInScopeEnvVarExpr(name) }
ScalarValue getInScopeDefaultValue(string name, string prop) {
result = super.getInScopeDefaultValue(name, prop)
}
}
class ScalarValue extends AstNode instanceof ScalarValueImpl {
string getValue() { result = super.getValue() }
}
class Expression extends AstNode instanceof ExpressionImpl {
string expression;
string rawExpression;
Expression() {
expression = this.getExpression() and
rawExpression = this.getRawExpression()
}
string getExpression() { result = expression }
string getRawExpression() { result = rawExpression }
string getNormalizedExpression() { result = normalizeExpr(expression) }
}
/** A common class for `env` in workflow, job or step. */
abstract class Env extends AstNode instanceof EnvImpl {
/** Gets an environment variable value given its name. */
ScalarValueImpl getEnvVarValue(string name) { result = super.getEnvVarValue(name) }
/** Gets an environment variable value. */
ScalarValueImpl getAnEnvVarValue() { result = super.getAnEnvVarValue() }
/** Gets an environment variable expressin given its name. */
ExpressionImpl getEnvVarExpr(string name) { result = super.getEnvVarExpr(name) }
/** Gets an environment variable expression. */
ExpressionImpl getAnEnvVarExpr() { result = super.getAnEnvVarExpr() }
}
/**
* A custom composite action. This is a mapping at the top level of an Actions YAML action file.
* See https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions.
*/
class CompositeAction extends AstNode instanceof CompositeActionImpl {
Runs getRuns() { result = super.getRuns() }
Outputs getOutputs() { result = super.getOutputs() }
Expression getAnOutputExpr() { result = super.getAnOutputExpr() }
Expression getOutputExpr(string outputName) { result = super.getOutputExpr(outputName) }
Input getAnInput() { result = super.getAnInput() }
Input getInput(string inputName) { result = super.getInput(inputName) }
LocalJob getACallerJob() { result = super.getACallerJob() }
UsesStep getACallerStep() { result = super.getACallerStep() }
predicate isPrivileged() { super.isPrivileged() }
}
/**
* An Actions workflow. This is a mapping at the top level of an Actions YAML workflow file.
* See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions.
*/
class Workflow extends AstNode instanceof WorkflowImpl {
Env getEnv() { result = super.getEnv() }
string getName() { result = super.getName() }
Job getAJob() { result = super.getAJob() }
Job getJob(string jobId) { result = super.getJob(jobId) }
Permissions getPermissions() { result = super.getPermissions() }
Strategy getStrategy() { result = super.getStrategy() }
On getOn() { result = super.getOn() }
}
class ReusableWorkflow extends Workflow instanceof ReusableWorkflowImpl {
Outputs getOutputs() { result = super.getOutputs() }
Expression getAnOutputExpr() { result = super.getAnOutputExpr() }
Expression getOutputExpr(string outputName) { result = super.getOutputExpr(outputName) }
Input getAnInput() { result = super.getAnInput() }
Input getInput(string inputName) { result = super.getInput(inputName) }
ExternalJob getACaller() { result = super.getACaller() }
}
class Input extends AstNode instanceof InputImpl { }
class Default extends AstNode instanceof DefaultsImpl {
ScalarValue getValue(string name, string prop) { result = super.getValue(name, prop) }
}
class Outputs extends AstNode instanceof OutputsImpl {
Expression getAnOutputExpr() { result = super.getAnOutputExpr() }
Expression getOutputExpr(string outputName) { result = super.getOutputExpr(outputName) }
override string toString() { result = "Job outputs node" }
}
class Permissions extends AstNode instanceof PermissionsImpl {
bindingset[perm]
string getPermission(string perm) { result = super.getPermission(perm) }
string getAPermission() { result = super.getAPermission() }
}
class Strategy extends AstNode instanceof StrategyImpl {
Expression getMatrixVarExpr(string varName) { result = super.getMatrixVarExpr(varName) }
Expression getAMatrixVarExpr() { result = super.getAMatrixVarExpr() }
}
/**
* https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds
*/
class Needs extends AstNode instanceof NeedsImpl {
Job getANeededJob() { result = super.getANeededJob() }
}
class On extends AstNode instanceof OnImpl {
Event getAnEvent() { result = super.getAnEvent() }
}
class Event extends AstNode instanceof EventImpl {
string getName() { result = super.getName() }
string getAnActivityType() { result = super.getAnActivityType() }
string getAPropertyValue(string prop) { result = super.getAPropertyValue(prop) }
predicate hasProperty(string prop) { super.hasProperty(prop) }
predicate isExternallyTriggerable() { super.isExternallyTriggerable() }
predicate isPrivileged() { super.isPrivileged() }
}
/**
* An Actions job within a workflow.
* See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobs.
*/
abstract class Job extends AstNode instanceof JobImpl {
string getId() { result = super.getId() }
Workflow getWorkflow() { result = super.getWorkflow() }
Job getANeededJob() { result = super.getANeededJob() }
Outputs getOutputs() { result = super.getOutputs() }
Expression getAnOutputExpr() { result = super.getAnOutputExpr() }
Expression getOutputExpr(string outputName) { result = super.getOutputExpr(outputName) }
Env getEnv() { result = super.getEnv() }
If getIf() { result = super.getIf() }
Environment getEnvironment() { result = super.getEnvironment() }
Permissions getPermissions() { result = super.getPermissions() }
Strategy getStrategy() { result = super.getStrategy() }
string getARunsOnLabel() { result = super.getARunsOnLabel() }
predicate isPrivileged() { super.isPrivileged() }
predicate isPrivilegedExternallyTriggerable(Event event) {
super.isPrivilegedExternallyTriggerable(event)
}
}
abstract class StepsContainer extends AstNode instanceof StepsContainerImpl {
Step getAStep() { result = super.getAStep() }
Step getStep(int i) { result = super.getStep(i) }
}
/**
* An `runs` mapping in a custom composite action YAML.
* See https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs
*/
class Runs extends StepsContainer instanceof RunsImpl {
CompositeAction getAction() { result = super.getAction() }
}
/**
* An Actions job within a workflow which is composed of steps.
* See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobs.
*/
class LocalJob extends Job, StepsContainer instanceof LocalJobImpl { }
/**
* A step within an Actions job.
* See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idsteps.
*/
class Step extends AstNode instanceof StepImpl {
string getId() { result = super.getId() }
Env getEnv() { result = super.getEnv() }
If getIf() { result = super.getIf() }
StepsContainer getContainer() { result = super.getContainer() }
Step getNextStep() { result = super.getNextStep() }
Step getAFollowingStep() { result = super.getAFollowingStep() }
}
/**
* An If node representing a conditional statement.
*/
class If extends AstNode instanceof IfImpl {
string getCondition() { result = super.getCondition() }
Expression getConditionExpr() { result = super.getConditionExpr() }
string getConditionStyle() { result = super.getConditionStyle() }
}
/**
* An Environemnt node representing a deployment environment.
*/
class Environment extends AstNode instanceof EnvironmentImpl {
string getName() { result = super.getName() }
Expression getNameExpr() { result = super.getNameExpr() }
}
abstract class Uses extends AstNode instanceof UsesImpl {
string getCallee() { result = super.getCallee() }
ScalarValue getCalleeNode() { result = super.getCalleeNode() }
string getVersion() { result = super.getVersion() }
int getMajorVersion() { result = super.getMajorVersion() }
string getArgument(string argName) { result = super.getArgument(argName) }
Expression getArgumentExpr(string argName) { result = super.getArgumentExpr(argName) }
}
class UsesStep extends Step, Uses instanceof UsesStepImpl { }
class ExternalJob extends Job, Uses instanceof ExternalJobImpl { }
/**
* A `run` field within an Actions job step, which runs command-line programs using an operating system shell.
* See https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun.
*/
class Run extends Step instanceof RunImpl {
ShellScript getScript() { result = super.getScript() }
Expression getAnScriptExpr() { result = super.getAnScriptExpr() }
string getWorkingDirectory() { result = super.getWorkingDirectory() }
string getShell() { result = super.getShell() }
}
class ShellScript extends ScalarValueImpl instanceof ShellScriptImpl {
string getRawScript() { result = super.getRawScript() }
string getStmt(int i) { result = super.getStmt(i) }
string getAStmt() { result = super.getAStmt() }
string getCommand(int i) { result = super.getCommand(i) }
string getACommand() { result = super.getACommand() }
string getFileReadCommand(int i) { result = super.getFileReadCommand(i) }
string getAFileReadCommand() { result = super.getAFileReadCommand() }
predicate getAssignment(int i, string name, string data) { super.getAssignment(i, name, data) }
predicate getAnAssignment(string name, string data) { super.getAnAssignment(name, data) }
predicate getAWriteToGitHubEnv(string name, string data) {
super.getAWriteToGitHubEnv(name, data)
}
predicate getAWriteToGitHubOutput(string name, string data) {
super.getAWriteToGitHubOutput(name, data)
}
predicate getAWriteToGitHubPath(string data) { super.getAWriteToGitHubPath(data) }
predicate getAnEnvReachingGitHubOutputWrite(string var, string output_field) {
super.getAnEnvReachingGitHubOutputWrite(var, output_field)
}
predicate getACmdReachingGitHubOutputWrite(string cmd, string output_field) {
super.getACmdReachingGitHubOutputWrite(cmd, output_field)
}
predicate getAnEnvReachingGitHubEnvWrite(string var, string output_field) {
super.getAnEnvReachingGitHubEnvWrite(var, output_field)
}
predicate getACmdReachingGitHubEnvWrite(string cmd, string output_field) {
super.getACmdReachingGitHubEnvWrite(cmd, output_field)
}
predicate getAnEnvReachingGitHubPathWrite(string var) {
super.getAnEnvReachingGitHubPathWrite(var)
}
predicate getACmdReachingGitHubPathWrite(string cmd) { super.getACmdReachingGitHubPathWrite(cmd) }
predicate getAnEnvReachingArgumentInjectionSink(string var, string command, string argument) {
super.getAnEnvReachingArgumentInjectionSink(var, command, argument)
}
predicate getACmdReachingArgumentInjectionSink(string cmd, string command, string argument) {
super.getACmdReachingArgumentInjectionSink(cmd, command, argument)
}
predicate fileToGitHubEnv(string path) { super.fileToGitHubEnv(path) }
predicate fileToGitHubOutput(string path) { super.fileToGitHubOutput(path) }
predicate fileToGitHubPath(string path) { super.fileToGitHubPath(path) }
}
abstract class SimpleReferenceExpression extends AstNode instanceof SimpleReferenceExpressionImpl {
string getFieldName() { result = super.getFieldName() }
AstNode getTarget() { result = super.getTarget() }
}
class JsonReferenceExpression extends AstNode instanceof JsonReferenceExpressionImpl {
string getAccessPath() { result = super.getAccessPath() }
string getInnerExpression() { result = super.getInnerExpression() }
}
class GitHubExpression extends SimpleReferenceExpression instanceof GitHubExpressionImpl { }
class SecretsExpression extends SimpleReferenceExpression instanceof SecretsExpressionImpl { }
class StepsExpression extends SimpleReferenceExpression instanceof StepsExpressionImpl {
string getStepId() { result = super.getStepId() }
}
class NeedsExpression extends SimpleReferenceExpression instanceof NeedsExpressionImpl {
string getNeededJobId() { result = super.getNeededJobId() }
}
class JobsExpression extends SimpleReferenceExpression instanceof JobsExpressionImpl { }
class InputsExpression extends SimpleReferenceExpression instanceof InputsExpressionImpl { }
class EnvExpression extends SimpleReferenceExpression instanceof EnvExpressionImpl { }
class MatrixExpression extends SimpleReferenceExpression instanceof MatrixExpressionImpl { }

View File

@@ -0,0 +1,737 @@
private import codeql.actions.Ast
class BashShellScript extends ShellScript {
BashShellScript() {
exists(Run run |
this = run.getScript() and
run.getShell().matches(["bash%", "sh"])
)
}
private string lineProducer(int i) {
result = this.getRawScript().regexpReplaceAll("\\\\\\s*\n", "").splitAt("\n", i)
}
private predicate cmdSubstitutionReplacement(string cmdSubs, string id, int k) {
exists(string line | line = this.lineProducer(k) |
exists(int i, int j |
cmdSubs =
// $() cmd substitution
line.regexpFind("\\$\\((?:[^()]+|\\((?:[^()]+|\\([^()]*\\))*\\))*\\)", i, j)
.regexpReplaceAll("^\\$\\(", "")
.regexpReplaceAll("\\)$", "") and
id = "cmdsubs:" + k + ":" + i + ":" + j
)
or
exists(int i, int j |
// `...` cmd substitution
cmdSubs =
line.regexpFind("\\`[^\\`]+\\`", i, j)
.regexpReplaceAll("^\\`", "")
.regexpReplaceAll("\\`$", "") and
id = "cmd:" + k + ":" + i + ":" + j
)
)
}
private predicate rankedCmdSubstitutionReplacements(int i, string old, string new) {
old = rank[i](string old2 | this.cmdSubstitutionReplacement(old2, _, _) | old2) and
this.cmdSubstitutionReplacement(old, new, _)
}
private predicate doReplaceCmdSubstitutions(int line, int round, string old, string new) {
round = 0 and
old = this.lineProducer(line) and
new = old
or
round > 0 and
exists(string middle, string target, string replacement |
this.doReplaceCmdSubstitutions(line, round - 1, old, middle) and
this.rankedCmdSubstitutionReplacements(round, target, replacement) and
new = middle.replaceAll(target, replacement)
)
}
private string cmdSubstitutedLineProducer(int i) {
// script lines where any command substitution has been replaced with a unique placeholder
result =
max(int round, string new |
this.doReplaceCmdSubstitutions(i, round, _, new)
|
new order by round
)
or
this.cmdSubstitutionReplacement(result, _, i)
}
private predicate quotedStringReplacement(string quotedStr, string id) {
exists(string line, int k | line = this.cmdSubstitutedLineProducer(k) |
exists(int i, int j |
// double quoted string
quotedStr = line.regexpFind("\"((?:[^\"\\\\]|\\\\.)*)\"", i, j) and
id =
"qstr:" + k + ":" + i + ":" + j + ":" + quotedStr.length() + ":" +
quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "")
)
or
exists(int i, int j |
// single quoted string
quotedStr = line.regexpFind("'((?:\\\\.|[^'\\\\])*)'", i, j) and
id =
"qstr:" + k + ":" + i + ":" + j + ":" + quotedStr.length() + ":" +
quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "")
)
) and
// Only do this for strings that might otherwise disrupt subsequent parsing
quotedStr.regexpMatch("[\"'].*[$\n\r'\"" + Bash::separator() + "].*[\"']")
}
private predicate rankedQuotedStringReplacements(int i, string old, string new) {
old = rank[i](string old2 | this.quotedStringReplacement(old2, _) | old2) and
this.quotedStringReplacement(old, new)
}
private predicate doReplaceQuotedStrings(int line, int round, string old, string new) {
round = 0 and
old = this.cmdSubstitutedLineProducer(line) and
new = old
or
round > 0 and
exists(string middle, string target, string replacement |
this.doReplaceQuotedStrings(line, round - 1, old, middle) and
this.rankedQuotedStringReplacements(round, target, replacement) and
new = middle.replaceAll(target, replacement)
)
}
private string quotedStringLineProducer(int i) {
result =
max(int round, string new | this.doReplaceQuotedStrings(i, round, _, new) | new order by round)
}
private string stmtProducer(int i) {
result = this.quotedStringLineProducer(i).splitAt(Bash::splitSeparator()).trim() and
// when splitting the line with a separator that is not present, the result is the original line which may contain other separators
// we only one the split parts that do not contain any of the separators
not result.indexOf(Bash::splitSeparator()) > -1
}
private predicate doStmtRestoreQuotedStrings(int line, int round, string old, string new) {
round = 0 and
old = this.stmtProducer(line) and
new = old
or
round > 0 and
exists(string middle, string target, string replacement |
this.doStmtRestoreQuotedStrings(line, round - 1, old, middle) and
this.rankedQuotedStringReplacements(round, target, replacement) and
new = middle.replaceAll(replacement, target)
)
}
private string restoredStmtQuotedStringLineProducer(int i) {
result =
max(int round, string new |
this.doStmtRestoreQuotedStrings(i, round, _, new)
|
new order by round
) and
not result.indexOf("qstr:") > -1
}
private predicate doStmtRestoreCmdSubstitutions(int line, int round, string old, string new) {
round = 0 and
old = this.restoredStmtQuotedStringLineProducer(line) and
new = old
or
round > 0 and
exists(string middle, string target, string replacement |
this.doStmtRestoreCmdSubstitutions(line, round - 1, old, middle) and
this.rankedCmdSubstitutionReplacements(round, target, replacement) and
new = middle.replaceAll(replacement, target)
)
}
override string getStmt(int i) {
result =
max(int round, string new |
this.doStmtRestoreCmdSubstitutions(i, round, _, new)
|
new order by round
) and
not result.indexOf("cmdsubs:") > -1
}
override string getAStmt() { result = this.getStmt(_) }
private string cmdProducer(int i) {
result = this.quotedStringLineProducer(i).splitAt(Bash::separator()).trim() and
// when splitting the line with a separator that is not present, the result is the original line which may contain other separators
// we only one the split parts that do not contain any of the separators
not result.indexOf(Bash::separator()) > -1
}
private predicate doCmdRestoreQuotedStrings(int line, int round, string old, string new) {
round = 0 and
old = this.cmdProducer(line) and
new = old
or
round > 0 and
exists(string middle, string target, string replacement |
this.doCmdRestoreQuotedStrings(line, round - 1, old, middle) and
this.rankedQuotedStringReplacements(round, target, replacement) and
new = middle.replaceAll(replacement, target)
)
}
private string restoredCmdQuotedStringLineProducer(int i) {
result =
max(int round, string new |
this.doCmdRestoreQuotedStrings(i, round, _, new)
|
new order by round
) and
not result.indexOf("qstr:") > -1
}
private predicate doCmdRestoreCmdSubstitutions(int line, int round, string old, string new) {
round = 0 and
old = this.restoredCmdQuotedStringLineProducer(line) and
new = old
or
round > 0 and
exists(string middle, string target, string replacement |
this.doCmdRestoreCmdSubstitutions(line, round - 1, old, middle) and
this.rankedCmdSubstitutionReplacements(round, target, replacement) and
new = middle.replaceAll(replacement, target)
)
}
string getCmd(int i) {
result =
max(int round, string new |
this.doCmdRestoreCmdSubstitutions(i, round, _, new)
|
new order by round
) and
not result.indexOf("cmdsubs:") > -1
}
string getACmd() { result = this.getCmd(_) }
override string getCommand(int i) {
// remove redirection
result =
this.getCmd(i)
.regexpReplaceAll("(>|>>|2>|2>>|<|<<<)\\s*[\\{\\}\\$\"'_\\-0-9a-zA-Z]+$", "")
.trim() and
// exclude variable declarations
not result.regexpMatch("^[a-zA-Z0-9\\-_]+=") and
// exclude comments
not result.trim().indexOf("#") = 0 and
// exclude the following keywords
not result =
[
"", "for", "in", "do", "done", "if", "then", "else", "elif", "fi", "while", "until", "case",
"esac", "{", "}"
]
}
override string getACommand() { result = this.getCommand(_) }
override string getFileReadCommand(int i) {
result = this.getStmt(i) and
result.matches(Bash::fileReadCommand() + "%")
}
override string getAFileReadCommand() { result = this.getFileReadCommand(_) }
override predicate getAssignment(int i, string name, string data) {
exists(string stmt |
stmt = this.getStmt(i) and
name = stmt.regexpCapture("^([a-zA-Z0-9\\-_]+)=.*", 1) and
data = stmt.regexpCapture("^[a-zA-Z0-9\\-_]+=(.*)", 1)
)
}
override predicate getAnAssignment(string name, string data) { this.getAssignment(_, name, data) }
override predicate getAWriteToGitHubEnv(string name, string data) {
exists(string raw |
Bash::extractFileWrite(this, "GITHUB_ENV", raw) and
Bash::extractVariableAndValue(raw, name, data)
)
}
override predicate getAWriteToGitHubOutput(string name, string data) {
exists(string raw |
Bash::extractFileWrite(this, "GITHUB_OUTPUT", raw) and
Bash::extractVariableAndValue(raw, name, data)
)
}
override predicate getAWriteToGitHubPath(string data) {
Bash::extractFileWrite(this, "GITHUB_PATH", data)
}
override predicate getAnEnvReachingGitHubOutputWrite(string var, string output_field) {
Bash::envReachingGitHubFileWrite(this, var, "GITHUB_OUTPUT", output_field)
}
override predicate getACmdReachingGitHubOutputWrite(string cmd, string output_field) {
Bash::cmdReachingGitHubFileWrite(this, cmd, "GITHUB_OUTPUT", output_field)
}
override predicate getAnEnvReachingGitHubEnvWrite(string var, string output_field) {
Bash::envReachingGitHubFileWrite(this, var, "GITHUB_ENV", output_field)
}
override predicate getACmdReachingGitHubEnvWrite(string cmd, string output_field) {
Bash::cmdReachingGitHubFileWrite(this, cmd, "GITHUB_ENV", output_field)
}
override predicate getAnEnvReachingGitHubPathWrite(string var) {
Bash::envReachingGitHubFileWrite(this, var, "GITHUB_PATH", _)
}
override predicate getACmdReachingGitHubPathWrite(string cmd) {
Bash::cmdReachingGitHubFileWrite(this, cmd, "GITHUB_PATH", _)
}
override predicate getAnEnvReachingArgumentInjectionSink(
string var, string command, string argument
) {
Bash::envReachingArgumentInjectionSink(this, var, command, argument)
}
override predicate getACmdReachingArgumentInjectionSink(
string cmd, string command, string argument
) {
Bash::cmdReachingArgumentInjectionSink(this, cmd, command, argument)
}
override predicate fileToGitHubEnv(string path) {
Bash::fileToFileWrite(this, "GITHUB_ENV", path)
}
override predicate fileToGitHubOutput(string path) {
Bash::fileToFileWrite(this, "GITHUB_OUTPUT", path)
}
override predicate fileToGitHubPath(string path) {
Bash::fileToFileWrite(this, "GITHUB_PATH", path)
}
}
module Bash {
string stmtSeparator() { result = ";" }
string commandSeparator() { result = ["&&", "||"] }
string splitSeparator() {
result = stmtSeparator() or
result = commandSeparator()
}
string redirectionSeparator() { result = [">", ">>", "2>", "2>>", ">&", "2>&", "<", "<<<"] }
string pipeSeparator() { result = "|" }
string separator() {
result = stmtSeparator() or
result = commandSeparator() or
result = pipeSeparator()
}
string fileReadCommand() { result = ["<", "cat", "jq", "yq", "tail", "head"] }
/** Checks if expr is a bash command substitution */
bindingset[expr]
predicate isCmdSubstitution(string expr, string cmd) {
exists(string regexp |
// $(cmd)
regexp = "\\$\\(([^)]+)\\)" and
cmd = expr.regexpCapture(regexp, 1)
or
// `cmd`
regexp = "`([^`]+)`" and
cmd = expr.regexpCapture(regexp, 1)
)
}
/** Checks if expr is a bash command substitution */
bindingset[expr]
predicate containsCmdSubstitution(string expr, string cmd) {
exists(string regexp |
// $(cmd)
regexp = ".*\\$\\(([^)]+)\\).*" and
cmd = expr.regexpCapture(regexp, 1).trim()
or
// `cmd`
regexp = ".*`([^`]+)`.*" and
cmd = expr.regexpCapture(regexp, 1).trim()
)
}
/** Checks if expr is a bash parameter expansion */
bindingset[expr]
predicate isParameterExpansion(string expr, string parameter, string operator, string params) {
exists(string regexp |
// $VAR
regexp = "\\$([a-zA-Z_][a-zA-Z0-9_]+)\\b" and
parameter = expr.regexpCapture(regexp, 1) and
operator = "" and
params = ""
or
// ${VAR}
regexp = "\\$\\{([a-zA-Z_][a-zA-Z0-9_]*)\\}" and
parameter = expr.regexpCapture(regexp, 1) and
operator = "" and
params = ""
or
// ${!VAR}
regexp = "\\$\\{([!#])([a-zA-Z_][a-zA-Z0-9_]*)\\}" and
parameter = expr.regexpCapture(regexp, 2) and
operator = expr.regexpCapture(regexp, 1) and
params = ""
or
// ${VAR<OP><PARAMS>}, ...
regexp = "\\$\\{([a-zA-Z_][a-zA-Z0-9_]*)([#%/:^,\\-+]{1,2})?(.*?)\\}" and
parameter = expr.regexpCapture(regexp, 1) and
operator = expr.regexpCapture(regexp, 2) and
params = expr.regexpCapture(regexp, 3)
)
}
bindingset[expr]
predicate containsParameterExpansion(string expr, string parameter, string operator, string params) {
exists(string regexp |
// $VAR
regexp = ".*\\$([a-zA-Z_][a-zA-Z0-9_]+)\\b.*" and
parameter = expr.regexpCapture(regexp, 1) and
operator = "" and
params = ""
or
// ${VAR}
regexp = ".*\\$\\{([a-zA-Z_][a-zA-Z0-9_]*)\\}.*" and
parameter = expr.regexpCapture(regexp, 1) and
operator = "" and
params = ""
or
// ${!VAR}
regexp = ".*\\$\\{([!#])([a-zA-Z_][a-zA-Z0-9_]*)\\}.*" and
parameter = expr.regexpCapture(regexp, 2) and
operator = expr.regexpCapture(regexp, 1) and
params = ""
or
// ${VAR<OP><PARAMS>}, ...
regexp = ".*\\$\\{([a-zA-Z_][a-zA-Z0-9_]*)([#%/:^,\\-+]{1,2})?(.*?)\\}.*" and
parameter = expr.regexpCapture(regexp, 1) and
operator = expr.regexpCapture(regexp, 2) and
params = expr.regexpCapture(regexp, 3)
)
}
bindingset[raw_content]
predicate extractVariableAndValue(string raw_content, string key, string value) {
exists(string regexp, string content | content = trimQuotes(raw_content) |
regexp = "(?msi).*^([a-zA-Z_][a-zA-Z0-9_]*)\\s*<<\\s*['\"]?(\\S+)['\"]?\\s*\n(.*?)\n\\2\\s*$" and
key = trimQuotes(content.regexpCapture(regexp, 1)) and
value = trimQuotes(content.regexpCapture(regexp, 3))
or
exists(string line |
line = content.splitAt("\n") and
regexp = "(?i)^([a-zA-Z_][a-zA-Z0-9_\\-]*)\\s*=\\s*(.*)$" and
key = trimQuotes(line.regexpCapture(regexp, 1)) and
value = trimQuotes(line.regexpCapture(regexp, 2))
)
)
}
bindingset[script]
predicate singleLineFileWrite(
string script, string cmd, string file, string content, string filters
) {
exists(string regexp |
regexp = "(?i)(echo|printf)\\s*(.*?)\\s*(>>|>|\\s*\\|\\s*tee\\s*(-a|--append)?)\\s*(\\S+)" and
cmd = script.regexpCapture(regexp, 1) and
file = trimQuotes(script.regexpCapture(regexp, 5)) and
filters = "" and
content = script.regexpCapture(regexp, 2)
)
}
bindingset[script]
predicate singleLineWorkflowCmd(string script, string cmd, string key, string value) {
exists(string regexp |
regexp = "(?i)(echo|printf)\\s*(['|\"])?::(set-[a-z]+)\\s*name\\s*=\\s*(.*?)::(.*)" and
cmd = script.regexpCapture(regexp, 3) and
key = script.regexpCapture(regexp, 4) and
value = trimQuotes(script.regexpCapture(regexp, 5))
or
regexp = "(?i)(echo|printf)\\s*(['|\"])?::(add-[a-z]+)\\s*::(.*)" and
cmd = script.regexpCapture(regexp, 3) and
key = "" and
value = trimQuotes(script.regexpCapture(regexp, 4))
)
}
bindingset[script]
predicate heredocFileWrite(string script, string cmd, string file, string content, string filters) {
exists(string regexp |
regexp =
"(?msi).*^(cat)\\s*(>>|>|\\s*\\|\\s*tee\\s*(-a|--append)?)\\s*(\\S+)\\s*<<\\s*['\"]?(\\S+)['\"]?\\s*\n(.*?)\n\\4\\s*$.*" and
cmd = script.regexpCapture(regexp, 1) and
file = trimQuotes(script.regexpCapture(regexp, 4)) and
content = script.regexpCapture(regexp, 6) and
filters = ""
or
regexp =
"(?msi).*^(cat)\\s*(<<|<)\\s*[-]?['\"]?(\\S+)['\"]?\\s*([^>]*)(>>|>|\\s*\\|\\s*tee\\s*(-a|--append)?)\\s*(\\S+)\\s*\n(.*?)\n\\3\\s*$.*" and
cmd = script.regexpCapture(regexp, 1) and
file = trimQuotes(script.regexpCapture(regexp, 7)) and
filters = script.regexpCapture(regexp, 4) and
content = script.regexpCapture(regexp, 8)
)
}
bindingset[script]
predicate linesFileWrite(string script, string cmd, string file, string content, string filters) {
exists(string regexp, string var_name |
regexp =
"(?msi).*((echo|printf)\\s+['|\"]?(.*?<<(\\S+))['|\"]?\\s*>>\\s*(\\S+)\\s*[\r\n]+)" +
"(((.*?)\\s*>>\\s*\\S+\\s*[\r\n]+)+)" +
"((echo|printf)\\s+['|\"]?(EOF)['|\"]?\\s*>>\\s*\\S+\\s*[\r\n]*).*" and
var_name = trimQuotes(script.regexpCapture(regexp, 3)).regexpReplaceAll("<<\\s*(\\S+)", "") and
content =
var_name + "=$(" +
trimQuotes(script.regexpCapture(regexp, 6))
.regexpReplaceAll(">>.*GITHUB_(ENV|OUTPUT)(})?", "")
.trim() + ")" and
cmd = "echo" and
file = trimQuotes(script.regexpCapture(regexp, 5)) and
filters = ""
)
}
bindingset[script]
predicate blockFileWrite(string script, string cmd, string file, string content, string filters) {
exists(string regexp, string first_line, string var_name |
regexp =
"(?msi).*^\\s*\\{\\s*[\r\n]" +
//
"(.*?)" +
//
"(\\s*\\}\\s*(>>|>|\\s*\\|\\s*tee\\s*(-a|--append)?)\\s*(\\S+))\\s*$.*" and
first_line = script.regexpCapture(regexp, 1).splitAt("\n", 0).trim() and
var_name = first_line.regexpCapture("echo\\s+('|\\\")?(.*)<<.*", 2) and
content = var_name + "=$(" + script.regexpCapture(regexp, 1).splitAt("\n").trim() + ")" and
not content.indexOf("EOF") > 0 and
file = trimQuotes(script.regexpCapture(regexp, 5)) and
cmd = "echo" and
filters = ""
)
}
bindingset[script]
predicate multiLineFileWrite(
string script, string cmd, string file, string content, string filters
) {
heredocFileWrite(script, cmd, file, content, filters)
or
linesFileWrite(script, cmd, file, content, filters)
or
blockFileWrite(script, cmd, file, content, filters)
}
bindingset[file_var]
predicate extractFileWrite(BashShellScript script, string file_var, string content) {
// single line assignment
exists(string file_expr, string raw_content |
isParameterExpansion(file_expr, file_var, _, _) and
singleLineFileWrite(script.getAStmt(), _, file_expr, raw_content, _) and
content = trimQuotes(raw_content)
)
or
// workflow command assignment
exists(string key, string value, string cmd |
(
file_var = "GITHUB_ENV" and
cmd = "set-env" and
content = key + "=" + value
or
file_var = "GITHUB_OUTPUT" and
cmd = "set-output" and
content = key + "=" + value
or
file_var = "GITHUB_PATH" and
cmd = "add-path" and
content = value
) and
singleLineWorkflowCmd(script.getAStmt(), cmd, key, value)
)
or
// multiline assignment
exists(string file_expr, string raw_content |
multiLineFileWrite(script.getRawScript(), _, file_expr, raw_content, _) and
isParameterExpansion(file_expr, file_var, _, _) and
content = trimQuotes(raw_content)
)
}
/** Writes the content of the file specified by `path` into a file pointed to by `file_var` */
predicate fileToFileWrite(BashShellScript script, string file_var, string path) {
exists(string regexp, string stmt, string file_expr |
regexp =
"(?i)(cat)\\s*" + "((?:(?!<<|<<-)[^>\n])+)\\s*" +
"(>>|>|\\s*\\|\\s*tee\\s*(-a|--append)?)\\s*" + "(\\S+)" and
stmt = script.getAStmt() and
file_expr = trimQuotes(stmt.regexpCapture(regexp, 5)) and
path = stmt.regexpCapture(regexp, 2) and
containsParameterExpansion(file_expr, file_var, _, _)
)
}
/**
* Holds if the Run scripts contains an access to an environment variable called `var`
* which value may get appended to the GITHUB_XXX special file
*/
predicate envReachingGitHubFileWrite(
BashShellScript script, string var, string file_var, string field
) {
exists(string file_write_value |
(
file_var = "GITHUB_ENV" and
script.getAWriteToGitHubEnv(field, file_write_value)
or
file_var = "GITHUB_OUTPUT" and
script.getAWriteToGitHubOutput(field, file_write_value)
or
file_var = "GITHUB_PATH" and
field = "PATH" and
script.getAWriteToGitHubPath(file_write_value)
) and
envReachingRunExpr(script, var, file_write_value)
)
}
/**
* Holds if and environment variable is used, directly or indirectly, in a Run's step expression.
* Where the expression is a string captured from the Run's script.
*/
bindingset[expr]
predicate envReachingRunExpr(BashShellScript script, string var, string expr) {
exists(string var2, string value2 |
// VAR2=${VAR:-default} (var2=value2)
// echo "FIELD=${VAR2:-default}" >> $GITHUB_ENV (field, file_write_value)
script.getAnAssignment(var2, value2) and
containsParameterExpansion(value2, var, _, _) and
containsParameterExpansion(expr, var2, _, _)
)
or
// var reaches the file write directly
// echo "FIELD=${VAR:-default}" >> $GITHUB_ENV (field, file_write_value)
containsParameterExpansion(expr, var, _, _)
}
/**
* Holds if the Run scripts contains a command substitution (`cmd`)
* which output may get appended to the GITHUB_XXX special file
*/
predicate cmdReachingGitHubFileWrite(
BashShellScript script, string cmd, string file_var, string field
) {
exists(string file_write_value |
(
file_var = "GITHUB_ENV" and
script.getAWriteToGitHubEnv(field, file_write_value)
or
file_var = "GITHUB_OUTPUT" and
script.getAWriteToGitHubOutput(field, file_write_value)
or
file_var = "GITHUB_PATH" and
field = "PATH" and
script.getAWriteToGitHubPath(file_write_value)
) and
cmdReachingRunExpr(script, cmd, file_write_value)
)
}
predicate envReachingArgumentInjectionSink(
BashShellScript script, string source, string command, string argument
) {
exists(string cmd, string regex, int command_group, int argument_group |
cmd = script.getACommand() and
argumentInjectionSinksDataModel(regex, command_group, argument_group) and
argument = cmd.regexpCapture(regex, argument_group).trim() and
command = cmd.regexpCapture(regex, command_group).trim() and
envReachingRunExpr(script, source, argument)
)
}
predicate cmdReachingArgumentInjectionSink(
BashShellScript script, string source, string command, string argument
) {
exists(string cmd, string regex, int command_group, int argument_group |
cmd = script.getACommand() and
argumentInjectionSinksDataModel(regex, command_group, argument_group) and
argument = cmd.regexpCapture(regex, argument_group).trim() and
command = cmd.regexpCapture(regex, command_group).trim() and
cmdReachingRunExpr(script, source, argument)
)
}
/**
* Holds if a command output is used, directly or indirectly, in a Run's step expression.
* Where the expression is a string captured from the Run's script.
*/
bindingset[expr]
predicate cmdReachingRunExpr(BashShellScript script, string cmd, string expr) {
// cmd output is assigned to a second variable (var2) and var2 reaches the file write
exists(string var2, string value2 |
// VAR2=$(cmd)
// echo "FIELD=${VAR2:-default}" >> $GITHUB_ENV (field, file_write_value)
script.getAnAssignment(var2, value2) and
containsCmdSubstitution(value2, cmd) and
containsParameterExpansion(expr, var2, _, _) and
not varMatchesRegexTest(script, var2, alphaNumericRegex())
)
or
exists(string var2, string value2, string var3, string value3 |
// VAR2=$(cmd)
// VAR3=$VAR2
// echo "FIELD=${VAR3:-default}" >> $GITHUB_ENV (field, file_write_value)
containsCmdSubstitution(value2, cmd) and
script.getAnAssignment(var2, value2) and
containsParameterExpansion(value3, var2, _, _) and
script.getAnAssignment(var3, value3) and
containsParameterExpansion(expr, var3, _, _) and
not varMatchesRegexTest(script, var2, alphaNumericRegex()) and
not varMatchesRegexTest(script, var3, alphaNumericRegex())
)
or
// var reaches the file write directly
// echo "FIELD=$(cmd)" >> $GITHUB_ENV (field, file_write_value)
containsCmdSubstitution(expr, cmd)
}
/**
* Holds if there test command that checks a variable against a regex
* eg: `[[ $VAR =~ ^[a-zA-Z0-9_]+$ ]]`
*/
bindingset[var, regex]
predicate varMatchesRegexTest(BashShellScript script, string var, string regex) {
exists(string lhs, string rhs |
lhs = script.getACommand().regexpCapture(".*\\[\\[\\s*(.*?)\\s*=~\\s*(.*?)\\s*\\]\\].*", 1) and
containsParameterExpansion(lhs, var, _, _) and
rhs = script.getACommand().regexpCapture(".*\\[\\[\\s*(.*?)\\s*=~\\s*(.*?)\\s*\\]\\].*", 2) and
trimQuotes(rhs).regexpMatch(regex)
)
}
/**
* Holds if the given regex is used to match an alphanumeric string
* eg: `^[0-9a-zA-Z]{40}$`, `^[0-9]+$` or `^[a-zA-Z0-9_]+$`
*/
string alphaNumericRegex() { result = "^\\^\\[([09azAZ_-]+)\\](\\+|\\{\\d+\\})\\$$" }
}

View File

@@ -0,0 +1,6 @@
/** Provides classes representing the control flow graph. */
private import codeql.actions.controlflow.internal.Cfg as CfgInternal
import CfgInternal::Completion
import CfgInternal::CfgScope
import CfgInternal::CfgImpl

View File

@@ -0,0 +1 @@
import DataFlow::DataFlow::Consistency

View File

@@ -0,0 +1,22 @@
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
import codeql.Locations
module DataFlow {
private import codeql.dataflow.DataFlow
private import codeql.actions.dataflow.internal.DataFlowImplSpecific
import DataFlowMake<Location, ActionsDataFlow>
import codeql.actions.dataflow.internal.DataFlowPublic
// debug
private import codeql.actions.dataflow.internal.TaintTrackingImplSpecific
import codeql.dataflow.internal.DataFlowImplConsistency as DFIC
module ActionsConsistency implements DFIC::InputSig<Location, ActionsDataFlow> { }
module Consistency {
import DFIC::MakeConsistency<Location, ActionsDataFlow, ActionsTaintTracking, ActionsConsistency>
}
}

View File

@@ -0,0 +1,88 @@
private import codeql.actions.Ast
private import codeql.Locations
private import codeql.actions.security.ControlChecks
import codeql.actions.config.Config
import codeql.actions.Bash
import codeql.actions.PowerShell
bindingset[expr]
string normalizeExpr(string expr) {
result =
expr.regexpReplaceAll("\\['([a-zA-Z0-9_\\*\\-]+)'\\]", ".$1")
.regexpReplaceAll("\\[\"([a-zA-Z0-9_\\*\\-]+)\"\\]", ".$1")
.regexpReplaceAll("\\s*\\.\\s*", ".")
}
bindingset[regex]
string wrapRegexp(string regex) { result = "\\b" + regex + "\\b" }
bindingset[regex]
string wrapJsonRegexp(string regex) {
result = ["fromJSON\\(\\s*" + regex + "\\s*\\)", "toJSON\\(\\s*" + regex + "\\s*\\)"]
}
bindingset[str]
string trimQuotes(string str) {
result = str.trim().regexpReplaceAll("^(\"|')", "").regexpReplaceAll("(\"|')$", "")
}
predicate inPrivilegedContext(AstNode node, Event event) {
node.getEnclosingJob().isPrivilegedExternallyTriggerable(event)
}
predicate inNonPrivilegedContext(AstNode node) {
not node.getEnclosingJob().isPrivilegedExternallyTriggerable(_)
}
string defaultBranchNames() {
repositoryDataModel(_, result)
or
not exists(string default_branch_name | repositoryDataModel(_, default_branch_name)) and
result = ["main", "master"]
}
string getRepoRoot() {
exists(Workflow w |
w.getLocation().getFile().getRelativePath().indexOf("/.github/workflows") > 0 and
result =
w.getLocation()
.getFile()
.getRelativePath()
.prefix(w.getLocation().getFile().getRelativePath().indexOf("/.github/workflows") + 1) and
// exclude workflow_enum reusable workflows directory root
not result.indexOf(".github/workflows/external/") > -1 and
not result.indexOf(".github/actions/external/") > -1
or
not w.getLocation().getFile().getRelativePath().indexOf("/.github/workflows") > 0 and
not w.getLocation().getFile().getRelativePath().indexOf(".github/workflows/external/") > -1 and
not w.getLocation().getFile().getRelativePath().indexOf(".github/actions/external/") > -1 and
result = ""
)
}
bindingset[path]
string normalizePath(string path) {
exists(string trimmed_path | trimmed_path = trimQuotes(path) |
// ./foo -> GITHUB_WORKSPACE/foo
if path.indexOf("./") = 0
then result = path.replaceAll("./", "GITHUB_WORKSPACE/")
else
// GITHUB_WORKSPACE/foo -> GITHUB_WORKSPACE/foo
if path.indexOf("GITHUB_WORKSPACE/") = 0
then result = path
else
// foo -> GITHUB_WORKSPACE/foo
if path.regexpMatch("^[^/~].*")
then result = "GITHUB_WORKSPACE/" + path.regexpReplaceAll("/$", "")
else
// ~/foo -> ~/foo
// /foo -> /foo
result = path
)
}
/**
* Holds if the path cache_path is a subpath of the path untrusted_path.
*/
bindingset[subpath, path]
predicate isSubpath(string subpath, string path) { subpath.substring(0, path.length()) = path }

View File

@@ -0,0 +1,62 @@
private import codeql.actions.Ast
class PowerShellScript extends ShellScript {
PowerShellScript() {
exists(Run run |
this = run.getScript() and
run.getShell().matches("pwsh%")
)
}
override string getStmt(int i) { none() }
override string getAStmt() { none() }
override string getCommand(int i) { none() }
override string getACommand() { none() }
override string getFileReadCommand(int i) { none() }
override string getAFileReadCommand() { none() }
override predicate getAssignment(int i, string name, string data) { none() }
override predicate getAnAssignment(string name, string data) { none() }
override predicate getAWriteToGitHubEnv(string name, string data) { none() }
override predicate getAWriteToGitHubOutput(string name, string data) { none() }
override predicate getAWriteToGitHubPath(string data) { none() }
override predicate getAnEnvReachingGitHubOutputWrite(string var, string output_field) { none() }
override predicate getACmdReachingGitHubOutputWrite(string cmd, string output_field) { none() }
override predicate getAnEnvReachingGitHubEnvWrite(string var, string output_field) { none() }
override predicate getACmdReachingGitHubEnvWrite(string cmd, string output_field) { none() }
override predicate getAnEnvReachingGitHubPathWrite(string var) { none() }
override predicate getACmdReachingGitHubPathWrite(string cmd) { none() }
override predicate getAnEnvReachingArgumentInjectionSink(
string var, string command, string argument
) {
none()
}
override predicate getACmdReachingArgumentInjectionSink(
string cmd, string command, string argument
) {
none()
}
override predicate fileToGitHubEnv(string path) { none() }
override predicate fileToGitHubOutput(string path) { none() }
override predicate fileToGitHubPath(string path) { none() }
}

View File

@@ -0,0 +1,13 @@
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*/
import codeql.Locations
module TaintTracking {
private import codeql.actions.dataflow.internal.DataFlowImplSpecific
private import codeql.actions.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflow.TaintTracking
import TaintFlowMake<Location, ActionsDataFlow, ActionsTaintTracking>
}

View File

@@ -0,0 +1,32 @@
private import actions
/**
* Holds if workflow step uses the github/codeql-action/init action with no customizations.
* e.g.
* - name: Initialize
* uses: github/codeql-action/init@v2
* with:
* languages: ruby, javascript
*/
class DefaultableCodeQLInitiatlizeActionQuery extends UsesStep {
DefaultableCodeQLInitiatlizeActionQuery() {
this.getCallee() = "github/codeql-action/init" and
not customizedWorkflowStep(this)
}
}
/**
* Holds if the with: part of the workflow step contains any arguments for with: other than "languages".
* e.g.
* - name: Initialize CodeQL
* uses: github/codeql-action/init@v3
* with:
* languages: ${{ matrix.language }}
* config-file: ./.github/codeql/${{ matrix.language }}/codeql-config.yml
*/
predicate customizedWorkflowStep(UsesStep codeQLInitStep) {
exists(string arg |
exists(codeQLInitStep.getArgument(arg)) and
arg != "languages"
)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,57 @@
/**
* Provides classes for working with YAML data.
*
* YAML documents are represented as abstract syntax trees whose nodes
* are either YAML values or alias nodes referring to another YAML value.
*/
private import codeql.yaml.Yaml as LibYaml
private module YamlSig implements LibYaml::InputSig {
import codeql.Locations
class LocatableBase extends @yaml_locatable {
Location getLocation() {
exists(@location_default loc, File f, string p, int sl, int sc, int el, int ec |
f.getAbsolutePath() = p and
locations_default(loc, f, sl, sc, el, ec) and
yaml_locations(this, loc) and
result = TBaseLocation(p, sl, sc, el, ec)
)
}
string toString() { none() }
}
class NodeBase extends LocatableBase, @yaml_node {
NodeBase getChildNode(int i) { yaml(result, _, this, i, _, _) }
string getTag() { yaml(this, _, _, _, result, _) }
string getAnchor() { yaml_anchors(this, result) }
override string toString() { yaml(this, _, _, _, _, result) }
}
class ScalarNodeBase extends NodeBase, @yaml_scalar_node {
int getStyle() { yaml_scalars(this, result, _) }
string getValue() { yaml_scalars(this, _, result) }
}
class CollectionNodeBase extends NodeBase, @yaml_collection_node { }
class MappingNodeBase extends CollectionNodeBase, @yaml_mapping_node { }
class SequenceNodeBase extends CollectionNodeBase, @yaml_sequence_node { }
class AliasNodeBase extends NodeBase, @yaml_alias_node {
string getTarget() { yaml_aliases(this, result) }
}
class ParseErrorBase extends LocatableBase, @yaml_error {
string getMessage() { yaml_errors(this, result) }
}
}
import LibYaml::Make<YamlSig>

View File

@@ -0,0 +1,166 @@
import ConfigExtensions as Extensions
/**
* MaD models for workflow details
* Fields:
* - path: Path to the workflow file
* - trigger: Trigger for the workflow
* - job: Job name
* - secrets_source: Source of secrets
* - permissions: Permissions for the workflow
* - runner: Runner info for the workflow
*/
predicate workflowDataModel(
string path, string trigger, string job, string secrets_source, string permissions, string runner
) {
Extensions::workflowDataModel(path, trigger, job, secrets_source, permissions, runner)
}
/**
* MaD models for repository details
* Fields:
* - visibility: Visibility of the repository
* - default_branch_name: Default branch name
*/
predicate repositoryDataModel(string visibility, string default_branch_name) {
Extensions::repositoryDataModel(visibility, default_branch_name)
}
/**
* MaD models for context/trigger mapping
* Fields:
* - trigger: Trigger for the workflow
* - context_prefix: Prefix for the context
*/
predicate contextTriggerDataModel(string trigger, string context_prefix) {
Extensions::contextTriggerDataModel(trigger, context_prefix)
}
/**
* MaD models for externally triggerable events
* Fields:
* - event: Event name
*/
predicate externallyTriggerableEventsDataModel(string event) {
Extensions::externallyTriggerableEventsDataModel(event)
}
private string commandLauncher() { result = ["", "sudo\\s+", "su\\s+", "xvfb-run\\s+"] }
/**
* MaD models for poisonable commands
* Fields:
* - regexp: Regular expression for matching poisonable commands
*/
predicate poisonableCommandsDataModel(string regexp) {
exists(string sub_regexp |
Extensions::poisonableCommandsDataModel(sub_regexp) and
regexp = commandLauncher() + sub_regexp + ".*"
)
}
/**
* MaD models for poisonable local scripts
* Fields:
* - regexp: Regular expression for matching poisonable local scripts
* - group: Script capture group number for the regular expression
*/
predicate poisonableLocalScriptsDataModel(string regexp, int command_group) {
exists(string sub_regexp |
Extensions::poisonableLocalScriptsDataModel(sub_regexp, command_group) and
regexp = commandLauncher() + sub_regexp + ".*"
)
}
/**
* MaD models for arguments to commands that execute the given argument.
* Fields:
* - regexp: Regular expression for matching argument injections.
* - command_group: capture group for the command.
* - argument_group: capture group for the argument.
*/
predicate argumentInjectionSinksDataModel(string regexp, int command_group, int argument_group) {
exists(string sub_regexp |
Extensions::argumentInjectionSinksDataModel(sub_regexp, command_group, argument_group) and
regexp = commandLauncher() + sub_regexp
)
}
/**
* MaD models for poisonable actions
* Fields:
* - action: action name
*/
predicate poisonableActionsDataModel(string action) {
Extensions::poisonableActionsDataModel(action)
}
/**
* MaD models for event properties that can be user-controlled.
* Fields:
* - property: event property
* - kind: property kind
*/
predicate untrustedEventPropertiesDataModel(string property, string kind) {
Extensions::untrustedEventPropertiesDataModel(property, kind)
}
/**
* MaD models for vulnerable actions
* Fields:
* - action: action name
* - vulnerable_version: vulnerable version
* - vulnerable_sha: vulnerable sha
* - fixed_version: fixed version
*/
predicate vulnerableActionsDataModel(
string action, string vulnerable_version, string vulnerable_sha, string fixed_version
) {
Extensions::vulnerableActionsDataModel(action, vulnerable_version, vulnerable_sha, fixed_version)
}
/**
* MaD models for immutable actions
* Fields:
* - action: action name
*/
predicate immutableActionsDataModel(string action) { Extensions::immutableActionsDataModel(action) }
/**
* MaD models for trusted actions owners
* Fields:
* - owner: owner name
*/
predicate trustedActionsOwnerDataModel(string owner) {
Extensions::trustedActionsOwnerDataModel(owner)
}
/**
* MaD models for untrusted git commands
* Fields:
* - cmd_regex: Regular expression for matching untrusted git commands
* - flag: Flag for the command
*/
predicate untrustedGitCommandDataModel(string cmd_regex, string flag) {
Extensions::untrustedGitCommandDataModel(cmd_regex, flag)
}
/**
* MaD models for untrusted gh commands
* Fields:
* - cmd_regex: Regular expression for matching untrusted gh commands
* - flag: Flag for the command
*/
predicate untrustedGhCommandDataModel(string cmd_regex, string flag) {
Extensions::untrustedGhCommandDataModel(cmd_regex, flag)
}
/**
* MaD models for permissions needed by actions
* Fields:
* - action: action name, e.g. `actions/checkout`
* - permission: permission name, e.g. `contents: read`
*/
predicate actionsPermissionsDataModel(string action, string permission) {
Extensions::actionsPermissionsDataModel(action, permission)
}

View File

@@ -0,0 +1,90 @@
/**
* This module provides extensible predicates for defining MaD models.
*/
/**
* Holds if workflow data model exists for the given parameters.
*/
extensible predicate workflowDataModel(
string path, string trigger, string job, string secrets_source, string permissions, string runner
);
/**
* Holds if repository data model exists for the given parameters.
*/
extensible predicate repositoryDataModel(string visibility, string default_branch_name);
/**
* Holds if a context expression starting with context_prefix is available for a given trigger.
*/
extensible predicate contextTriggerDataModel(string trigger, string context_prefix);
/**
* Holds if a given trigger event can be fired by an external actor.
*/
extensible predicate externallyTriggerableEventsDataModel(string event);
/**
* Holds for strings that match poisonable commands.
*/
extensible predicate poisonableCommandsDataModel(string regexp);
/**
* Holds for strings that match poisonable local scripts.
*/
extensible predicate poisonableLocalScriptsDataModel(string regexp, int group);
/**
* Holds for actions that can be poisoned through local files.
*/
extensible predicate poisonableActionsDataModel(string action);
/**
* Holds for event properties that can be user-controlled.
*/
extensible predicate untrustedEventPropertiesDataModel(string property, string kind);
/**
* Holds for arguments to commands that execute the given argument
*/
extensible predicate argumentInjectionSinksDataModel(
string regexp, int command_group, int argument_group
);
/**
* Holds for actions that are known to be vulnerable.
*/
extensible predicate vulnerableActionsDataModel(
string action, string vulnerable_version, string vulnerable_sha, string fixed_version
);
/**
* Holds for actions that are known to be immutable.
*/
extensible predicate immutableActionsDataModel(string action);
/**
* Holds for trusted Actions owners.
*/
extensible predicate trustedActionsOwnerDataModel(string owner);
/**
* Holds for git commands that may introduce untrusted data when called on an attacker controlled branch.
*/
extensible predicate untrustedGitCommandDataModel(string cmd_regex, string flag);
/**
* Holds for gh commands that may introduce untrusted data
*/
extensible predicate untrustedGhCommandDataModel(string cmd_regex, string flag);
/**
* Holds if `action` needs `permission` to run.
* - 'action' is the name of the action without any version information.
* E.g. for the action selector `actions/checkout@v2`, `action` is `actions/checkout`.
* - `permission` is of the form `scope-name: read|write`, for example `contents: read`.
* - see https://github.com/actions/checkout?tab=readme-ov-file#recommended-permissions
* for an example of recommended permissions.
* - see https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token for documentation of token permissions.
*/
extensible predicate actionsPermissionsDataModel(string action, string permission);

View File

@@ -0,0 +1,444 @@
/** Provides classes representing basic blocks. */
private import codeql.actions.Cfg
private import codeql.actions.Ast
private import codeql.Locations
/**
* A basic block, that is, a maximal straight-line sequence of control flow nodes
* without branches or joins.
*/
class BasicBlock extends TBasicBlockStart {
/** Gets the scope of this basic block. */
final CfgScope getScope() { result = this.getFirstNode().getScope() }
/** Gets an immediate successor of this basic block, if any. */
BasicBlock getASuccessor() { result = this.getASuccessor(_) }
/** Gets an immediate successor of this basic block of a given type, if any. */
BasicBlock getASuccessor(SuccessorType t) {
result.getFirstNode() = this.getLastNode().getASuccessor(t)
}
/** Gets an immediate predecessor of this basic block, if any. */
BasicBlock getAPredecessor() { result.getASuccessor() = this }
/** Gets an immediate predecessor of this basic block of a given type, if any. */
BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
/** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
Node getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
/** Gets a control flow node in this basic block. */
Node getANode() { result = this.getNode(_) }
/** Gets the first control flow node in this basic block. */
Node getFirstNode() { this = TBasicBlockStart(result) }
/** Gets the last control flow node in this basic block. */
Node getLastNode() { result = this.getNode(this.length() - 1) }
/** Gets the length of this basic block. */
int length() { result = strictcount(this.getANode()) }
/**
* Holds if this basic block immediately dominates basic block `bb`.
*
* That is, all paths reaching basic block `bb` from some entry point
* basic block must go through this basic block (which is an immediate
* predecessor of `bb`).
*
* Example:
*
* ```rb
* def m b
* if b
* return 0
* end
* return 1
* end
* ```
*
* The basic block starting on line 2 immediately dominates the
* basic block on line 5 (all paths from the entry point of `m`
* to `return 1` must go through the `if` block).
*/
predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
/**
* Holds if this basic block strictly dominates basic block `bb`.
*
* That is, all paths reaching basic block `bb` from some entry point
* basic block must go through this basic block (which must be different
* from `bb`).
*
* Example:
*
* ```rb
* def m b
* if b
* return 0
* end
* return 1
* end
* ```
*
* The basic block starting on line 2 strictly dominates the
* basic block on line 5 (all paths from the entry point of `m`
* to `return 1` must go through the `if` block).
*/
predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
/**
* Holds if this basic block dominates basic block `bb`.
*
* That is, all paths reaching basic block `bb` from some entry point
* basic block must go through this basic block.
*
* Example:
*
* ```rb
* def m b
* if b
* return 0
* end
* return 1
* end
* ```
*
* The basic block starting on line 2 dominates the basic
* basic block on line 5 (all paths from the entry point of `m`
* to `return 1` must go through the `if` block).
*/
predicate dominates(BasicBlock bb) {
bb = this or
this.strictlyDominates(bb)
}
/**
* Holds if `df` is in the dominance frontier of this basic block.
* That is, this basic block dominates a predecessor of `df`, but
* does not dominate `df` itself.
*
* Example:
*
* ```rb
* def m x
* if x < 0
* x = -x
* if x > 10
* x = x - 1
* end
* end
* puts x
* end
* ```
*
* The basic block on line 8 is in the dominance frontier
* of the basic block starting on line 3 because that block
* dominates the basic block on line 4, which is a predecessor of
* `puts x`. Also, the basic block starting on line 3 does not
* dominate the basic block on line 8.
*/
predicate inDominanceFrontier(BasicBlock df) {
this.dominatesPredecessor(df) and
not this.strictlyDominates(df)
}
/**
* Holds if this basic block dominates a predecessor of `df`.
*/
private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
/**
* Gets the basic block that immediately dominates this basic block, if any.
*
* That is, all paths reaching this basic block from some entry point
* basic block must go through the result, which is an immediate basic block
* predecessor of this basic block.
*
* Example:
*
* ```rb
* def m b
* if b
* return 0
* end
* return 1
* end
* ```
*
* The basic block starting on line 2 is an immediate dominator of
* the basic block on line 5 (all paths from the entry point of `m`
* to `return 1` must go through the `if` block, and the `if` block
* is an immediate predecessor of `return 1`).
*/
BasicBlock getImmediateDominator() { bbIDominates(result, this) }
/**
* Holds if this basic block strictly post-dominates basic block `bb`.
*
* That is, all paths reaching a normal exit point basic block from basic
* block `bb` must go through this basic block (which must be different
* from `bb`).
*
* Example:
*
* ```rb
* def m b
* if b
* puts "b"
* end
* puts "m"
* end
* ```
*
* The basic block on line 5 strictly post-dominates the basic block on
* line 3 (all paths to the exit point of `m` from `puts "b"` must go
* through `puts "m"`).
*/
predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) }
/**
* Holds if this basic block post-dominates basic block `bb`.
*
* That is, all paths reaching a normal exit point basic block from basic
* block `bb` must go through this basic block.
*
* Example:
*
* ```rb
* def m b
* if b
* puts "b"
* end
* puts "m"
* end
* ```
*
* The basic block on line 5 post-dominates the basic block on line 3
* (all paths to the exit point of `m` from `puts "b"` must go through
* `puts "m"`).
*/
predicate postDominates(BasicBlock bb) {
this.strictlyPostDominates(bb) or
this = bb
}
/** Holds if this basic block is in a loop in the control flow graph. */
predicate inLoop() { this.getASuccessor+() = this }
/** Gets a textual representation of this basic block. */
string toString() { result = this.getFirstNode().toString() }
/** Gets the location of this basic block. */
Location getLocation() { result = this.getFirstNode().getLocation() }
}
cached
private module Cached {
/** Internal representation of basic blocks. */
cached
newtype TBasicBlock = TBasicBlockStart(Node cfn) { startsBB(cfn) }
/** Holds if `cfn` starts a new basic block. */
private predicate startsBB(Node cfn) {
not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor())
or
cfn.isJoin()
or
cfn.getAPredecessor().isBranch()
or
/*
* In cases such as
*
* ```rb
* if x or y
* foo
* else
* bar
* ```
*
* we have a CFG that looks like
*
* x --false--> [false] x or y --false--> bar
* \ |
* --true--> y --false--
* \
* --true--> [true] x or y --true--> foo
*
* and we want to ensure that both `foo` and `bar` start a new basic block,
* in order to get a `ConditionalBlock` out of the disjunction.
*/
exists(cfn.getAPredecessor(any(BooleanSuccessor s)))
}
/**
* Holds if `succ` is a control flow successor of `pred` within
* the same basic block.
*/
private predicate intraBBSucc(Node pred, Node succ) {
succ = pred.getASuccessor() and
not startsBB(succ)
}
/**
* Holds if `cfn` is the `i`th node in basic block `bb`.
*
* In other words, `i` is the shortest distance from a node `bb`
* that starts a basic block to `cfn` along the `intraBBSucc` relation.
*/
cached
predicate bbIndex(Node bbStart, Node cfn, int i) =
shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
/**
* Holds if the first node of basic block `succ` is a control flow
* successor of the last node of basic block `pred`.
*/
private predicate succBB(BasicBlock pred, BasicBlock succ) { succ = pred.getASuccessor() }
/** Holds if `dom` is an immediate dominator of `bb`. */
cached
predicate bbIDominates(BasicBlock dom, BasicBlock bb) =
idominance(entryBB/1, succBB/2)(_, dom, bb)
/** Holds if `pred` is a basic block predecessor of `succ`. */
private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
/** Holds if `bb` is an exit basic block that represents normal exit. */
private predicate normalExitBB(BasicBlock bb) { bb.getANode().(AnnotatedExitNode).isNormal() }
/** Holds if `dom` is an immediate post-dominator of `bb`. */
cached
predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) =
idominance(normalExitBB/1, predBB/2)(_, dom, bb)
/**
* Gets the `i`th predecessor of join block `jb`, with respect to some
* arbitrary order.
*/
cached
JoinBlockPredecessor getJoinBlockPredecessor(JoinBlock jb, int i) {
none()
/*
* result =
* rank[i + 1](JoinBlockPredecessor jbp |
* jbp = jb.getAPredecessor()
* |
* jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
* )
*/
}
cached
predicate immediatelyControls(ConditionBlock cb, BasicBlock succ, BooleanSuccessor s) {
succ = cb.getASuccessor(s) and
forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != cb | succ.dominates(pred))
}
cached
predicate controls(ConditionBlock cb, BasicBlock controlled, BooleanSuccessor s) {
exists(BasicBlock succ | cb.immediatelyControls(succ, s) | succ.dominates(controlled))
}
}
private import Cached
/** Holds if `bb` is an entry basic block. */
private predicate entryBB(BasicBlock bb) { bb.getFirstNode() instanceof EntryNode }
/**
* An entry basic block, that is, a basic block whose first node is
* an entry node.
*/
class EntryBasicBlock extends BasicBlock {
EntryBasicBlock() { entryBB(this) }
}
/**
* An annotated exit basic block, that is, a basic block whose last node is
* an annotated exit node.
*/
class AnnotatedExitBasicBlock extends BasicBlock {
private boolean normal;
AnnotatedExitBasicBlock() {
exists(AnnotatedExitNode n |
n = this.getANode() and
if n.isNormal() then normal = true else normal = false
)
}
/** Holds if this block represent a normal exit. */
final predicate isNormal() { normal = true }
}
/**
* An exit basic block, that is, a basic block whose last node is
* an exit node.
*/
class ExitBasicBlock extends BasicBlock {
ExitBasicBlock() { this.getLastNode() instanceof ExitNode }
}
/*
* private module JoinBlockPredecessors {
* private predicate id(AstNode x, AstNode y) { x = y }
*
* private predicate idOf(AstNode x, int y) = equivalenceRelation(id/2)(x, y)
*
* int getId(JoinBlockPredecessor jbp) {
* idOf(Ast::toTreeSitter(jbp.getFirstNode().(AstCfgNode).getAstNode()), result)
* or
* idOf(Ast::toTreeSitter(jbp.(EntryBasicBlock).getScope()), result)
* }
*
* string getSplitString(JoinBlockPredecessor jbp) {
* result = jbp.getFirstNode().(AstCfgNode).getSplitsString()
* or
* not exists(jbp.getFirstNode().(AstCfgNode).getSplitsString()) and
* result = ""
* }
* }
*/
/** A basic block with more than one predecessor. */
class JoinBlock extends BasicBlock {
JoinBlock() { this.getFirstNode().isJoin() }
/**
* Gets the `i`th predecessor of this join block, with respect to some
* arbitrary order.
*/
JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = getJoinBlockPredecessor(this, i) }
}
/** A basic block that is an immediate predecessor of a join block. */
class JoinBlockPredecessor extends BasicBlock {
JoinBlockPredecessor() { this.getASuccessor() instanceof JoinBlock }
}
/** A basic block that terminates in a condition, splitting the subsequent control flow. */
class ConditionBlock extends BasicBlock {
ConditionBlock() { this.getLastNode().isCondition() }
/**
* Holds if basic block `succ` is immediately controlled by this basic
* block with conditional value `s`. That is, `succ` is an immediate
* successor of this block, and `succ` can only be reached from
* the callable entry point by going via the `s` edge out of this basic block.
*/
predicate immediatelyControls(BasicBlock succ, BooleanSuccessor s) {
immediatelyControls(this, succ, s)
}
/**
* Holds if basic block `controlled` is controlled by this basic block with
* conditional value `s`. That is, `controlled` can only be reached from
* the callable entry point by going via the `s` edge out of this basic block.
*/
predicate controls(BasicBlock controlled, BooleanSuccessor s) { controls(this, controlled, s) }
}

View File

@@ -0,0 +1,320 @@
private import codeql.actions.Ast
private import codeql.controlflow.Cfg as CfgShared
private import codeql.Locations
module Completion {
private newtype TCompletion =
TSimpleCompletion() or
TBooleanCompletion(boolean b) { b in [false, true] } or
TReturnCompletion()
abstract class Completion extends TCompletion {
abstract string toString();
predicate isValidForSpecific(AstNode e) { none() }
predicate isValidFor(AstNode e) { this.isValidForSpecific(e) }
abstract SuccessorType getAMatchingSuccessorType();
}
abstract class NormalCompletion extends Completion { }
class SimpleCompletion extends NormalCompletion, TSimpleCompletion {
override string toString() { result = "SimpleCompletion" }
override predicate isValidFor(AstNode e) { not any(Completion c).isValidForSpecific(e) }
override NormalSuccessor getAMatchingSuccessorType() { any() }
}
class BooleanCompletion extends NormalCompletion, TBooleanCompletion {
boolean value;
BooleanCompletion() { this = TBooleanCompletion(value) }
override string toString() { result = "BooleanCompletion(" + value + ")" }
override predicate isValidForSpecific(AstNode e) { none() }
override BooleanSuccessor getAMatchingSuccessorType() { result.getValue() = value }
final boolean getValue() { result = value }
}
class ReturnCompletion extends Completion, TReturnCompletion {
override string toString() { result = "ReturnCompletion" }
override predicate isValidForSpecific(AstNode e) { none() }
override ReturnSuccessor getAMatchingSuccessorType() { any() }
}
cached
private newtype TSuccessorType =
TNormalSuccessor() or
TBooleanSuccessor(boolean b) { b in [false, true] } or
TReturnSuccessor()
class SuccessorType extends TSuccessorType {
string toString() { none() }
}
class NormalSuccessor extends SuccessorType, TNormalSuccessor {
override string toString() { result = "successor" }
}
class BooleanSuccessor extends SuccessorType, TBooleanSuccessor {
boolean value;
BooleanSuccessor() { this = TBooleanSuccessor(value) }
override string toString() { result = value.toString() }
boolean getValue() { result = value }
}
class ReturnSuccessor extends SuccessorType, TReturnSuccessor {
override string toString() { result = "return" }
}
}
module CfgScope {
abstract class CfgScope extends AstNode { }
class WorkflowScope extends CfgScope instanceof Workflow { }
class CompositeActionScope extends CfgScope instanceof CompositeAction { }
}
private module Implementation implements CfgShared::InputSig<Location> {
import codeql.actions.Ast
import Completion
import CfgScope
predicate completionIsNormal(Completion c) { not c instanceof ReturnCompletion }
// Not using CFG splitting, so the following are just dummy types.
private newtype TUnit = Unit()
additional class SplitKindBase = TUnit;
additional class Split extends TUnit {
abstract string toString();
}
predicate completionIsSimple(Completion c) { c instanceof SimpleCompletion }
predicate completionIsValidFor(Completion c, AstNode e) { c.isValidFor(e) }
CfgScope getCfgScope(AstNode e) {
exists(AstNode p | p = e.getParentNode() |
result = p
or
not p instanceof CfgScope and result = getCfgScope(p)
)
}
additional int maxSplits() { result = 0 }
predicate scopeFirst(CfgScope scope, AstNode e) {
first(scope.(Workflow), e) or
first(scope.(CompositeAction), e)
}
predicate scopeLast(CfgScope scope, AstNode e, Completion c) {
last(scope.(Workflow), e, c) or
last(scope.(CompositeAction), e, c)
}
predicate successorTypeIsSimple(SuccessorType t) { t instanceof NormalSuccessor }
predicate successorTypeIsCondition(SuccessorType t) { t instanceof BooleanSuccessor }
SuccessorType getAMatchingSuccessorType(Completion c) { result = c.getAMatchingSuccessorType() }
predicate isAbnormalExitType(SuccessorType t) { none() }
int idOfAstNode(AstNode node) { none() }
int idOfCfgScope(CfgScope scope) { none() }
}
module CfgImpl = CfgShared::Make<Location, Implementation>;
private import CfgImpl
private import Completion
private import CfgScope
private class CompositeActionTree extends StandardPreOrderTree instanceof CompositeAction {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
(
child = this.(CompositeAction).getAnInput() or
child = this.(CompositeAction).getOutputs() or
child = this.(CompositeAction).getRuns()
) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class RunsTree extends StandardPreOrderTree instanceof Runs {
override ControlFlowTree getChildNode(int i) { result = super.getStep(i) }
}
private class WorkflowTree extends StandardPreOrderTree instanceof Workflow {
override ControlFlowTree getChildNode(int i) {
if this instanceof ReusableWorkflow
then
result =
rank[i](AstNode child, Location l |
(
child = this.(ReusableWorkflow).getAnInput() or
child = this.(ReusableWorkflow).getOutputs() or
child = this.(ReusableWorkflow).getStrategy() or
child = this.(ReusableWorkflow).getAJob()
) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
else
result =
rank[i](AstNode child, Location l |
(
child = super.getStrategy() or
child = super.getAJob()
) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class OutputsTree extends StandardPreOrderTree instanceof Outputs {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
child = super.getAnOutputExpr() and l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class StrategyTree extends StandardPreOrderTree instanceof Strategy {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
child = super.getAMatrixVarExpr() and l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class JobTree extends StandardPreOrderTree instanceof LocalJob {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
(
child = super.getAStep() or
child = super.getOutputs() or
child = super.getStrategy()
) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class ExternalJobTree extends StandardPreOrderTree instanceof ExternalJob {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
(
child = super.getArgumentExpr(_) or
child = super.getInScopeEnvVarExpr(_) or
child = super.getOutputs() or
child = super.getStrategy()
) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class UsesTree extends StandardPreOrderTree instanceof UsesStep {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
(child = super.getArgumentExpr(_) or child = super.getInScopeEnvVarExpr(_)) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class RunTree extends StandardPreOrderTree instanceof Run {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](AstNode child, Location l |
(
child = super.getInScopeEnvVarExpr(_) or
child = super.getAnScriptExpr() or
child = super.getScript()
) and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class ScalarValueTree extends StandardPreOrderTree instanceof ScalarValue {
override ControlFlowTree getChildNode(int i) {
result =
rank[i](Expression child, Location l |
child = super.getAChildNode() and
l = child.getLocation()
|
child
order by
l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString()
)
}
}
private class UsesLeaf extends LeafTree instanceof Uses { }
private class InputTree extends LeafTree instanceof Input { }
private class ScalarValueLeaf extends LeafTree instanceof ScalarValue { }
private class ExpressionLeaf extends LeafTree instanceof Expression { }

View File

@@ -0,0 +1,131 @@
private import actions
private import internal.ExternalFlowExtensions as Extensions
private import codeql.actions.DataFlow
private import codeql.actions.security.ArtifactPoisoningQuery
/**
* MaD sources
* Fields:
* - action: Fully-qualified action name (NWO)
* - version: Either '*' or a specific SHA/Tag
* - output arg: To node (prefixed with either `env.` or `output.`)
* - provenance: verification of the model
*/
predicate actionsSourceModel(
string action, string version, string output, string kind, string provenance
) {
Extensions::actionsSourceModel(action, version, output, kind, provenance)
}
/**
* MaD summaries
* Fields:
* - action: Fully-qualified action name (NWO)
* - version: Either '*' or a specific SHA/Tag
* - input arg: From node (prefixed with either `env.` or `input.`)
* - output arg: To node (prefixed with either `env.` or `output.`)
* - kind: Either 'Taint' or 'Value'
* - provenance: verification of the model
*/
predicate actionsSummaryModel(
string action, string version, string input, string output, string kind, string provenance
) {
Extensions::actionsSummaryModel(action, version, input, output, kind, provenance)
}
/**
* MaD sinks
* Fields:
* - action: Fully-qualified action name (NWO)
* - version: Either '*' or a specific SHA/Tag
* - input: sink node (prefixed with either `env.` or `input.`)
* - kind: sink kind
* - provenance: verification of the model
*/
predicate actionsSinkModel(
string action, string version, string input, string kind, string provenance
) {
Extensions::actionsSinkModel(action, version, input, kind, provenance)
}
/**
* Holds if source.fieldName is a MaD-defined source of a given taint kind.
*/
predicate madSource(DataFlow::Node source, string kind, string fieldName) {
exists(Uses uses, string action, string version |
actionsSourceModel(action, version, fieldName, kind, _) and
uses.getCallee() = action.toLowerCase() and
(
if version.trim() = "*"
then uses.getVersion() = any(string v)
else uses.getVersion() = version.trim()
) and
(
if fieldName.trim().matches("env.%")
then source.asExpr() = uses.getInScopeEnvVarExpr(fieldName.trim().replaceAll("env.", ""))
else
if fieldName.trim().matches("output.%")
then source.asExpr() = uses
else none()
)
)
}
/**
* Holds if the data flow from `pred` to `succ` is a MaD store step.
*/
predicate madStoreStep(DataFlow::Node pred, DataFlow::Node succ, DataFlow::ContentSet c) {
exists(Uses uses, string action, string version, string input, string output |
actionsSummaryModel(action, version, input, output, "taint", _) and
c = any(DataFlow::FieldContent ct | ct.getName() = output.replaceAll("output.", "")) and
uses.getCallee() = action.toLowerCase() and
// version check
(
if version.trim() = "*"
then uses.getVersion() = any(string v)
else uses.getVersion() = version.trim()
) and
// pred provenance
(
input.trim().matches("env.%") and
pred.asExpr() = uses.getInScopeEnvVarExpr(input.trim().replaceAll("env.", ""))
or
input.trim().matches("input.%") and
pred.asExpr() = uses.getArgumentExpr(input.trim().replaceAll("input.", ""))
or
input.trim() = "artifact" and
exists(UntrustedArtifactDownloadStep download |
pred.asExpr() = download and
download.getAFollowingStep() = uses
)
) and
succ.asExpr() = uses
)
}
/**
* Holds if sink is a MaD-defined sink for a given taint kind.
*/
predicate madSink(DataFlow::Node sink, string kind) {
exists(Uses uses, string action, string version, string input |
actionsSinkModel(action, version, input, kind, _) and
uses.getCallee() = action.toLowerCase() and
// version check
(
if version.trim() = "*"
then uses.getVersion() = any(string v)
else uses.getVersion() = version.trim()
) and
// pred provenance
(
input.trim().matches("env.%") and
sink.asExpr() = uses.getInScopeEnvVarExpr(input.trim().replaceAll("env.", ""))
or
input.trim().matches("input.%") and
sink.asExpr() = uses.getArgumentExpr(input.trim().replaceAll("input.", ""))
or
input.trim() = "artifact" and
sink.asExpr() = uses
)
)
}

View File

@@ -0,0 +1,366 @@
private import codeql.actions.security.ArtifactPoisoningQuery
private import codeql.actions.security.UntrustedCheckoutQuery
private import codeql.actions.config.Config
private import codeql.actions.dataflow.ExternalFlow
/**
* A data flow source.
*/
abstract class SourceNode extends DataFlow::Node {
/**
* Gets a string that represents the source kind with respect to threat modeling.
*/
abstract string getThreatModel();
}
/** A data flow source of remote user input. */
abstract class RemoteFlowSource extends SourceNode {
/** Gets a string that describes the type of this remote flow source. */
abstract string getSourceType();
/** Gets the event that triggered the source. */
abstract string getEventName();
override string getThreatModel() { result = "remote" }
}
/**
* A data flow source of user input from github context.
* eg: github.head_ref
*/
class GitHubCtxSource extends RemoteFlowSource {
string flag;
string event;
GitHubExpression e;
GitHubCtxSource() {
this.asExpr() = e and
// github.head_ref
e.getFieldName() = "head_ref" and
flag = "branch" and
(
event = e.getATriggerEvent().getName() and
event = "pull_request_target"
or
not exists(e.getATriggerEvent()) and
event = "unknown"
)
}
override string getSourceType() { result = flag }
override string getEventName() { result = event }
}
class GitHubEventCtxSource extends RemoteFlowSource {
string flag;
string context;
string event;
GitHubEventCtxSource() {
exists(Expression e, string regexp |
this.asExpr() = e and
context = e.getExpression() and
(
// the context is available for the job trigger events
event = e.getATriggerEvent().getName() and
exists(string context_prefix |
contextTriggerDataModel(event, context_prefix) and
normalizeExpr(context).matches("%" + context_prefix + "%")
)
or
not exists(e.getATriggerEvent()) and
event = "unknown"
) and
untrustedEventPropertiesDataModel(regexp, flag) and
not flag = "json" and
normalizeExpr(context).regexpMatch("(?i)\\s*" + wrapRegexp(regexp) + ".*")
)
}
override string getSourceType() { result = flag }
string getContext() { result = context }
override string getEventName() { result = event }
}
abstract class CommandSource extends RemoteFlowSource {
abstract string getCommand();
abstract Run getEnclosingRun();
override string getEventName() { result = this.getEnclosingRun().getATriggerEvent().getName() }
}
class GitCommandSource extends RemoteFlowSource, CommandSource {
Run run;
string cmd;
string flag;
GitCommandSource() {
exists(Step checkout, string cmd_regex |
checkout instanceof SimplePRHeadCheckoutStep and
this.asExpr() = run.getScript() and
checkout.getAFollowingStep() = run and
run.getScript().getAStmt() = cmd and
cmd.indexOf("git") = 0 and
untrustedGitCommandDataModel(cmd_regex, flag) and
cmd.regexpMatch(cmd_regex + ".*")
)
}
override string getSourceType() { result = flag }
override string getCommand() { result = cmd }
override Run getEnclosingRun() { result = run }
}
class GhCLICommandSource extends RemoteFlowSource, CommandSource {
Run run;
string cmd;
string flag;
GhCLICommandSource() {
exists(string cmd_regex |
this.asExpr() = run.getScript() and
run.getScript().getAStmt() = cmd and
cmd.indexOf("gh ") = 0 and
untrustedGhCommandDataModel(cmd_regex, flag) and
cmd.regexpMatch(cmd_regex + ".*") and
(
cmd.regexpMatch(".*\\b(pr|pulls)\\b.*") and
run.getATriggerEvent().getName() = checkoutTriggers()
or
not cmd.regexpMatch(".*\\b(pr|pulls)\\b.*")
)
)
}
override string getSourceType() { result = flag }
override Run getEnclosingRun() { result = run }
override string getCommand() { result = cmd }
}
class GitHubEventPathSource extends RemoteFlowSource, CommandSource {
string cmd;
string flag;
string access_path;
Run run;
// Examples
// COMMENT_AUTHOR=$(jq -r .comment.user.login "$GITHUB_EVENT_PATH")
// CURRENT_COMMENT=$(jq -r .comment.body "$GITHUB_EVENT_PATH")
// PR_HEAD=$(jq --raw-output .pull_request.head.ref ${GITHUB_EVENT_PATH})
// PR_NUMBER=$(jq --raw-output .pull_request.number ${GITHUB_EVENT_PATH})
// PR_TITLE=$(jq --raw-output .pull_request.title ${GITHUB_EVENT_PATH})
// BODY=$(jq -r '.issue.body' "$GITHUB_EVENT_PATH" | sed -n '3p')
GitHubEventPathSource() {
this.asExpr() = run.getScript() and
run.getScript().getACommand() = cmd and
cmd.matches("jq%") and
cmd.matches("%GITHUB_EVENT_PATH%") and
exists(string regexp |
untrustedEventPropertiesDataModel(regexp, flag) and
not flag = "json" and
access_path = "github.event" + cmd.regexpCapture(".*\\s+([^\\s]+)\\s+.*", 1) and
normalizeExpr(access_path).regexpMatch("(?i)\\s*" + wrapRegexp(regexp) + ".*")
)
}
override string getSourceType() { result = flag }
override string getCommand() { result = cmd }
override Run getEnclosingRun() { result = run }
}
class GitHubEventJsonSource extends RemoteFlowSource {
string flag;
string event;
GitHubEventJsonSource() {
exists(Expression e, string context, string regexp |
this.asExpr() = e and
context = e.getExpression() and
untrustedEventPropertiesDataModel(regexp, _) and
(
// only contexts for the triggering events are considered tainted.
// eg: for `pull_request`, we only consider `github.event.pull_request`
event = e.getEnclosingWorkflow().getATriggerEvent().getName() and
exists(string context_prefix |
contextTriggerDataModel(event, context_prefix) and
normalizeExpr(context).matches("%" + context_prefix + "%")
) and
normalizeExpr(context).regexpMatch("(?i).*" + wrapJsonRegexp(regexp) + ".*")
or
// github.event is tainted for all triggers
event = e.getEnclosingWorkflow().getATriggerEvent().getName() and
contextTriggerDataModel(e.getEnclosingWorkflow().getATriggerEvent().getName(), _) and
normalizeExpr(context).regexpMatch("(?i).*" + wrapJsonRegexp("\\bgithub.event\\b") + ".*")
or
not exists(e.getATriggerEvent()) and
event = "unknown"
) and
flag = "json"
)
}
override string getSourceType() { result = flag }
override string getEventName() { result = event }
}
/**
* A Source of untrusted data defined in a MaD specification
*/
class MaDSource extends RemoteFlowSource {
string sourceType;
MaDSource() { madSource(this, sourceType, _) }
override string getSourceType() { result = sourceType }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
abstract class FileSource extends RemoteFlowSource { }
/**
* A downloaded artifact.
*/
class ArtifactSource extends RemoteFlowSource, FileSource {
ArtifactSource() { this.asExpr() instanceof UntrustedArtifactDownloadStep }
override string getSourceType() { result = "artifact" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
/**
* A file from an untrusted checkout.
*/
private class CheckoutSource extends RemoteFlowSource, FileSource {
CheckoutSource() { this.asExpr() instanceof SimplePRHeadCheckoutStep }
override string getSourceType() { result = "artifact" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
/**
* A list of file names returned by dorny/paths-filter.
*/
class DornyPathsFilterSource extends RemoteFlowSource {
DornyPathsFilterSource() {
exists(UsesStep u |
u.getCallee() = "dorny/paths-filter" and
u.getArgument("list-files") = ["csv", "json"] and
this.asExpr() = u
)
}
override string getSourceType() { result = "filename" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
/**
* A list of file names returned by tj-actions/changed-files.
*/
class TJActionsChangedFilesSource extends RemoteFlowSource {
TJActionsChangedFilesSource() {
exists(UsesStep u, string vulnerable_action, string vulnerable_version, string vulnerable_sha |
vulnerableActionsDataModel(vulnerable_action, vulnerable_version, vulnerable_sha, _) and
u.getCallee() = "tj-actions/changed-files" and
u.getCallee() = vulnerable_action and
(
u.getArgument("safe_output") = "false"
or
(u.getVersion() = vulnerable_version or u.getVersion() = vulnerable_sha)
) and
this.asExpr() = u
)
}
override string getSourceType() { result = "filename" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
/**
* A list of file names returned by tj-actions/verify-changed-files.
*/
class TJActionsVerifyChangedFilesSource extends RemoteFlowSource {
TJActionsVerifyChangedFilesSource() {
exists(UsesStep u, string vulnerable_action, string vulnerable_version, string vulnerable_sha |
vulnerableActionsDataModel(vulnerable_action, vulnerable_version, vulnerable_sha, _) and
u.getCallee() = "tj-actions/verify-changed-files" and
u.getCallee() = vulnerable_action and
(
u.getArgument("safe_output") = "false"
or
(u.getVersion() = vulnerable_version or u.getVersion() = vulnerable_sha)
) and
this.asExpr() = u
)
}
override string getSourceType() { result = "filename" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
class Xt0rtedSlashCommandSource extends RemoteFlowSource {
Xt0rtedSlashCommandSource() {
exists(UsesStep u |
u.getCallee() = "xt0rted/slash-command-action" and
u.getArgument("permission-level").toLowerCase() = ["read", "none"] and
this.asExpr() = u
)
}
override string getSourceType() { result = "text" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
class ZenteredIssueFormBodyParserSource extends RemoteFlowSource {
ZenteredIssueFormBodyParserSource() {
exists(UsesStep u |
u.getCallee() = "zentered/issue-forms-body-parser" and
not exists(u.getArgument("body")) and
this.asExpr() = u
)
}
override string getSourceType() { result = "text" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}
class OctokitRequestActionSource extends RemoteFlowSource {
OctokitRequestActionSource() {
exists(UsesStep u, string route |
u.getCallee() = "octokit/request-action" and
route = u.getArgument("route").trim() and
route.indexOf("GET") = 0 and
(
route.matches("%/commits%") or
route.matches("%/comments%") or
route.matches("%/pulls%") or
route.matches("%/issues%") or
route.matches("%/users%") or
route.matches("%github.event.issue.pull_request.url%")
) and
this.asExpr() = u
)
}
override string getSourceType() { result = "text" }
override string getEventName() { result = this.asExpr().getATriggerEvent().getName() }
}

View File

@@ -0,0 +1,92 @@
/**
* Provides classes representing various flow steps for taint tracking.
*/
private import actions
private import codeql.actions.DataFlow
private import codeql.actions.dataflow.FlowSources
/**
* Holds if a Run step declares an environment variable, uses it in its script and sets an output in its script.
* e.g.
* - name: Extract and Clean Initial URL
* id: extract-url
* env:
* BODY: ${{ github.event.comment.body }}
* run: |
* echo "::set-output name=foo::$BODY"
* echo "foo=$(echo $BODY)" >> $GITHUB_OUTPUT
* echo "foo=$(echo $BODY)" >> "$GITHUB_OUTPUT"
* echo "::set-output name=step-output::$BODY"
*/
predicate envToOutputStoreStep(DataFlow::Node pred, DataFlow::Node succ, DataFlow::ContentSet c) {
exists(Run run, string var, string field |
run.getInScopeEnvVarExpr(var) = pred.asExpr() and
succ.asExpr() = run and
run.getScript().getAnEnvReachingGitHubOutputWrite(var, field) and
c = any(DataFlow::FieldContent ct | ct.getName() = field)
)
}
predicate envToEnvStoreStep(DataFlow::Node pred, DataFlow::Node succ, DataFlow::ContentSet c) {
exists(
Run run, string var, string field //string key, string value |
|
run.getInScopeEnvVarExpr(var) = pred.asExpr() and
// we store the taint on the enclosing job since the may not exist an implicit env attribute
succ.asExpr() = run.getEnclosingJob() and
run.getScript().getAnEnvReachingGitHubEnvWrite(var, field) and
c = any(DataFlow::FieldContent ct | ct.getName() = field)
)
}
/**
* A command whose output gets assigned to an environment variable or step output.
* - run: |
* echo "foo=$(cmd)" >> "$GITHUB_OUTPUT"
* - run: |
* foo=$(<cmd)"
* echo "bar=${foo}" >> "$GITHUB_OUTPUT"
*/
predicate commandToOutputStoreStep(DataFlow::Node pred, DataFlow::Node succ, DataFlow::ContentSet c) {
exists(Run run, string key, string cmd |
(
exists(CommandSource source | source.getCommand() = cmd)
or
exists(FileSource source |
source.asExpr().(Step).getAFollowingStep() = run and
run.getScript().getAFileReadCommand() = cmd
)
) and
run.getScript().getACmdReachingGitHubOutputWrite(cmd, key) and
c = any(DataFlow::FieldContent ct | ct.getName() = key) and
pred.asExpr() = run.getScript() and
succ.asExpr() = run
)
}
/**
* A command whose output gets assigned to an environment variable or step output.
* - run: |
* echo "foo=$(cmd)" >> "$GITHUB_ENV"
* - run: |
* foo=$(<cmd)"
* echo "bar=${foo}" >> "$GITHUB_ENV"
*/
predicate commandToEnvStoreStep(DataFlow::Node pred, DataFlow::Node succ, DataFlow::ContentSet c) {
exists(Run run, string key, string cmd |
(
exists(CommandSource source | source.getCommand() = cmd)
or
exists(FileSource source |
source.asExpr().(Step).getAFollowingStep() = run and
run.getScript().getAFileReadCommand() = cmd
)
) and
run.getScript().getACmdReachingGitHubEnvWrite(cmd, key) and
c = any(DataFlow::FieldContent ct | ct.getName() = key) and
pred.asExpr() = run.getScript() and
// we store the taint on the enclosing job since there may not be an implicit env attribute
succ.asExpr() = run.getEnclosingJob()
)
}

View File

@@ -0,0 +1,156 @@
/**
* Provides classes representing various flow steps for taint tracking.
*/
private import actions
private import codeql.util.Unit
private import codeql.actions.DataFlow
private import codeql.actions.dataflow.FlowSources
/**
* A unit class for adding additional taint steps.
*
* Extend this class to add additional taint steps that should apply to all
* taint configurations.
*/
class AdditionalTaintStep extends Unit {
/**
* Holds if the step from `node1` to `node2` should be considered a taint
* step for all configurations.
*/
abstract predicate step(DataFlow::Node node1, DataFlow::Node node2);
}
/**
* A file source step followed by a Run step may read the file.
*/
predicate fileDownloadToRunStep(DataFlow::Node pred, DataFlow::Node succ) {
exists(FileSource source, Run run |
pred = source and
source.asExpr().(Step).getAFollowingStep() = run and
succ.asExpr() = run.getScript() and
exists(run.getScript().getAFileReadCommand())
)
}
/**
* A read of the _files field of the dorny/paths-filter action.
*/
predicate dornyPathsFilterTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
exists(StepsExpression o |
pred instanceof DornyPathsFilterSource and
o.getStepId() = pred.asExpr().(UsesStep).getId() and
o.getFieldName().matches("%_files") and
succ.asExpr() = o
)
}
/**
* A read of user-controlled field of the tj-actions/changed-files action.
*/
predicate tjActionsChangedFilesTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
exists(StepsExpression o |
pred instanceof TJActionsChangedFilesSource and
o.getTarget() = pred.asExpr() and
o.getStepId() = pred.asExpr().(UsesStep).getId() and
o.getFieldName() =
[
"added_files", "copied_files", "deleted_files", "modified_files", "renamed_files",
"all_old_new_renamed_files", "type_changed_files", "unmerged_files", "unknown_files",
"all_changed_and_modified_files", "all_changed_files", "other_changed_files",
"all_modified_files", "other_modified_files", "other_deleted_files", "modified_keys",
"changed_keys"
] and
succ.asExpr() = o
)
}
/**
* A read of user-controlled field of the tj-actions/verify-changed-files action.
*/
predicate tjActionsVerifyChangedFilesTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
exists(StepsExpression o |
pred instanceof TJActionsVerifyChangedFilesSource and
o.getTarget() = pred.asExpr() and
o.getStepId() = pred.asExpr().(UsesStep).getId() and
o.getFieldName() = "changed_files" and
succ.asExpr() = o
)
}
/**
* A read of user-controlled field of the xt0rted/slash-command-action action.
*/
predicate xt0rtedSlashCommandActionTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
exists(StepsExpression o |
pred instanceof Xt0rtedSlashCommandSource and
o.getTarget() = pred.asExpr() and
o.getStepId() = pred.asExpr().(UsesStep).getId() and
o.getFieldName() = "command-arguments" and
succ.asExpr() = o
)
}
/**
* A read of user-controlled field of the zentered/issue-forms-body-parser action.
*/
predicate zenteredIssueFormBodyParserSource(DataFlow::Node pred, DataFlow::Node succ) {
exists(StepsExpression o |
pred instanceof ZenteredIssueFormBodyParserSource and
o.getTarget() = pred.asExpr() and
o.getStepId() = pred.asExpr().(UsesStep).getId() and
(
not o instanceof JsonReferenceExpression and
o.getFieldName() = "data"
or
o instanceof JsonReferenceExpression and
o.(JsonReferenceExpression).getInnerExpression().matches("%.data")
) and
succ.asExpr() = o
)
}
/**
* A read of user-controlled field of the octokit/request-action action.
*/
predicate octokitRequestActionTaintStep(DataFlow::Node pred, DataFlow::Node succ) {
exists(StepsExpression o |
pred instanceof OctokitRequestActionSource and
o.getTarget() = pred.asExpr() and
o.getStepId() = pred.asExpr().(UsesStep).getId() and
succ.asExpr() = o and
(
not o instanceof JsonReferenceExpression and
o.getFieldName() = "data"
or
o instanceof JsonReferenceExpression and
o.(JsonReferenceExpression).getInnerExpression().matches("%.data") and
o.(JsonReferenceExpression)
.getAccessPath()
.matches([
"%.title",
"%.user.login",
"%.body",
"%.head.ref",
"%.head.repo.full_name",
"%.commit.author.email",
"%.commit.commiter.email",
"%.commit.message",
"%.email",
"%.name",
])
)
)
}
class TaintSteps extends AdditionalTaintStep {
override predicate step(DataFlow::Node node1, DataFlow::Node node2) {
dornyPathsFilterTaintStep(node1, node2) or
tjActionsChangedFilesTaintStep(node1, node2) or
tjActionsVerifyChangedFilesTaintStep(node1, node2) or
xt0rtedSlashCommandActionTaintStep(node1, node2) or
xt0rtedSlashCommandActionTaintStep(node1, node2) or
zenteredIssueFormBodyParserSource(node1, node2) or
octokitRequestActionTaintStep(node1, node2)
}
}

View File

@@ -0,0 +1,15 @@
/**
* Provides Actions-specific definitions for use in the data flow library.
* Implementation of https://github.com/github/codeql/blob/main/shared/dataflow/codeql/dataflow/DataFlow.qll
*/
private import codeql.dataflow.DataFlow
private import codeql.Locations
module ActionsDataFlow implements InputSig<Location> {
import DataFlowPrivate as Private
import DataFlowPublic
import Private
predicate neverSkipInPathGraph = Private::neverSkipInPathGraph/1;
}

Some files were not shown because too many files have changed in this diff Show More