Skip to content

Commit dadbe58

Browse files
authored
Merge pull request #3591 from semgrep/merge-develop-to-release
Merge Develop into Release
2 parents 226990a + dc9e24d commit dadbe58

File tree

6 files changed

+142
-6
lines changed

6 files changed

+142
-6
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
let data={pName : "Bob", pAge: "35"};
22
var popup = window.open(/* popup details */);
3+
const transfer = new Uint8Array(1024 * 1024 * 8).map((v, i) => i);
4+
const targetOrigin = "https://example.com"
35

46
//ruleid:wildcard-postmessage-configuration
57
popup.postMessage(data, '*');
68
//ruleid:wildcard-postmessage-configuration
79
popup.postMessage( JSON.stringify( data ), '*' );
10+
//ruleid:wildcard-postmessage-configuration
11+
window.top?.postMessage("data", "*", [
12+
transfer,
13+
]);
814

915
//postMessage Safe Usage
16+
//ok:wildcard-postmessage-configuration
1017
popup.postMessage("hello there!", "http://domain.tld");
18+
//ok:wildcard-postmessage-configuration
1119
popup.postMessage( JSON.stringify( data ), 'semgrep.dev/editor');
20+
//ok:wildcard-postmessage-configuration
21+
popup.postMessage( data, targetOrigin, transfer);

javascript/browser/security/wildcard-postmessage-configuration.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ rules:
2222
- javascript
2323
- typescript
2424
severity: WARNING
25-
pattern: $OBJECT.postMessage(...,'*')
25+
pattern: $OBJECT.postMessage(...,'*',...)

php/lang/security/md5-loose-equality.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ rules:
3535
- 'CWE-697: Incorrect Comparison'
3636
references:
3737
- https://www.php.net/manual/en/types.comparisons.php
38-
- https://www.whitehatsec.com/blog/magic-hashes/
38+
- https://web.archive.org/web/20210430183236/https://www.whitehatsec.com/blog/magic-hashes/
3939
category: security
4040
technology:
4141
- php

python/jwt/security/jwt-hardcode.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ rules:
2424
confidence: HIGH
2525
patterns:
2626
- pattern: |
27-
jwt.encode($X, $SECRET, ...)
28-
- focus-metavariable: $SECRET
29-
- pattern: |
30-
"..."
27+
jwt.encode($_, "...", ...)
3128
languages: [python]
3229
severity: ERROR
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# ruleid:avoid-logging-everything
2+
Rails.logger.info(params)
3+
4+
# ruleid:avoid-logging-everything
5+
Rails.logger.info(params.inspect)
6+
7+
# ruleid:avoid-logging-everything
8+
Rails.logger.info "my private info :)! #{params}"
9+
10+
# ruleid:avoid-logging-everything
11+
Rails.logger.info "my private info :)! #{params.inspect}"
12+
13+
# ruleid:avoid-logging-everything
14+
Rails.logger.info do
15+
params
16+
end
17+
18+
# ruleid:avoid-logging-everything
19+
Rails.logger.info do
20+
params.inspect
21+
end
22+
23+
# ruleid:avoid-logging-everything
24+
Rails.logger.info do
25+
"my private info :)! #{params}"
26+
end
27+
28+
# ruleid:avoid-logging-everything
29+
Rails.logger.info do
30+
"my private info :)! #{params.inspect}"
31+
end
32+
33+
# ruleid:avoid-logging-everything
34+
Rails.logger.info do
35+
params
36+
end
37+
38+
# ok:avoid-logging-everything
39+
Rails.logger.info("some static string")
40+
41+
# ok:avoid-logging-everything
42+
Rails.logger.info(something_that_isnt_params)
43+
44+
# ok:avoid-logging-everything
45+
Rails.logger.info(params[:a_specific_parameter])
46+
47+
# ok:avoid-logging-everything
48+
Rails.logger.info("#{params[:a_specific_parameter]}")
49+
50+
# ok:avoid-logging-everything
51+
Rails.logger.info("not sensitive :( #{params[:a_specific_parameter]}")
52+
53+
# ok:avoid-logging-everything
54+
Rails.logger.info do
55+
"#{not_params} #{still_not_params.inspect} #{params[:test]}"
56+
end
57+
58+
# ok:avoid-logging-everything
59+
Rails.logger.info do
60+
params[:test]
61+
end
62+
63+
# ok:avoid-logging-everything
64+
Rails.logger.debug("go wild #{params} #{params.inspect}")
65+
66+
# ok:avoid-logging-everything
67+
Rails.logger.debug(params)
68+
69+
# ok:avoid-logging-everything
70+
Rails.logger.debug do
71+
params
72+
end
73+
74+
# ok:avoid-logging-everything
75+
Rails.logger.debug do
76+
params.inspect
77+
end
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
rules:
2+
- id: avoid-logging-everything
3+
languages: [ruby]
4+
severity: ERROR
5+
message: Avoid logging `params` and `params.inspect` as this bypasses Rails filter_parameters and may inadvertently log sensitive data. Instead, reference specific fields to ensure only expected data is logged.
6+
metadata:
7+
category: security
8+
technology:
9+
- rails
10+
references:
11+
- https://guides.rubyonrails.org/configuring.html#config-filter-parameters
12+
- https://api.rubyonrails.org/v7.1/classes/ActiveSupport/ParameterFilter.html
13+
cwe:
14+
- 'CWE-532: Insertion of Sensitive Information into Log File'
15+
likelihood: HIGH
16+
impact: MEDIUM
17+
confidence: LOW
18+
subcategory:
19+
- audit
20+
patterns:
21+
- pattern-either:
22+
- pattern: Rails.logger.$METHOD(params)
23+
- pattern: Rails.logger.$METHOD("...#{params}...")
24+
- pattern: Rails.logger.$METHOD(params.inspect)
25+
- pattern: Rails.logger.$METHOD("...#{params.inspect}...")
26+
- pattern: |
27+
Rails.logger.$METHOD do
28+
"...#{params}..."
29+
end
30+
- pattern: |
31+
Rails.logger.$METHOD do
32+
"...#{params.inspect}..."
33+
end
34+
- pattern: |
35+
Rails.logger.$METHOD do
36+
params
37+
end
38+
- pattern: |
39+
Rails.logger.$METHOD do
40+
params.inspect
41+
end
42+
- pattern-not: |
43+
Rails.logger.$METHOD do
44+
params[...]
45+
end
46+
- pattern-not: |
47+
Rails.logger.$METHOD do
48+
"#{params.inspect[...]}"
49+
end
50+
- metavariable-regex:
51+
metavariable: $METHOD
52+
regex: (info|warn|error|fatal|unknown)

0 commit comments

Comments
 (0)