Anders Schack-Mulligen
|
06cb277eb0
|
Merge pull request #14299 from aschackmull/dataflow/more-defaults
Dataflow: Make use of defaults for language-specific hooks.
|
2023-09-25 11:19:44 +02:00 |
|
Anders Schack-Mulligen
|
66da997b7b
|
Dataflow: Make use of defaults for language-specific hooks.
|
2023-09-22 14:54:22 +02:00 |
|
Tom Hvitved
|
e417e862a2
|
Merge pull request #14283 from hvitved/ruby/collapse-stages
Ruby: Collapse DIL stages
|
2023-09-22 10:58:06 +02:00 |
|
Alex Ford
|
67019c6784
|
Merge pull request #14274 from alexrford/rb/dataflow-tidy
Ruby: Minor fixes for dataflow queries
|
2023-09-21 16:33:34 +01:00 |
|
Alex Ford
|
840b1e0a73
|
Ruby: delete DataFlowImplForHttpClientLibraries
|
2023-09-21 14:11:46 +01:00 |
|
Alex Ford
|
a64d37211d
|
Ruby: use new dataflow api in Typhoeus.qll
|
2023-09-21 14:11:09 +01:00 |
|
Alex Ford
|
699f752ded
|
Ruby: use new dataflow api in RestClient.qll
|
2023-09-21 14:09:41 +01:00 |
|
Alex Ford
|
25203d98c3
|
Ruby: use new dataflow api in OpenURI.qll
|
2023-09-21 14:08:22 +01:00 |
|
Alex Ford
|
09782296df
|
Ruby: use new dataflow api in NetHttp.qll
|
2023-09-21 14:06:40 +01:00 |
|
Alex Ford
|
fc7e753035
|
Ruby: use new dataflow api in Httparty.qll
|
2023-09-21 14:04:46 +01:00 |
|
Alex Ford
|
92941a45f9
|
Ruby: use new dataflow api in HttpClient.qll
|
2023-09-21 14:03:09 +01:00 |
|
Tom Hvitved
|
c2306e6713
|
Ruby: Collapse DIL stages
|
2023-09-21 14:33:04 +02:00 |
|
Alex Ford
|
1ffcf4b9c4
|
Ruby: use new dataflow api in Faraday.qll
|
2023-09-21 13:07:06 +01:00 |
|
Alex Ford
|
1dbba19238
|
Ruby: use new dataflow api in Excon.qll
|
2023-09-21 13:00:17 +01:00 |
|
Alex Ford
|
489f598551
|
Ruby: delete DataFlowImplForPathname
|
2023-09-21 12:50:12 +01:00 |
|
Anders Schack-Mulligen
|
13f7daf71e
|
Merge pull request #13982 from aschackmull/dataflow/typeflow-calledge-pruning
Dataflow: Add type-based call-edge pruning.
|
2023-09-21 13:33:08 +02:00 |
|
Alex Ford
|
4cb91e022f
|
Ruby: deprecate some flow states
|
2023-09-21 12:24:15 +01:00 |
|
Alex Ford
|
9d421ffa8d
|
Ruby: configsig rb/improper-ldap-auth
|
2023-09-21 12:24:15 +01:00 |
|
Tom Hvitved
|
1442bddf36
|
Ruby: Fix bad join
Before
```
Evaluated relational algebra for predicate DataFlowPublic#e1781e31::BarrierGuard#PolynomialReDoSCustomizations#32063fa3::PolynomialReDoS::lengthGuard#::getAMaybeGuardedCapturedDef#0#f@3c903abq with tuple counts:
280924 ~0% {2} r1 = SCAN Ssa#da392372::Make#SsaImpl#ff97b16a::SsaInput#::Definition::definesAt#3#dispred#ffff OUTPUT In.2, In.0
280924 ~0% {2} r2 = JOIN r1 WITH BasicBlocks#d5fe3e99::BasicBlock::getScope#0#dispred#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1
103843 ~1% {2} r3 = JOIN r2 WITH SSA#304893e3::Ssa::CapturedEntryDefinition#f ON FIRST 1 OUTPUT Lhs.0, Lhs.1
103843 ~5% {3} r4 = JOIN r3 WITH Ssa#da392372::Make#SsaImpl#ff97b16a::SsaInput#::Definition::getSourceVariable#0#dispred#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0
19665045 ~0% {3} r5 = JOIN r4 WITH Ssa#da392372::Make#SsaImpl#ff97b16a::SsaInput#::Definition::getSourceVariable#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Rhs.1
19497860 ~0% {3} r6 = JOIN r5 WITH Call#841c84e8::MethodCall::getBlock#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
19496808 ~0% {3} r7 = JOIN r6 WITH CfgNodes#ace8e412::ExprCfgNode::getExpr#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
19496808 ~0% {3} r8 = JOIN r7 WITH CfgNodes#ace8e412::ExprNodes::CallCfgNode#ff ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2
19496808 ~0% {3} r9 = JOIN r8 WITH ControlFlowGraph#46cebcbd::CfgNode::getBasicBlock#0#dispred#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
19496808 ~3% {4} r10 = SCAN r9 OUTPUT In.0, true, In.1, In.2
49434 ~7% {3} r11 = JOIN r10 WITH DataFlowPublic#e1781e31::guardControlsBlock#3#fff_120#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2, Lhs.3
117 ~4% {3} r12 = JOIN r11 WITH PolynomialReDoSCustomizations#32063fa3::PolynomialReDoS::lengthGuard#3#cpe#12#ff ON FIRST 1 OUTPUT Lhs.2, Rhs.1, Lhs.1
0 ~0% {1} r13 = JOIN r12 WITH SsaImpl#ff97b16a::Cached::getARead#1#ff ON FIRST 2 OUTPUT Lhs.2
return r13
```
After
```
Evaluated relational algebra for predicate DataFlowPublic#e1781e31::BarrierGuard#PolynomialReDoSCustomizations#32063fa3::PolynomialReDoS::lengthGuard#::getAMaybeGuardedCapturedDef#0#f@137a23jm with tuple counts:
280924 ~0% {2} r1 = SCAN Ssa#da392372::Make#SsaImpl#ff97b16a::SsaInput#::Definition::definesAt#3#dispred#ffff OUTPUT In.2, In.0
280924 ~0% {2} r2 = JOIN r1 WITH BasicBlocks#d5fe3e99::BasicBlock::getScope#0#dispred#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1
103843 ~1% {2} r3 = JOIN r2 WITH SSA#304893e3::Ssa::CapturedEntryDefinition#f ON FIRST 1 OUTPUT Lhs.1, Lhs.0
102517 ~1% {2} r4 = JOIN r3 WITH Call#841c84e8::MethodCall::getBlock#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
102378 ~2% {2} r5 = JOIN r4 WITH CfgNodes#ace8e412::ExprCfgNode::getExpr#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
102378 ~2% {2} r6 = JOIN r5 WITH CfgNodes#ace8e412::ExprNodes::CallCfgNode#ff ON FIRST 1 OUTPUT Lhs.0, Lhs.1
102378 ~0% {2} r7 = JOIN r6 WITH ControlFlowGraph#46cebcbd::CfgNode::getBasicBlock#0#dispred#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1
102378 ~0% {3} r8 = SCAN r7 OUTPUT In.0, true, In.1
7417 ~5% {2} r9 = JOIN r8 WITH DataFlowPublic#e1781e31::guardControlsBlock#3#fff_120#join_rhs ON FIRST 2 OUTPUT Rhs.2, Lhs.2
22 ~0% {2} r10 = JOIN r9 WITH PolynomialReDoSCustomizations#32063fa3::PolynomialReDoS::lengthGuard#3#cpe#12#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1
12 ~0% {2} r11 = JOIN r10 WITH SsaImpl#ff97b16a::Cached::getARead#1#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
12 ~0% {2} r12 = JOIN r11 WITH Ssa#da392372::Make#SsaImpl#ff97b16a::SsaInput#::Definition::getSourceVariable#0#dispred#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1
0 ~0% {1} r13 = JOIN r12 WITH Ssa#da392372::Make#SsaImpl#ff97b16a::SsaInput#::Definition::getSourceVariable#0#dispred#ff ON FIRST 2 OUTPUT Lhs.0
return r13
```
|
2023-09-20 09:51:15 +02:00 |
|
Alex Ford
|
e45edca103
|
Ruby: remove unused import
|
2023-09-18 14:55:11 +01:00 |
|
Tom Hvitved
|
14561c414b
|
Merge pull request #14225 from hvitved/ruby/fix-bad-join
Ruby: Fix a bad join
|
2023-09-15 10:59:24 +02:00 |
|
Tom Hvitved
|
c83a29c27f
|
Ruby: Fix a bad join
Before
```
Evaluated relational algebra for predicate Sinatra#e09174a3::Sinatra::ErbLocalsAccessSummary#fff@22c05bb6 with tuple counts:
212957 ~2195% {1} r1 = JOIN _Constant#54e8b051::ConstantValue::getStringlikeValue#0#dispred#ff_Expr#6fb2af19::Expr::getConstantV__#shared WITH Expr#6fb2af19::Pair::getKey#0#dispred#ff_1#join_rhs ON FIRST 1 OUTPUT Lhs.1
43862468 ~6045% {2} r2 = JOIN r1 WITH Call#841c84e8::MethodCall::getMethodName#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.0
43862468 ~6581% {2} r3 = JOIN r2 WITH AST#a6718388::AstNode::getLocation#0#dispred#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1
43844886 ~40661% {2} r4 = JOIN r3 WITH locations_default ON FIRST 1 OUTPUT Rhs.1, Lhs.1
15004 ~8295% {3} r5 = JOIN r4 WITH project#Sinatra#e09174a3::Sinatra::ErbLocalsHashSyntheticGlobal#ffff_201#join_rhs ON FIRST 1 OUTPUT Rhs.2, Lhs.1, Rhs.1
15004 ~8890% {3} r6 = SCAN r5 OUTPUT ("sinatra_erb_locals_access()" ++ In.0 ++ "#" ++ In.1), In.2, In.1
return r6
```
After
```
Evaluated relational algebra for predicate Sinatra#e09174a3::Sinatra::ErbLocalsAccessSummary#fff@f6249cga with tuple counts:
10237 ~0% {3} r1 = JOIN locations_default_10#join_rhs WITH project#Sinatra#e09174a3::Sinatra::ErbLocalsHashSyntheticGlobal#ffff_201#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2
4015 ~5% {3} r2 = JOIN r1 WITH AST#a6718388::AstNode::getLocation#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
825 ~96% {3} r3 = JOIN r2 WITH Call#841c84e8::MethodCall::getMethodName#0#dispred#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2
940 ~0% {4} r4 = JOIN r3 WITH Constant#54e8b051::ConstantValue::getStringlikeValue#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.0
325402 ~0% {4} r5 = JOIN r4 WITH Expr#6fb2af19::Expr::getConstantValue#0#dispred#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3
231819 ~133147% {3} r6 = JOIN r5 WITH Expr#6fb2af19::Pair::getKey#0#dispred#ff_1#join_rhs ON FIRST 1 OUTPUT Lhs.2, Lhs.3, Lhs.1
231819 ~138805% {3} r7 = SCAN r6 OUTPUT ("sinatra_erb_locals_access()" ++ In.0 ++ "#" ++ In.1), In.2, In.1
return r7
```
|
2023-09-14 21:34:17 +02:00 |
|
Tom Hvitved
|
c0e600c515
|
Merge pull request #12672 from hvitved/ruby/implicit-array-reads-at-sinks
Ruby: Allow for implicit array reads at all sinks during taint tracking
|
2023-09-14 15:39:37 +02:00 |
|
Tom Hvitved
|
61bfc4ec09
|
Merge pull request #14204 from hvitved/ruby/simplify-viable-callable
Ruby: Simplify `viableSourceCallableNonInit`
|
2023-09-14 15:36:47 +02:00 |
|
Erik Krogh Kristensen
|
7e7852eff6
|
Merge pull request #13641 from erik-krogh/multi-char
JS/RB: write qhelp for `incomplete-multi-character-sanitization`
|
2023-09-14 14:48:30 +02:00 |
|
Tom Hvitved
|
e258324960
|
Ruby: Allow for implicit array reads at all sinks during taint tracking
|
2023-09-14 09:40:05 +02:00 |
|
Anders Schack-Mulligen
|
f5a4b792bd
|
C++/Go/Python/Ruby/Swift: Add dummy localMustFlowStep.
|
2023-09-13 15:43:46 +02:00 |
|
Alex Ford
|
79c305c1a1
|
Merge pull request #14124 from alexrford/rb/dataflow-query-refactor
Ruby: Use the new dataflow API for checked in queries
|
2023-09-13 14:24:47 +01:00 |
|
Tom Hvitved
|
f15cbb9316
|
Ruby: Simplify viableSourceCallableNonInit
|
2023-09-13 14:25:28 +02:00 |
|
Tom Hvitved
|
f3a78efe03
|
Ruby: Fix semantic merge conflict
|
2023-09-13 14:04:20 +02:00 |
|
Alex Ford
|
b5ec99cb2f
|
Ruby: fix missing qldoc
|
2023-09-13 12:28:19 +01:00 |
|
Tom Hvitved
|
7400b4741e
|
Merge pull request #14108 from hvitved/dataflow/more-consistency-checks
Data flow: Add `ArgumentNode` consistency checks
|
2023-09-13 11:30:51 +02:00 |
|
Tom Hvitved
|
88d2e2590f
|
Ruby: Rename LambdaSelfParameterNode to LambdaSelfReferenceNode
|
2023-09-13 08:52:22 +02:00 |
|
Tom Hvitved
|
b470c36c82
|
Ruby: Implement multipleArgumentCallExclude
|
2023-09-12 20:05:11 +02:00 |
|
Tom Hvitved
|
c13a8e41ad
|
Data flow: Add more consistency checks
|
2023-09-12 20:05:05 +02:00 |
|
Alex Ford
|
5b013dd5d2
|
Merge branch 'main' into rb/dataflow-query-refactor
|
2023-09-07 14:57:38 +01:00 |
|
Alex Ford
|
947fa0de62
|
Ruby: fix qldoc warnings
|
2023-09-07 14:57:04 +01:00 |
|
Alex Ford
|
4a01de13ef
|
Ruby: avoid toString in query warning
|
2023-09-07 14:54:50 +01:00 |
|
Alex Ford
|
0aee7f6ac6
|
Ruby: qlformat
|
2023-09-07 14:47:02 +01:00 |
|
Alex Ford
|
13300a2e2f
|
Ruby: un-private PathGraph imports
|
2023-09-07 14:24:46 +01:00 |
|
Alex Ford
|
a893911dba
|
Ruby: Use a newtype instead of DataFlow::FlowState for insecure-download
|
2023-09-07 14:22:18 +01:00 |
|
Alex Ford
|
75fdde543f
|
Ruby: Use a newtype instead of DataFlow::FlowState for hardcoded-data
|
2023-09-07 14:13:26 +01:00 |
|
Alex Ford
|
0d7d5a35c9
|
Ruby: Use a newtype instead of DataFlow::FlowState for code-injection
|
2023-09-07 13:39:10 +01:00 |
|
Alex Ford
|
dfc3b33910
|
Ruby: Use a newtype instead of DataFlow::FlowState for unicode-bypass-validation
|
2023-09-07 12:09:47 +01:00 |
|
Tom Hvitved
|
a06a9ffa29
|
Address review comments
|
2023-09-06 11:01:54 +02:00 |
|
Tom Hvitved
|
6de315d086
|
Add change note
|
2023-09-06 11:01:54 +02:00 |
|
Tom Hvitved
|
48e2dcfa35
|
Ruby: Reimplement flow through captured variables using field flow
|
2023-09-06 11:00:55 +02:00 |
|
Tom Hvitved
|
5d1c399371
|
Ruby: Add more data-flow tests for captured variables
|
2023-09-06 10:34:34 +02:00 |
|
Tom Hvitved
|
a2912cd72b
|
Ruby: Use proper PathGraph module in inline flow tests
Gets rid of
```
PathNode is incompatible with PathNode (the type of the edge relation).
```
warnings.
|
2023-09-04 20:27:34 +02:00 |
|
Tom Hvitved
|
4a1163b38c
|
Merge pull request #14109 from hvitved/ruby/hide-desugared-assignments-in-dataflow
|
2023-09-04 19:59:33 +02:00 |
|