CVE-2024-40637
Implicit override for built-in materializations from installed packages in dbt-core
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code. This issue has been fixed in versions 1.8.0, 1.6.14 and 1.7.14. Users are advised to upgrade. There are no kn own workarounds for this vulnerability. Users updating to either 1.6.14 or 1.7.14 will need to set flags.require_explicit_package_overrides_for_builtin_materializations: False in their configuration in dbt_project.yml.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- High
- Privileges needed
- Low
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
4.2
Implicit override for built-in materializations from installed packages in dbt-core
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code. This issue has been fixed in versions 1.8.0, 1.6.14 and 1.7.14. Users are advised to upgrade. There are no kn own workarounds for this vulnerability. Users updating to either 1.6.14 or 1.7.14 will need to set flags.require_explicit_package_overrides_for_builtin_materializations: False in their configuration in dbt_project.yml.
- Record
CVE-2024-40637- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-74
- Updated
- 2026-11-02
EUVDEUVD-2024-0033
4.2
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code. This issue has been fixed in versions 1.8.0, 1.6.14 and 1.7.14. Users are advised to upgrade. There are no kn own workarounds for this vulnerability. Users updating to either 1.6.14 or 1.7.14 will need to set flags.require_explicit_package_overrides_for_builtin_materializations: False in their configuration in dbt_project.yml.
- Record
EUVD-2024-0033- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-p3f3-5ccg-83xq
2.4
dbt has an implicit override for built-in materializations from installed packages
Impact
What kind of vulnerability is it? Who is impacted?
When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code.
Patches
Has the problem been patched? What versions should users upgrade to?
Fixed on 1.8.0, and patched for 1.6.14 and 1.7.14 releases.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
Previously, a materialization defined in a package that shared a name with one of the built-in materializations would be preferred by default, without user action which is surprising and makes it more difficult to detect the insecure behaviour. We've changed the default behaviour to require explicit overrides by users in 1.8.0, and provided the ability to opt-out of built-in materialization overrides in 1.6 and 1.7 via the flags.require_explicit_package_overrides_for_builtin_materializations: False configuration in dbt_project.yml
Versions older than 1.6 are EOL.
References
Are there any links users can visit to find out more?
- dbt documentation: https://docs.getdbt.com/reference/global-configs/legacy-behaviors#behavior-change-flags
- https://www.elementary-data.com/post/are-dbt-packages-secure-the-answer-lies-in-your-dwh-policies
- https://www.equalexperts.com/blog/tech-focus/are-you-at-risk-from-this-critical-dbt-vulnerability/
- https://tempered.works/posts/2024/07/06/preventing-data-theft-with-gcp-service-controls/
- Record
GHSA-p3f3-5ccg-83xq- CVSS 4.0
- 2.4 Low
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N - CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-74, CWE-89, CWE-913
- Updated
- 2026-11-02
NVD
4.2
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code. This issue has been fixed in versions 1.8.0, 1.6.14 and 1.7.14. Users are advised to upgrade. There are no kn own workarounds for this vulnerability. Users updating to either 1.6.14 or 1.7.14 will need to set flags.require_explicit_package_overrides_for_builtin_materializations: False in their configuration in dbt_project.yml.
- Record
CVE-2024-40637- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L - CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-74, CWE-94
- Updated
- 2026-11-02
OSV
4.2
Implicit override for built-in materializations from installed packages in dbt-core
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code. This issue has been fixed in versions 1.8.0, 1.6.14 and 1.7.14. Users are advised to upgrade. There are no kn own workarounds for this vulnerability. Users updating to either 1.6.14 or 1.7.14 will need to set flags.require_explicit_package_overrides_for_builtin_materializations: False in their configuration in dbt_project.yml.
- Record
CVE-2024-40637- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-74
- Updated
- 2026-11-02
OSVGHSA-p3f3-5ccg-83xq
2.4
dbt has an implicit override for built-in materializations from installed packages
Impact
What kind of vulnerability is it? Who is impacted?
When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code.
Patches
Has the problem been patched? What versions should users upgrade to?
Fixed on 1.8.0, and patched for 1.6.14 and 1.7.14 releases.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
Previously, a materialization defined in a package that shared a name with one of the built-in materializations would be preferred by default, without user action which is surprising and makes it more difficult to detect the insecure behaviour. We've changed the default behaviour to require explicit overrides by users in 1.8.0, and provided the ability to opt-out of built-in materialization overrides in 1.6 and 1.7 via the flags.require_explicit_package_overrides_for_builtin_materializations: False configuration in dbt_project.yml
Versions older than 1.6 are EOL.
References
Are there any links users can visit to find out more?
- dbt documentation: https://docs.getdbt.com/reference/global-configs/legacy-behaviors#behavior-change-flags
- https://www.elementary-data.com/post/are-dbt-packages-secure-the-answer-lies-in-your-dwh-policies
- https://www.equalexperts.com/blog/tech-focus/are-you-at-risk-from-this-critical-dbt-vulnerability/
- https://tempered.works/posts/2024/07/06/preventing-data-theft-with-gcp-service-controls/
- Record
GHSA-p3f3-5ccg-83xq- CVSS 4.0
- 2.4 Low
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N - CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-74, CWE-89, CWE-913
- Updated
- 2026-11-02
OSVPYSEC-2024-66
7.8
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. When a user installs a package in dbt, it has the ability to override macros, materializations, and other core components of dbt. This is by design, as it allows packages to extend and customize dbt's functionality. However, this also means that a malicious package could potentially override these components with harmful code. This issue has been fixed in versions 1.8.0, 1.6.14 and 1.7.14. Users are advised to upgrade. There are no kn own workarounds for this vulnerability. Users updating to either 1.6.14 or 1.7.14 will need to set flags.require_explicit_package_overrides_for_builtin_materializations: False in their configuration in dbt_project.yml.
- Record
PYSEC-2024-66- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
dbt-corePyPI |
1.6.0 up to 1.6.14 | 1.6.14 |
dbt-corePyPI |
1.7.0 up to 1.7.14 | 1.7.14 |
dbt-corePyPI |
1.6.0 up to 1.6.14, plus listed versions 1.6.11.6.101.6.111.6.121.6.13 Show 9 moreShow less1.6.1rc11.6.21.6.31.6.41.6.51.6.61.6.71.6.81.6.9 |
1.6.14 |
dbt-corePyPI |
1.7.0 up to 1.7.14, plus listed versions 1.7.11.7.101.7.111.7.121.7.13 Show 8 moreShow less1.7.21.7.31.7.41.7.51.7.61.7.71.7.81.7.9 |
1.7.14 |
dbt-corePyPI |
1.7.0 up to 1.7.14, before 1.6.14, plus listed versions 0.13.00.13.0a10.13.0a20.13.0rc10.13.1 Show 45 moreShow less0.13.1a10.13.1a20.14.00.14.0a10.14.0a20.14.0rc10.14.10.14.1a10.14.1rc10.14.1rc20.14.20.14.30.14.3rc10.14.40.15.00.15.0b10.15.0b20.15.0b30.15.0rc10.15.0rc20.15.10.15.1rc10.15.1rc20.15.20.15.30.15.3rc10.16.00.16.0b10.16.0b20.16.0b30.16.0rc10.16.0rc20.16.0rc30.16.0rc40.16.10.16.1rc10.17.00.17.0b10.17.0b20.17.0rc10.17.0rc20.17.0rc30.17.0rc40.17.10.17.1rc1 |
1.7.141.6.14 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2024-40637 is a medium vulnerability (CVSS 4.2) in Dbt-labs Dbt-core, published July 16, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.37%, the 31st percentile. Fixed in dbt-core 1.6.14.
References
github.com/dbt-labs/dbt-core/security/advisories/GHSA-p3f3-5ccg-83xq
github.com/dbt-labs/dbt-core/commit/3c82a0296d227cb1be295356df314c11716f4ff6
github.com/dbt-labs/dbt-core/commit/87ac4deb00cc9fe334706e42a365903a1d581624
docs.getdbt.com/docs/build/packages
docs.getdbt.com/reference/global-configs/legacy-behaviors
tempered.works/posts/2024/07/06/preventing-data-theft-with-gcp-service-controls
Show 7 moreShow less
elementary-data.com/post/are-dbt-packages-secure-the-answer-lies-in-your-dwh-policies
equalexperts.com/blog/tech-focus/are-you-at-risk-from-this-critical-dbt-vulnerability
nvd.nist.gov/vuln/detail/CVE-2024-40637
github.com/pypa/advisory-database/tree/main/vulns/dbt-core/PYSEC-2024-66.yaml
github.com/advisories/GHSA-p3f3-5ccg-83xq
github.com/CVEProject/cvelistV5/tree/main/cves/2024/40xxx/CVE-2024-40637.json
github.com/dbt-labs/dbt-core
Left out here: 183 versions. The JSON record has them.