Skip to content

dbt allows Binding to an Unrestricted IP Address via socketsocket

Moderate severity GitHub Reviewed Published May 27, 2024 in dbt-labs/dbt-core • Updated May 28, 2024

Package

pip dbt-core (pip)

Affected versions

< 1.6.15
>= 1.7.0, < 1.7.15
= 1.8.0

Patched versions

1.6.15
1.7.15
1.8.1

Description

Summary

Binding to INADDR_ANY (0.0.0.0) or IN6ADDR_ANY (::) exposes an application on all network interfaces, increasing the risk of unauthorized access.

While doing some static analysis and code inspection, I found the following code binding a socket to INADDR_ANY by passing "" as the address. This effectively binds to any network interface on the local system, not just localhost (127.0.0.1).

Details

As stated in the Python docs, a special form for address is accepted instead of a host address: '' represents INADDR_ANY, equivalent to "0.0.0.0". On systems with IPv6, '' represents IN6ADDR_ANY, which is equivalent to "::".

https://github.com/dbt-labs/dbt-core/blob/main/core/dbt/task/docs/serve.py#L23C38-L23C39

The text around this code also imply the intention is to host docs only on localhost.

PoC

To recreate, run the docs ServeTask.run() to stand up the HTTP server. Then run netstat to see what addresses this process is bound.

Impact

A user who serves docs on an unsecured public network, may unknowingly be hosting an unsecured (http) web site for any remote user/system to access on the same network.

Further references:
https://docs.python.org/3/library/socket.html#socket-families
https://docs.securesauce.dev/rules/PY030
https://cwe.mitre.org/data/definitions/1327.html

Patches

The issue has has been mitigated in dbt-core v1.6.15, dbt-core v1.7.15, and dbt-core v1.8.1 by binding to localhost explicitly by default in dbt docs serve (dbt-labs/dbt-core#10209).

References

@MichelleArk MichelleArk published to dbt-labs/dbt-core May 27, 2024
Published by the National Vulnerability Database May 27, 2024
Published to the GitHub Advisory Database May 28, 2024
Reviewed May 28, 2024
Last updated May 28, 2024

Severity

Moderate
5.3
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Weaknesses

CVE ID

CVE-2024-36105

GHSA ID

GHSA-pmrx-695r-4349

Source code

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.