Hi team,

I've gone through https://inlong.apache.org/docs/next/security/ and I
believe the below finding is valid and thus I'm reporting:

I've found a SSRF vulnerability in Apache InLong Manager affecting the
`POST /api/node/testConnection` REST endpoint.

Summary: Any authenticated user (no admin role required) can cause the
InLong Manager server to make outbound HTTP requests or TCP connections to
arbitrary internal hosts and ports, including cloud instance metadata
services. This is confirmed on inlong/manager:latest (v2.4.0-SNAPSHOT,
commit 965f9da3).

Affected component: inlong-manager, DataNodeController.java /
DataNodeServiceImpl.java
Affected versions: at minimum v2.4.0-SNAPSHOT; earlier stable releases also
affected based on code history
CWE: CWE-918
CVSS 3.1: AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N = 7.7 High

Root cause: The testConnection endpoint has no @RequiresRoles annotation
(any logged-in session is sufficient). The URL validation in
UrlVerificationUtils checks only port range and host:port format, with no
allowlist or private-IP denylist. Each operator (Elasticsearch, Pulsar,
MySQL, ClickHouse, Hive, etc.) issues live network connections to the
caller-supplied URL without SSRF-safe HTTP client configuration.

Live-validated PoC summary:

1. Login as a regular user (account_type=1, no admin role).
2. POST /inlong/manager/api/node/testConnection with type=ELASTICSEARCH,
url=http://169.254.169.254/latest/meta-data/
3. Server returns: "elasticsearch connection failed for url=
http://169.254.169.254/latest/meta-data/, username=, password=" --
confirming the server made an outbound request to the AWS metadata endpoint.
4. Repeat with type=PULSAR, adminUrl=http://10.0.0.1:8080 -- server returns
"Pulsar connection failed for AdminUrl=http://10.0.0.1:8080";.
5. Repeat with type=MYSQL, url=127.0.0.1:3306 -- server returns "mysql
connection failed for jdbcUrl=jdbc:mysql://127.0.0.1:3306".

Recommended fix:

1. Add @RequiresRoles to testConnection consistent with other data node
management operations.
2. Extend UrlVerificationUtils to deny link-local, loopback, and RFC 1918
address ranges.
3. Configure RestTemplate instances used by HTTP-based operators to reject
SSRF-prone targets before connecting.

For your review and coordinated disclosure,
Geo

Reply via email to