Skip to content

Commit a639e91

Browse files
Merge pull request #683 from joernNNN:pinot-cve-2024-56325
PiperOrigin-RevId: 816646580 Change-Id: Ifac2ae473dd3f3f41d498c480d96878ab584b1b2
2 parents 849bf5c + 85834e6 commit a639e91

File tree

2 files changed

+140
-0
lines changed

2 files changed

+140
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# proto-file: proto/templated_plugin.proto
2+
# proto-message: TemplatedPlugin
3+
4+
###############
5+
# PLUGIN INFO #
6+
###############
7+
8+
info: {
9+
type: VULN_DETECTION
10+
name: "ApachePinot_CVE_2024_56325"
11+
author: "Joern w"
12+
version: "1.0"
13+
}
14+
15+
finding: {
16+
main_id: {
17+
publisher: "GOOGLE"
18+
value: "APACHEPINOT_CVE_2024_56325"
19+
}
20+
severity: HIGH
21+
title: "ApachePinot is vulnerable to Authentication Bypass"
22+
description: "The instance of ApachePinot is vulnerable Authentication Bypass. This allows to create a new user which can run pinot SQL queries."
23+
recommendation: "Update to version 1.4.0 or higher."
24+
related_id: {
25+
publisher: "CVE"
26+
value: "CVE-2024-56325"
27+
}
28+
}
29+
30+
config: {}
31+
32+
###########
33+
# ACTIONS #
34+
###########
35+
36+
actions: {
37+
name: "fingerprint_pinot"
38+
http_request: {
39+
method: GET
40+
uri: "/"
41+
response: {
42+
http_status: 200
43+
expect_all: {
44+
conditions: [
45+
{ body: {} contains: '<title>Apache Pinot</title>' },
46+
{ body: {} contains: "<meta name=\"description\" content=\"Pinot Controller UI\">" }
47+
]
48+
}
49+
}
50+
}
51+
}
52+
53+
actions: {
54+
name: "check_auth_bypass"
55+
http_request: {
56+
method: GET
57+
uri: "/tables;."
58+
response: {
59+
http_status: 200
60+
expect_all: {
61+
conditions: [
62+
{ body: {} contains: '{"tables":[]}' }
63+
]
64+
}
65+
}
66+
}
67+
}
68+
69+
#############
70+
# WORKFLOWS #
71+
#############
72+
73+
workflows: {
74+
actions: [
75+
"fingerprint_pinot",
76+
"check_auth_bypass"
77+
]
78+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# proto-file: proto/templated_plugin_tests.proto
2+
# proto-message: TemplatedPluginTests
3+
4+
config: {
5+
tested_plugin: "ApachePinot_CVE_2024_56325"
6+
disabled: false
7+
}
8+
9+
tests: {
10+
name: "whenVulnerable_returnsTrue"
11+
expect_vulnerability: true
12+
13+
mock_http_server: {
14+
mock_responses: [
15+
{
16+
uri: "/"
17+
status: 200
18+
body_content: '<title>Apache Pinot</title> <meta name="description" content="Pinot Controller UI">'
19+
},
20+
{
21+
uri: "/tables;."
22+
status: 200
23+
body_content: '{"tables":[]}'
24+
}
25+
]
26+
}
27+
}
28+
29+
tests: {
30+
name: "whenNotVulnerable_returnsFalse"
31+
expect_vulnerability: false
32+
33+
mock_http_server: {
34+
mock_responses: [
35+
{
36+
uri: "/"
37+
status: 200
38+
body_content: '<title>Apache Pinot</title> <metaname="description" content="Pinot Controller UI">'
39+
},
40+
{
41+
uri: "/tables\\;."
42+
status: 403
43+
body_content: '{"code":401,"error":"HTTP 401 Unauthorized"}'
44+
}
45+
]
46+
}
47+
}
48+
49+
tests: {
50+
name: "whenNotApachePinot_returnsFalse"
51+
expect_vulnerability: false
52+
53+
mock_http_server: {
54+
mock_responses: [
55+
{
56+
uri: "TSUNAMI_MAGIC_ANY_URI"
57+
status: 200
58+
body_content: "Login to your Drupal account"
59+
}
60+
]
61+
}
62+
}

0 commit comments

Comments
 (0)