Skip to content

Commit 90785ac

Browse files
authored
Semgrep Parser: Add new severities (#10936)
1 parent e014f92 commit 90785ac

3 files changed

Lines changed: 108 additions & 4 deletions

File tree

dojo/tools/semgrep/parser.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,16 @@ def get_findings(self, filename, test):
130130
return list(dupes.values())
131131

132132
def convert_severity(self, val):
133-
if "CRITICAL" == val.upper():
133+
upper_value = val.upper()
134+
if upper_value == "CRITICAL":
134135
return "Critical"
135-
elif "WARNING" == val.upper():
136+
elif upper_value in ["WARNING", "MEDIUM"]:
136137
return "Medium"
137-
elif "ERROR" == val.upper() or "HIGH" == val.upper():
138+
elif upper_value in ["ERROR", "HIGH"]:
138139
return "High"
139-
elif "INFO" == val.upper():
140+
elif upper_value == "LOW":
141+
return "Low"
142+
elif upper_value == "INFO":
140143
return "Info"
141144
else:
142145
msg = f"Unknown value for severity: {val}"
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
{
2+
"errors": [],
3+
"interfile_languages_used": [],
4+
"paths": {
5+
"scanned": []
6+
},
7+
"results": [
8+
{
9+
"check_id": "rules.sast.dev.generic.internal.detect-cdn-usage-react-express",
10+
"end": {
11+
"col": 89,
12+
"line": 48,
13+
"offset": 1772
14+
},
15+
"extra": {
16+
"engine_kind": "OSS",
17+
"fingerprint": "d30b51e68d2d56fb34e5a87920208e0f18b71dbec62b2ad91d1b55e566c5796c64b1e161d7fd3c0f65834756474c0617c29b7c5bd76b76f14f2d3fc537a664b9_0",
18+
"is_ignored": false,
19+
"lines": "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>",
20+
"message": "Potential CDN usage detected. Consider removing or replacing CDN references to comply with GDPR and also avoid supply chain risk",
21+
"metadata": {
22+
"category": "security",
23+
"technology": "cdn"
24+
},
25+
"metavars": {},
26+
"severity": "LOW",
27+
"validation_state": "NO_VALIDATOR"
28+
},
29+
"path": "/Users/user.example/git/company/full-codebase/company/lead-magnet/src/templates/base.html.twig",
30+
"start": {
31+
"col": 1,
32+
"line": 48,
33+
"offset": 1684
34+
}
35+
},
36+
{
37+
"check_id": "rules.sast.dev.generic.internal.detect-cdn-usage-react-express",
38+
"end": {
39+
"col": 206,
40+
"line": 49,
41+
"offset": 1978
42+
},
43+
"extra": {
44+
"engine_kind": "OSS",
45+
"fingerprint": "d30b51e68d2d56fb34e5a87920208e0f18b71dbec62b2ad91d1b55e566c5796c64b1e161d7fd3c0f65834756474c0617c29b7c5bd76b76f14f2d3fc537a664b9_1",
46+
"is_ignored": false,
47+
"lines": "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js\" integrity=\"sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1\" crossorigin=\"anonymous\"></script>",
48+
"message": "Potential CDN usage detected. Consider removing or replacing CDN references to comply with GDPR and also avoid supply chain risk",
49+
"metadata": {
50+
"category": "security",
51+
"technology": "cdn"
52+
},
53+
"metavars": {},
54+
"severity": "LOW",
55+
"validation_state": "NO_VALIDATOR"
56+
},
57+
"path": "/Users/user.example/git/company/full-codebase/company/lead-magnet/src/templates/base.html.twig",
58+
"start": {
59+
"col": 1,
60+
"line": 49,
61+
"offset": 1773
62+
}
63+
},
64+
{
65+
"check_id": "rules.sast.dev.generic.internal.detect-cdn-usage-react-express",
66+
"end": {
67+
"col": 203,
68+
"line": 50,
69+
"offset": 2181
70+
},
71+
"extra": {
72+
"engine_kind": "OSS",
73+
"fingerprint": "d30b51e68d2d56fb34e5a87920208e0f18b71dbec62b2ad91d1b55e566c5796c64b1e161d7fd3c0f65834756474c0617c29b7c5bd76b76f14f2d3fc537a664b9_2",
74+
"is_ignored": false,
75+
"lines": "<script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js\" integrity=\"sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM\" crossorigin=\"anonymous\"></script>{% block javascripts %}{% endblock %}",
76+
"message": "Potential CDN usage detected. Consider removing or replacing CDN references to comply with GDPR and also avoid supply chain risk",
77+
"metadata": {
78+
"category": "security",
79+
"technology": "cdn"
80+
},
81+
"metavars": {},
82+
"severity": "LOW",
83+
"validation_state": "NO_VALIDATOR"
84+
},
85+
"path": "/Users/user.example/git/company/full-codebase/company/lead-magnet/src/templates/base.html.twig",
86+
"start": {
87+
"col": 1,
88+
"line": 50,
89+
"offset": 1979
90+
}
91+
}
92+
],
93+
"skipped_rules": [],
94+
"version": "1.84.1"
95+
}

unittests/tools/test_semgrep_parser.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ def test_parse_issue_8435(self):
121121
findings = parser.get_findings(testfile, Test())
122122
self.assertEqual(1, len(findings))
123123

124+
def test_parse_low_medium_high_severity(self):
125+
with open("unittests/scans/semgrep/high-medium-low-severities.json", encoding="utf-8") as testfile:
126+
parser = SemgrepParser()
127+
findings = parser.get_findings(testfile, Test())
128+
self.assertEqual(3, len(findings))
129+
124130
def test_parse_sca_deployments_vulns(self):
125131
with open("unittests/scans/semgrep/sca-deployments-vulns.json", encoding="utf-8") as testfile:
126132
parser = SemgrepParser()

0 commit comments

Comments
 (0)