ghsa-v4mq-x674-ff73
Vulnerability from github
Impact
Users who use IAM OIDC custom resource provider package will download CA Thumbprints as part of the custom resource workflow, https://github.com/aws/aws-cdk/blob/d16482fc8a4a3e1f62751f481b770c09034df7d2/packages/%40aws-cdk/custom-resource-handlers/lib/aws-iam/oidc-handler/external.ts#L34.
However, the current tls.connect
method will always set rejectUnauthorized: false
which is a potential security concern. CDK should follow the best practice and set rejectUnauthorized: true
. However, this could be a breaking change for existing CDK applications and we should fix this with a feature flag.
Note that this is marked as low severity Security advisory because the issuer url is provided by CDK users who define the CDK application. If they insist on connecting to a unauthorized OIDC provider, CDK should not disallow this. Additionally, the code block is run in a Lambda environment which mitigate the MITM attack.
As a best practice, CDK should still fix this issue under a feature flag to avoid regression.
packages/@aws-cdk/custom-resource-handlers/lib/aws-iam/oidc-handler/external.ts
❯❱ problem-based-packs.insecure-transport.js-node.bypass-tls-verification.bypass-tls-verification
Checks for setting the environment variable NODE_TLS_REJECT_UNAUTHORIZED to 0, which disables TLS
verification. This should only be used for debugging purposes. Setting the option rejectUnauthorized
to false bypasses verification against the list of trusted CAs, which also leads to insecure
transport.
Patches
The patch is in progress. To mitigate, upgrade to CDK v2.177.0 (Expected release date 2025-02-22).
Once upgraded, please make sure the feature flag '@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections' is set to true in cdk.context.json
or cdk.json
. More details on feature flag setting is here.
Workarounds
N/A
References
https://github.com/aws/aws-cdk/issues/32920
{ "affected": [ { "package": { "ecosystem": "npm", "name": "aws-cdk-lib" }, "ranges": [ { "events": [ { "introduced": "0" }, { "fixed": "2.177.0" } ], "type": "ECOSYSTEM" } ] } ], "aliases": [ "CVE-2025-23206" ], "database_specific": { "cwe_ids": [ "CWE-347" ], "github_reviewed": true, "github_reviewed_at": "2025-01-17T21:22:25Z", "nvd_published_at": "2025-01-17T21:15:12Z", "severity": "LOW" }, "details": "### Impact\nUsers who use IAM OIDC custom resource provider package will download CA Thumbprints as part of the custom resource workflow, https://github.com/aws/aws-cdk/blob/d16482fc8a4a3e1f62751f481b770c09034df7d2/packages/%40aws-cdk/custom-resource-handlers/lib/aws-iam/oidc-handler/external.ts#L34. \n\nHowever, the current `tls.connect` method will always set `rejectUnauthorized: false` which is a potential security concern. CDK should follow the best practice and set `rejectUnauthorized: true`. However, this could be a breaking change for existing CDK applications and we should fix this with a feature flag. \n\nNote that this is marked as low severity Security advisory because the issuer url is provided by CDK users who define the CDK application. If they insist on connecting to a unauthorized OIDC provider, CDK should not disallow this. Additionally, the code block is run in a Lambda environment which mitigate the MITM attack.\n\nAs a best practice, CDK should still fix this issue under a feature flag to avoid regression.\n\n```\npackages/@aws-cdk/custom-resource-handlers/lib/aws-iam/oidc-handler/external.ts\n\u276f\u2771 problem-based-packs.insecure-transport.js-node.bypass-tls-verification.bypass-tls-verification\nChecks for setting the environment variable NODE_TLS_REJECT_UNAUTHORIZED to 0, which disables TLS\nverification. This should only be used for debugging purposes. Setting the option rejectUnauthorized\nto false bypasses verification against the list of trusted CAs, which also leads to insecure\ntransport.\n```\n\n### Patches\nThe patch is in progress. To mitigate, upgrade to CDK v2.177.0 (Expected release date 2025-02-22). \nOnce upgraded, please make sure the feature flag \u0027@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections\u0027 is set to true in `cdk.context.json` or `cdk.json`. More details on feature flag setting is [here](https://docs.aws.amazon.com/cdk/v2/guide/featureflags.html).\n\n### Workarounds\nN/A\n\n### References\nhttps://github.com/aws/aws-cdk/issues/32920\n", "id": "GHSA-v4mq-x674-ff73", "modified": "2025-01-29T18:22:28Z", "published": "2025-01-17T21:22:25Z", "references": [ { "type": "WEB", "url": "https://github.com/aws/aws-cdk/security/advisories/GHSA-v4mq-x674-ff73" }, { "type": "ADVISORY", "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-23206" }, { "type": "WEB", "url": "https://github.com/aws/aws-cdk/issues/32920" }, { "type": "WEB", "url": "https://github.com/aws/aws-cdk/pull/32921" }, { "type": "WEB", "url": "https://github.com/aws/aws-cdk/commit/3e4f3773bfa48b75bf0adc7d53d46bbec7714a9e#diff-38a03353f201fd2e520df67fb43f9f000257bffd6e9acaa5569cce7005a77560" }, { "type": "WEB", "url": "https://docs.aws.amazon.com/cdk/v2/guide/featureflags.html" }, { "type": "PACKAGE", "url": "https://github.com/aws/aws-cdk" }, { "type": "WEB", "url": "https://github.com/aws/aws-cdk/blob/d16482fc8a4a3e1f62751f481b770c09034df7d2/packages/%40aws-cdk/custom-resource-handlers/lib/aws-iam/oidc-handler/external.ts#L34" }, { "type": "WEB", "url": "https://github.com/aws/aws-cdk/releases/tag/v2.177.0" } ], "schema_version": "1.4.0", "severity": [ { "score": "CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:A/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N", "type": "CVSS_V4" } ], "summary": "AWS Cloud Development Kit (AWS CDK) IAM OIDC custom resource allows connection to unauthorized OIDC provider" }
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.