Mathias Vorreiter Pedersen
80fad348bb
Swift: Implement CFG for property reads, writes, and observers.
2022-05-25 13:46:14 +01:00
Mathias Vorreiter Pedersen
67cc1b503b
Swift: Implement step 3 from the previous commit message.
2022-05-25 13:44:59 +01:00
Mathias Vorreiter Pedersen
1f4924f978
Swift: Create a custom "AST" version of the public CFG classes. This is
...
necessary because the CFG library doesn't support the following
two requirements simultaneously:
1. Traverse AST classes by virtual dispatch
2. Construct ControlFlowElements from non-AST classes
Because the CFG trees derive from the a base type that must be a
subtype of `ControlFlowElement`. So if we make `ControlFlowElement`
an IPA type, we cannot write:
```
class AssignTree extends PostOrderTree instanceof AssignExpr { ... }
```
because `AssignExpr` is not a subtype of PostOrderTree (since
PostOrderTree is now a subtype of the new IPA type).
To fix this, Tom suggested the following (which is implemented in
this PR):
1. Create a copy of the CFG tree classes (i.e., Pre/PostOrderTree,
LeafTree, etc.) and call them AstPreOrderTree/AstPostOrderTree,
AstLeafTree, etc.
2. For each tree AstTree from step 1, create a instance of the
internal CFG library's appropriate class.
3. In `ControlFlowGraphImpl`, proceed as normal with virtual
dispatch using `instanceof`, but extend the AstTree classes
from step 1 instead of the CFG's own tree classes.
This works because each AstTree implements one of the CFG
library's tree classes (as per step 2).
This commit performs step 1 and 2. Step 3 will be the next commit.
2022-05-25 13:39:48 +01:00
Mathias Vorreiter Pedersen
ab268514a1
Swift: Create a custom IPA type for 'ControlFlowElement's and fixup various type annotations.
2022-05-25 13:39:48 +01:00
Tom Hvitved
4f95abc4f6
Python: Update expected test output
2022-05-25 14:39:37 +02:00
Tom Hvitved
bcdef98392
Data flow: Sync files
2022-05-25 14:39:37 +02:00
Tom Hvitved
a4023b8a1d
Data flow: Make PathGraph::edges/2 and PathNode::getASuccessor/1 consistent
2022-05-25 14:39:37 +02:00
Tom Hvitved
42f05dadc4
Data flow: Sync files
2022-05-25 14:21:22 +02:00
Tom Hvitved
3d072abcff
Data flow: Fix bad join in prohibitsUseUseFlow
...
Before
```
Tuple counts for FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow#1de78b88#ff@fdf8bdrq:
6099 ~0% {2} r1 = SCAN FlowSummaryImpl::Private::isParameterPostUpdate#1de78b88#fff OUTPUT In.2, In.0
787252695 ~2% {3} r2 = JOIN r1 WITH project#DataFlowImplCommon::ParamNode::isParameterOf#dispred#f0820431#fff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, true, Lhs.1
5360462712 ~0% {4} r3 = JOIN r2 WITH FlowSummaryImpl::Private::Steps::summaryLocalStep#1de78b88#ffb_021#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2, true, Lhs.0
7132 ~2% {2} r4 = JOIN r3 WITH FlowSummaryImpl::Private::Steps::summaryLocalStep#1de78b88#ffb ON FIRST 3 OUTPUT Lhs.0, Lhs.3
5869 ~25% {1} r5 = JOIN r4 WITH DataFlowImplCommon::Cached::clearsContentCached#4f8df883#ff ON FIRST 1 OUTPUT Lhs.1
1263 ~9% {1} r6 = JOIN r4 WITH DataFlowImplCommon::Cached::expectsContentCached#4f8df883#ff ON FIRST 1 OUTPUT Lhs.1
7132 ~52% {1} r7 = r5 UNION r6
29593 ~26% {2} r8 = JOIN r7 WITH project#FlowSummaryImpl::Private::Steps::summaryArgParam0#1de78b88#ffff#2_201#join_rhs ON FIRST 1 OUTPUT Rhs.1, Rhs.2
return r8
```
After
```
Tuple counts for FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow#1de78b88#ff@aa7a37lj:
6099 ~4% {3} r1 = SCAN FlowSummaryImpl::Private::isParameterPostUpdate#1de78b88#fff OUTPUT In.0, true, In.2
8434 ~5% {2} r2 = JOIN r1 WITH FlowSummaryImpl::Private::Steps::summaryLocalStep#1de78b88#ffb_120#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2
5869 ~5% {3} r3 = JOIN r2 WITH DataFlowImplCommon::Cached::clearsContentCached#4f8df883#ff ON FIRST 1 OUTPUT Lhs.0, true, Lhs.1
1278 ~6% {3} r4 = JOIN r2 WITH DataFlowImplCommon::Cached::expectsContentCached#4f8df883#ff ON FIRST 1 OUTPUT Lhs.0, true, Lhs.1
7147 ~6% {3} r5 = r3 UNION r4
7147 ~57% {2} r6 = JOIN r5 WITH FlowSummaryImpl::Private::Steps::summaryLocalStep#1de78b88#ffb_120#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2
5892 ~26% {1} r7 = JOIN r6 WITH project#DataFlowImplCommon::ParamNode::isParameterOf#dispred#f0820431#fff ON FIRST 2 OUTPUT Lhs.0
29589 ~26% {2} r8 = JOIN r7 WITH project#FlowSummaryImpl::Private::Steps::summaryArgParam0#1de78b88#ffff#2_201#join_rhs ON FIRST 1 OUTPUT Rhs.1, Rhs.2
return r8
```
2022-05-25 14:21:22 +02:00
Erik Krogh Kristensen
ed907f6f63
add CWE-940 to js/missing-origin-check
2022-05-25 14:15:48 +02:00
yoff
a726340bb3
Merge branch 'main' into py/CsvInjection
2022-05-25 13:18:46 +02:00
Anders Schack-Mulligen
deddc52666
Merge pull request #9317 from github/release-prep/2.9.3
...
Release preparation for version 2.9.3
2022-05-25 12:43:36 +02:00
Tom Hvitved
a7b39ebeca
Ruby: Flow through hash-splat parameters
2022-05-25 12:37:22 +02:00
Erik Krogh Kristensen
efa895e912
update expected output
2022-05-25 10:33:39 +00:00
Erik Krogh Kristensen
f38d1f9a4e
merge main into ts47
2022-05-25 10:13:25 +00:00
Nick Rolfe
134cf4e0e1
Ruby: tweak join order in API::Impl::edge
2022-05-25 10:54:43 +01:00
Tom Bolton
67572bb770
Merge pull request #9193 from github/tombolton/add-counting-queries
...
JS: Add individual per-security-query counting queries
2022-05-25 10:02:28 +01:00
Tony Torralba
9c941dc7ab
Add Kotlin test for UnsafeAndroidAccess
2022-05-25 10:56:18 +02:00
Tony Torralba
f0b90b391f
Add Kotlin test for CleartextStorageSharedPrefs
2022-05-25 10:56:18 +02:00
Tony Torralba
85fab20086
Add Expr::getUnderlyingExpr predicate
2022-05-25 10:56:18 +02:00
Erik Krogh Kristensen
009ba4c280
update query id to the updated id
2022-05-25 10:55:33 +02:00
yoff
aadfa8eacd
Merge branch 'main' into py/CsvInjection
2022-05-25 10:43:08 +02:00
Michael Nebel
e9d371c650
Merge pull request #8600 from michaelnebel/csharp/dotnetruntimemodels
...
C#: Dotnet Runtime models.
2022-05-25 10:33:09 +02:00
Rasmus Wriedt Larsen
f7e58a9335
Ruby: Apply nomagic on parameterMatch instead
2022-05-25 10:07:02 +02:00
AlexDenisov
8b131adeb1
Merge pull request #9283 from github/alexdenisov/swift-integration-tests
...
Swift: add integration tests
2022-05-25 10:04:08 +02:00
Anders Schack-Mulligen
673355df65
Fix markdown lists
2022-05-25 10:02:48 +02:00
Rasmus Wriedt Larsen
0bf0e0e16c
Revert "Ruby: Fix performance for argumentPositionMatch"
...
as requested to use a different performance fix
and
Revert "Dataflow: Sync `DataFlowImplCommon`"
This reverts commit c9a833fc07
This reverts commit 911ddb9b2c .
2022-05-25 09:56:10 +02:00
Asger F
877a9d8bcc
JS: Fix FP in js/type-confusion-through-parameter-tampering
2022-05-25 09:53:46 +02:00
github-actions[bot]
1f1b364feb
Release preparation for version 2.9.3
2022-05-25 07:46:48 +00:00
Asger F
4913a7a911
Merge branch 'main' into js/resource-exhaustion-no-buffer.from
2022-05-25 09:25:00 +02:00
ihsinme
57127a5343
Update cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousUseMbtowc.qhelp
...
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com >
2022-05-25 09:38:02 +03:00
Michael Nebel
9cab92b16f
C#: Update flow summaries test after rebase. The rebase included a fix to the isAutoGenerated predicate, which means that a summary is only considered autogenerated, if no hand-written version exist. This affects the printing as well.
2022-05-25 08:28:15 +02:00
Michael Nebel
5b405bb4cf
C#: Update FlowSummaries test with generated printing (needed due to rebase).
2022-05-25 08:28:15 +02:00
Michael Nebel
ba7238d6e2
C#: Update XML Injectiont test output after rebase (query has been turned into a path-problem and the output is now affected by the added summaries for NameValueCollection).
2022-05-25 08:28:15 +02:00
Michael Nebel
75532432af
C#: Update flow summaries test (note that the test doesn't correctly print the generated flag at the moment).
2022-05-25 08:28:15 +02:00
Michael Nebel
c8ede58704
C#: Flow summaries has now been added for Exception stack trace, but not for ToString. The latter will be encoded as an extra taintstep in the analysis. To reduce noise for all uses of an exception itself an isSanitizerIn is introduced.
2022-05-25 08:28:15 +02:00
Michael Nebel
4d6d1c8376
C#: Since NameValueCollection now has a flow summary for the string indexer it is no longer consider an unsafe external api, which is why it has disappared from the result.
2022-05-25 08:28:14 +02:00
Michael Nebel
ee027f845c
C#: Since NameValueCollection now has a flow summary for the indexer it is considered a SafeExternalApiCallable and will thus not be included in the result of the test.
2022-05-25 08:28:14 +02:00
Michael Nebel
268230ef19
C#: Add QlDoc to the Generated file.
2022-05-25 08:28:14 +02:00
Michael Nebel
e2d6cd20c7
C#: Update tests due to new summaries for ProcessStartInfo.
2022-05-25 08:28:14 +02:00
Michael Nebel
9b8636aa23
C#: Update test because we now have a flow summary the string indexer for NameValueCollection.
2022-05-25 08:28:14 +02:00
Michael Nebel
d9c7ba471d
C#: Update taint steps test as the generated models now include a model for the getters for KeyValuePair (we only had manual summaries for the constructor).
2022-05-25 08:28:14 +02:00
Michael Nebel
f8e729025f
C#: Add generated Dotnet Runtime summary models that allows to up two reads and two stores and update flow summaries test.
2022-05-25 08:28:14 +02:00
Michael Nebel
3b62b45ea8
C#: Add generated framework models to ExternalFlow.
2022-05-25 08:28:14 +02:00
Tom Hvitved
efda248bea
Merge pull request #9315 from michaelnebel/swift/dataflowsync
...
Swift: Sync changes to DataFlowImplCommon from PR #9024 .
2022-05-25 08:24:15 +02:00
Michael Nebel
5f3a039c65
Swift: Sync changes to DataFlowImplCommon from PR #9024 .
2022-05-25 08:05:22 +02:00
Erik Krogh Kristensen
2da001ebd7
bump TypeScript version to stable release
2022-05-24 22:55:59 +02:00
Robert Marsh
8cc509e5e9
Merge pull request #9275 from MathiasVP/swift-add-dataflow-lib
...
Swift: Add shared dataflow library
2022-05-24 15:11:42 -04:00
Robert Marsh
54ac36718c
Merge pull request #9284 from MathiasVP/more-cfg-for-exprs
...
Swift: CFG for `TypeExpr`, `MemberRefExpr`, `DefaultArgumentExpr` and `ForceValueExpr`
2022-05-24 14:51:26 -04:00
Chris Smowton
98ef22358e
Merge pull request #9213 from smowton/smowton/fix/inherited-single-abstract-method
...
Kotlin: fix implementation of SAM classes that inherit their abstract method
2022-05-24 18:22:55 +01:00