{"id":"CVE-2024-36105","aliases":["GHSA-pmrx-695r-4349","PYSEC-2026-1292"],"title":"dbt allows Binding to an Unrestricted IP Address via socketsocket","summary":"dbt allows Binding to an Unrestricted IP Address via socketsocket","severity":"medium","cvss":5.3,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","vendor":"dbt-core","product":"dbt-core","ecosystem":"pip","affected":["dbt-core < 1.6.15","dbt-core >= 1.7.0, < 1.7.15","dbt-core >= 1.8.0, < 1.8.1"],"patched":["dbt-core 1.6.15","dbt-core 1.7.15","dbt-core 1.8.1"],"published":"2024-05-28","updated":"2026-09-10","sourceUpdated":"2026-09-10T03:49:18.769494383Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-pmrx-695r-4349","references":[{"url":"https://github.com/dbt-labs/dbt-core/security/advisories/GHSA-pmrx-695r-4349"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-36105"},{"url":"https://github.com/dbt-labs/dbt-core/issues/10209"},{"url":"https://github.com/dbt-labs/dbt-core/pull/10208"},{"url":"https://github.com/dbt-labs/dbt-core/commit/0c08d7a19ad1740be3cb0b2e6d9d64f6537176f7"},{"url":"https://cwe.mitre.org/data/definitions/1327.html"},{"url":"https://docs.python.org/3/library/socket.html#socket-families"},{"url":"https://docs.securesauce.dev/rules/PY030"},{"url":"https://github.com/dbt-labs/dbt-core"},{"url":"https://github.com/dbt-labs/dbt-core/blob/main/core/dbt/task/docs/serve.py#L23C38-L23C39"},{"url":"https://github.com/dbt-labs/dbt-core/releases/tag/v1.6.15"},{"url":"https://github.com/dbt-labs/dbt-core/releases/tag/v1.7.15"},{"url":"https://github.com/dbt-labs/dbt-core/releases/tag/v1.8.1"}],"tags":["osv","pip"],"epss":0.0071,"epssPercentile":0.5213,"ingestedAt":"2026-07-08T18:25:51.803Z","slug":"CVE-2024-36105","body":"## Overview\n\n### Summary\n\nBinding to `INADDR_ANY (0.0.0.0)` or `IN6ADDR_ANY (::)` exposes an application on all network interfaces, increasing the risk of unauthorized access.\n\nWhile 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). \n\n### Details\n\nAs 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 `\"::\"`. \n\nhttps://github.com/dbt-labs/dbt-core/blob/main/core/dbt/task/docs/serve.py#L23C38-L23C39\n\nThe text around this code also imply the intention is to host docs only on localhost.\n\n### PoC\n\nTo recreate, run the docs ServeTask.run() to stand up the HTTP server.  Then run `netstat` to see what addresses this process is bound.\n\n### Impact\n\nA 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.\n\nFurther references:\nhttps://docs.python.org/3/library/socket.html#socket-families\nhttps://docs.securesauce.dev/rules/PY030\nhttps://cwe.mitre.org/data/definitions/1327.html\n\n### Patches\nThe issue has has been mitigated in [dbt-core v1.6.15](https://github.com/dbt-labs/dbt-core/releases/tag/v1.6.15), [dbt-core v1.7.15](https://github.com/dbt-labs/dbt-core/releases/tag/v1.7.15), and [dbt-core v1.8.1](https://github.com/dbt-labs/dbt-core/releases/tag/v1.8.1) by binding to localhost explicitly by default in `dbt docs serve` (https://github.com/dbt-labs/dbt-core/issues/10209).\n\n\n## Affected packages\n\n- `dbt-core < 1.6.15`\n- `dbt-core >= 1.7.0, < 1.7.15`\n- `dbt-core >= 1.8.0, < 1.8.1`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `dbt-core 1.6.15`\n- `dbt-core 1.7.15`\n- `dbt-core 1.8.1`","depth":"sunlit","depthScore":29,"depthScoreParts":{"impact":29.2,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}