@fabriziosalmi/slopless 1.11.0 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/engine/api.js +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/rules/VBC-001.yaml +1 -0
- package/rules/VBC-004.yaml +7 -1
- package/rules/VBC-005.yaml +8 -1
- package/rules/VBC-007.yaml +1 -0
- package/rules/VBC-008.yaml +1 -0
- package/rules/VBC-009.yaml +1 -0
- package/rules/VBC-010.yaml +1 -0
- package/rules/VBC-011.yaml +1 -0
- package/rules/VBC-012.yaml +1 -0
- package/rules/VBC-015.yaml +1 -0
- package/rules/VBC-016.yaml +1 -0
- package/rules/VBC-017-B.yaml +1 -0
- package/rules/VBC-017.yaml +1 -0
- package/rules/VBC-018.yaml +1 -0
- package/rules/VBC-019.yaml +1 -0
- package/rules/VBC-023.yaml +1 -0
- package/rules/VBC-024.yaml +1 -0
- package/rules/VBC-027.yaml +1 -0
- package/rules/VBC-030.yaml +1 -0
- package/rules/VBC-033.yaml +1 -0
- package/rules/VBC-034.yaml +1 -0
- package/rules/VBC-035.yaml +1 -0
- package/rules/VBC-039.yaml +1 -0
- package/rules/VBC-042.yaml +1 -0
- package/rules/VBC-048.yaml +1 -0
- package/rules/VBC-049.yaml +1 -0
- package/rules/VBC-051.yaml +1 -0
- package/rules/VBC-052.yaml +1 -0
- package/rules/VBC-053.yaml +1 -0
- package/rules/VBC-054.yaml +1 -0
- package/rules/VBC-056.yaml +1 -0
- package/rules/VBC-057.yaml +1 -0
- package/rules/VBC-058.yaml +1 -0
- package/rules/VBC-063.yaml +1 -0
- package/rules/VBC-068.yaml +1 -0
- package/rules/VBC-070.yaml +1 -0
- package/rules/VBC-079.yaml +1 -0
- package/rules/VBC-080.yaml +1 -0
- package/rules/VBC-084.yaml +1 -0
- package/rules/VBC-086.yaml +1 -0
- package/rules/VBC-090.yaml +1 -0
- package/rules/VBC-096.yaml +1 -0
- package/rules/VBC-097.yaml +1 -0
- package/rules/VBC-101.yaml +1 -0
- package/rules/VBC-103.yaml +1 -0
- package/rules/VBC-104.yaml +1 -0
- package/rules/VBC-112.yaml +1 -0
- package/rules/VBC-113.yaml +1 -0
- package/rules/VBC-117.yaml +1 -0
- package/rules/VBC-123.yaml +1 -0
- package/rules/VBC-131.yaml +1 -0
- package/rules/VBC-150.yaml +1 -0
- package/rules/VBC-215.yaml +1 -0
- package/rules/VBC-334.yaml +1 -0
- package/rules/VBC-338.yaml +1 -0
- package/rules/VBC-385.yaml +1 -0
- package/rules/VBC-901.yaml +1 -0
- package/rules/VBC-902.yaml +1 -0
- package/rules/VBC-903.yaml +1 -0
- package/rules/VBC-904.yaml +1 -0
- package/rules/VBC-905.yaml +1 -0
- package/rules/VBC-906.yaml +1 -0
- package/rules/VBC-907.yaml +1 -0
- package/rules/VBC-908.yaml +1 -0
- package/rules/VBC-910.yaml +1 -0
- package/rules/VBC-911.yaml +1 -0
- package/rules/VBC-916.yaml +1 -0
- package/rules/VBC-917.yaml +1 -0
- package/rules/VBC-927.yaml +1 -0
- package/rules/VBC-928.yaml +1 -0
- package/rules/VBC-937.yaml +1 -0
- package/rules/VBC-938.yaml +1 -0
- package/rules/VBC-939.yaml +1 -0
- package/rules/VBC-940.yaml +1 -0
- package/rules/VBC-941.yaml +1 -0
- package/rules/VBC-942.yaml +1 -0
- package/rules/VBC-943.yaml +1 -0
- package/rules/VBC-944.yaml +10 -1
- package/rules/VBC-945.yaml +1 -0
- package/rules/VBC-946.yaml +1 -0
- package/rules/VBC-947.yaml +1 -0
package/package.json
CHANGED
package/rules/VBC-001.yaml
CHANGED
package/rules/VBC-004.yaml
CHANGED
|
@@ -6,11 +6,14 @@ tags:
|
|
|
6
6
|
- security
|
|
7
7
|
match:
|
|
8
8
|
regex: >-
|
|
9
|
-
(?:"[^"\n]*|'[^'\n]*|`[^`\n]*)(?:\bSELECT\b[^\n]{0,80}?\bFROM\b|\bINSERT\s+INTO\b|\bUPDATE\b[^\n]{0,80}?\bSET\b|\bDELETE\b[^\n]{0,80}?\bFROM\b|\bWHERE\b|\bVALUES\s*\()[^\n]{0,120}?["'`]\s*\+|\+=?\s*["'`][^\n]{0,80}?\b(?:WHERE\s|VALUES\s*\(|SET\s+\w+\s*=(?!\s*(?:\?|\$\d+|:\w+|%[sd])\s*[\"'`])|ORDER\s+BY|GROUP\s+BY|LIMIT\s+\d|AND\s+\w+\s*=(?!\s*(?:\?|\$\d+|:\w+|%[sd])\s*[\"'`])|OR\s+\w+\s*=(?!\s*(?:\?|\$\d+|:\w+|%[sd])\s*[\"'`]))
|
|
9
|
+
(?:"[^"\n]*|'[^'\n]*|`[^`\n]*)(?:\bSELECT\b[^\n]{0,80}?\bFROM\b|\bINSERT\s+INTO\b|\bUPDATE\b[^\n]{0,80}?\bSET\b|\bDELETE\b[^\n]{0,80}?\bFROM\b|\bWHERE\b|\bVALUES\s*\()[^\n]{0,120}?["'`]\s*\+|\+=?\s*(?=[^\n]*["'`]\s*\+)["'`][^\n]{0,80}?\b(?:WHERE\s|VALUES\s*\(|SET\s+\w+\s*=(?!\s*(?:\?|\$\d+|:\w+|%[sd])\s*[\"'`])|ORDER\s+BY|GROUP\s+BY|LIMIT\s+\d|AND\s+\w+\s*=(?!\s*(?:\?|\$\d+|:\w+|%[sd])\s*[\"'`])|OR\s+\w+\s*=(?!\s*(?:\?|\$\d+|:\w+|%[sd])\s*[\"'`]))
|
|
10
10
|
flags: i
|
|
11
11
|
# A fragment that closes on a placeholder injects nothing: `q += " AND p = ?"`
|
|
12
12
|
# beside `args = append(args, v)` is how a dynamic WHERE clause is built
|
|
13
13
|
# safely, and it is the shape every Go and Python query builder uses.
|
|
14
|
+
# Appending a literal concatenates nothing: `q += " ORDER BY id DESC;"` adds
|
|
15
|
+
# a clause the code already decided. The branch now asks that a value actually
|
|
16
|
+
# arrive, which is the thing the rule is about.
|
|
14
17
|
scan: all
|
|
15
18
|
file_types:
|
|
16
19
|
- js
|
|
@@ -23,6 +26,7 @@ match:
|
|
|
23
26
|
- rb
|
|
24
27
|
- java
|
|
25
28
|
- cs
|
|
29
|
+
- astro
|
|
26
30
|
message: >-
|
|
27
31
|
SQL built by string concatenation at line {line}. An attacker controlling the interpolated
|
|
28
32
|
value can rewrite the statement. Use parameterized queries or a query builder that binds
|
|
@@ -32,6 +36,8 @@ tests:
|
|
|
32
36
|
- db.query("SELECT * FROM users WHERE id = " + id);
|
|
33
37
|
- sql += " AND status = " + status;
|
|
34
38
|
quiet:
|
|
39
|
+
- 'q += " ORDER BY acquired DESC;"'
|
|
40
|
+
- 'q += " LIMIT 10;"'
|
|
35
41
|
- db.query("SELECT * FROM users WHERE id = $1", [id]);
|
|
36
42
|
- 'q += ` AND project = ?`'
|
|
37
43
|
- sql += " AND id = $1"
|
package/rules/VBC-005.yaml
CHANGED
|
@@ -5,10 +5,14 @@ category: core
|
|
|
5
5
|
tags:
|
|
6
6
|
- best-practice
|
|
7
7
|
match:
|
|
8
|
-
|
|
8
|
+
# `var(--x)` is CSS asking for a custom property, not a JavaScript
|
|
9
|
+
# declaration. An inline <style> block in an .astro or .html file is full
|
|
10
|
+
# of them, and `var (x)` is not valid JavaScript, so the exclusion is free.
|
|
11
|
+
regex: (?<!\bdeclare\s{1,4})\bvar\b(?!\s*\()
|
|
9
12
|
file_types:
|
|
10
13
|
- js
|
|
11
14
|
- ts
|
|
15
|
+
- astro
|
|
12
16
|
fix:
|
|
13
17
|
regex_replace:
|
|
14
18
|
pattern: \bvar\b
|
|
@@ -18,6 +22,9 @@ tests:
|
|
|
18
22
|
fire:
|
|
19
23
|
- var total = 0;
|
|
20
24
|
quiet:
|
|
25
|
+
# CSS asking for a custom property, which an inline <style> block is full of.
|
|
26
|
+
- ' font-family: var(--font-serif);'
|
|
27
|
+
- ' width: calc(100% - var(--gap));'
|
|
21
28
|
- const total = 0;
|
|
22
29
|
- let total = 0;
|
|
23
30
|
- file: global.d.ts
|
package/rules/VBC-007.yaml
CHANGED
package/rules/VBC-008.yaml
CHANGED
package/rules/VBC-009.yaml
CHANGED
package/rules/VBC-010.yaml
CHANGED
package/rules/VBC-011.yaml
CHANGED
package/rules/VBC-012.yaml
CHANGED
package/rules/VBC-015.yaml
CHANGED
package/rules/VBC-016.yaml
CHANGED
package/rules/VBC-017-B.yaml
CHANGED
package/rules/VBC-017.yaml
CHANGED
package/rules/VBC-018.yaml
CHANGED
package/rules/VBC-019.yaml
CHANGED
package/rules/VBC-023.yaml
CHANGED
package/rules/VBC-024.yaml
CHANGED
package/rules/VBC-027.yaml
CHANGED
package/rules/VBC-030.yaml
CHANGED
package/rules/VBC-033.yaml
CHANGED
package/rules/VBC-034.yaml
CHANGED
package/rules/VBC-035.yaml
CHANGED
package/rules/VBC-039.yaml
CHANGED
package/rules/VBC-042.yaml
CHANGED
package/rules/VBC-048.yaml
CHANGED
package/rules/VBC-049.yaml
CHANGED
package/rules/VBC-051.yaml
CHANGED
package/rules/VBC-052.yaml
CHANGED
package/rules/VBC-053.yaml
CHANGED
package/rules/VBC-054.yaml
CHANGED
package/rules/VBC-056.yaml
CHANGED
package/rules/VBC-057.yaml
CHANGED
package/rules/VBC-058.yaml
CHANGED
package/rules/VBC-063.yaml
CHANGED
package/rules/VBC-068.yaml
CHANGED
package/rules/VBC-070.yaml
CHANGED
package/rules/VBC-079.yaml
CHANGED
package/rules/VBC-080.yaml
CHANGED
package/rules/VBC-084.yaml
CHANGED
package/rules/VBC-086.yaml
CHANGED
package/rules/VBC-090.yaml
CHANGED
package/rules/VBC-096.yaml
CHANGED
package/rules/VBC-097.yaml
CHANGED
package/rules/VBC-101.yaml
CHANGED
package/rules/VBC-103.yaml
CHANGED
package/rules/VBC-104.yaml
CHANGED
package/rules/VBC-112.yaml
CHANGED
package/rules/VBC-113.yaml
CHANGED
package/rules/VBC-117.yaml
CHANGED
package/rules/VBC-123.yaml
CHANGED
package/rules/VBC-131.yaml
CHANGED
package/rules/VBC-150.yaml
CHANGED
package/rules/VBC-215.yaml
CHANGED
package/rules/VBC-334.yaml
CHANGED
package/rules/VBC-338.yaml
CHANGED
package/rules/VBC-385.yaml
CHANGED
package/rules/VBC-901.yaml
CHANGED
package/rules/VBC-902.yaml
CHANGED
package/rules/VBC-903.yaml
CHANGED
package/rules/VBC-904.yaml
CHANGED
package/rules/VBC-905.yaml
CHANGED
package/rules/VBC-906.yaml
CHANGED
package/rules/VBC-907.yaml
CHANGED
package/rules/VBC-908.yaml
CHANGED