erik-krogh
57c757c0a6
Ruby: delete outdated deprecation in test code
2023-10-09 09:14:55 +02:00
erik-krogh
e0fefce2a3
Ruby: delete various deprecated predicates
2023-10-09 09:14:54 +02:00
erik-krogh
0d992a3d1f
delete old deprecated aliases of various regex libraries
2023-10-09 09:14:54 +02:00
erik-krogh
4bc4e0845d
delete the deprecated isBarrierGuard predicate from the shared dataflow library, and its uses
2023-10-07 21:48:49 +02:00
Henry Mercer
da92da2204
Bump minor versions of packs we regularly release
2023-10-03 16:31:23 +01:00
Henry Mercer
f3847b3f51
Merge branch 'main' into henrymercer/rc-3.11-mergeback
2023-10-03 16:30:23 +01:00
Asger F
0d96ed8aee
Merge pull request #14305 from asgerf/shared/flow-state-inout-barriers
...
Shared: add in/out barriers with flow state
2023-09-28 11:07:23 +02:00
Anders Schack-Mulligen
68d05eb342
Ruby: Minor simplification.
2023-09-28 08:58:55 +02:00
Tom Hvitved
c570083163
Ruby: Improve performance of flow through (hash) splats
2023-09-27 11:49:31 +02:00
Harry Maclean
dc2acf5a39
Merge pull request #14090 from hmac/splat-flow-4
...
Ruby: More splat flow (alternative)
2023-09-27 10:22:57 +01:00
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
Asger F
d501856519
Update DataFlowImpl.qll copies
2023-09-25 10:05:29 +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
github-actions[bot]
3acf5244b0
Post-release preparation for codeql-cli-2.14.6
2023-09-20 10:25:10 +00: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
github-actions[bot]
0a3670727f
Release preparation for version 2.14.6
2023-09-19 11:40:30 +00: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
Harry Maclean
4168245fc0
Ruby: Fix doc comments
2023-09-14 10:02:27 +01:00
Harry Maclean
29a8a82e92
Ruby: add more docs for splat flow
2023-09-14 09:26:42 +01:00
Tom Hvitved
97ed5b8afb
Ruby: Improvments to splat flow
...
- Only step through a `SynthSplatParameterElementNode` when there is a splat parameter
at index > 0.
- Model read+stores via `SynthSplatArgumentElementNode` as a single read-store
step in type tracking.
2023-09-14 09:26:42 +01:00
Harry Maclean
bf51cbad88
Ruby: Update test fixture
2023-09-14 09:26:38 +01:00
Tom Hvitved
e11a4b63e9
Ruby: Remove SynthSplatArgParameterNode
2023-09-14 09:26:38 +01:00
Harry Maclean
5a6a52b767
Ruby: Use fewer SynthSplatArgumentElementNodes
...
In cases such as
def f(x, *y); end
f(*[1, 2])
we don't need any `SynthSplatArgumentElementNodes`. We get flow from the
splat argument to a `SynthSplatParameterNode` via `parameterMatch`, then
from element 0 of the synth splat to the positional param `x` via a
read step.
We add a read step from element 1 to `SynthSplatParameterElementNode(1)`.
From there we get flow to element 0 of `*y` via an existing store step.
2023-09-14 09:26:38 +01:00
Harry Maclean
4c1beea465
Ruby: Address review comments
2023-09-14 09:26:33 +01:00
Harry Maclean
3c8683428b
Ruby: Model more splat flow (alternative approach)
2023-09-14 08:55:59 +01:00
Harry Maclean
9ccd8cd248
Ruby: Update documentation
2023-09-14 08:54:49 +01:00
Harry Maclean
ef63ea8399
Ruby: Update fixture
2023-09-14 08:54:48 +01:00
Harry Maclean
7ebd51163e
Ruby: Handle more splat arg flow
...
Allow flow from a splat argument to a positional parameter in cases
where there are positional arguments left of the splat. For example:
def foo(x, y, z); end
foo(1, *[2, 3])
2023-09-14 08:54:48 +01:00
Tom Hvitved
e258324960
Ruby: Allow for implicit array reads at all sinks during taint tracking
2023-09-14 09:40:05 +02:00