CVE-2023-41045:
Graylog vulnerable to insecure source port usage for DNS queries
3.7
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.34079%
CWE
Published
7/6/2023
Updated
11/6/2023
KEV Status
No
Technology
Java
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
org.graylog2:graylog2-server | maven | >= 5.1.0, < 5.1.3 | 5.1.3 |
org.graylog2:graylog2-server | maven | < 5.0.9 | 5.0.9 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stems from Graylog's DNS client using a single socket with a fixed source port. The pre-patch DnsClient:
- In start(), created a single DnsNameResolver via DnsNameResolverBuilder without port randomization
- Maintained persistent resolver instance via 'resolver' field
- Lacked pooling logic present in the patched version (DnsResolverPool)
The patch introduced pool management (DnsResolverPool.takeLease()) and removed the single-resolver initialization. The original start() method's single-resolver initialization directly caused the predictable source port behavior shown in the PoC graph. The constructor's inability to accept pool parameters enforced this insecure design.