Skip to main content

@hulumi/policies CVE-2026-48032

| EUVDEUVD-2026-48723 HIGH
Incorrect Comparison (CWE-697)
2026-06-10 https://github.com/kerberosmansour/hulumi GHSA-g759-4pxw-6692
8.3
CVSS 4.0 · Vendor: https://github.com/kerberosmansour/hulumi
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify victim IAM role trusting multiple OIDC providers
  2. Delivery
    Confirm @hulumi/policies missed wildcard sub:
  3. Exploit
    Open fork PR with malicious workflow
  4. Execution
    Workflow requests GitHub OIDC token
  5. Persist
    configure-aws-credentials assumes role
  6. Impact
    Operate in AWS account with role's permissions

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Incorrect comparison
Exploitation Conditions

Exploitation requires a specific combination: (1) the victim uses @hulumi/policies < 1.4.0 as its IAM-policy validator, (2) the victim's IAM role trust policy specifies Principal.Federated as a JSON array containing the GitHub Actions OIDC provider ARN alongside at least one other federated provider, (3) the same trust policy contains a permissive wildcard sub: condition (e.g. matching any branch, any PR, or any repository) such that an untrusted GitHub Actions workflow run would satisfy it, and (4) the victim ships the role to production based on the false-clean policy report. The bug does not affect roles whose Federated principal is a single string, nor roles whose sub: condition is already tightly scoped; exploitation is also limited by the attacker's ability to trigger a workflow that runs against the affected role - typically via a fork PR or other untrusted workflow_run context in the victim's repository.

Impact

No CVSS vector was published, so attack-vector, complexity, and privilege metrics cannot be quoted directly; the GitHub advisory rates this High. EPSS, KEV, and SSVC data were not provided, indicating no public exploit identified at time of analysis and no confirmed in-the-wild use. The realistic risk is indirect but meaningful: the bug does not itself grant access - it causes a security-validation tool to under-report risky IAM trust policies, so its impact depends on whether downstream consumers (a) actually configure roles that trust multiple OIDC providers and (b) rely on @hulumi/policies as their gating control. Where both conditions hold, a wildcard sub: condition on a GitHub-OIDC-assumable role can be silently shipped, letting any forked-PR workflow assume the role - potentially with AdministratorAccess. Defenders should treat this as a control-failure / detection-gap issue rather than a direct exploitable vulnerability, prioritise upgrade in CI/CD policy pipelines, and audit existing IAM trust policies for multi-provider Federated arrays with wildcard sub: conditions.

Exploit ScenarioDerived

An engineer authors an IAM role whose trust policy federates to both the GitHub Actions OIDC provider and a second provider (e.g. Google), with a wildcard sub: condition such as repo:org/*:pull_request; @hulumi/policies < 1.4.0 fails to recognise the role as GitHub-OIDC-assumable and reports the stack as compliant, including missing the AdministratorAccess blast-radius warning. An external contributor then opens a pull request from a fork that triggers a workflow which calls aws-actions/configure-aws-credentials against the role, receives a valid OIDC token matching the wildcard sub:, and assumes the role - gaining whatever permissions (potentially AdministratorAccess) it grants in the target AWS account. No public exploit code is identified at time of analysis, but the technique (forked-PR OIDC abuse against permissive sub: conditions) is well-documented in AWS/GitHub OIDC hardening guidance.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 10, 2026

Detection bypass in @hulumi/policies versions prior to 1.4.0 allows IAM trust policies that list multiple OIDC federated providers to evade the G_OIDC_1 and G_OIDC_2 policy checks for GitHub Actions OIDC roles. Consumers of HulumiHardeningPack or HulumiGithubHardeningPack can therefore ship roles with wildcard sub: conditions - assumable by untrusted forked-PR workflows - while the validator falsely reports compliance, including missing the AdministratorAccess blast-radius flag. No public exploit identified at time of analysis, and there is no CISA KEV listing.

RemediationAI

Vendor-released patch: @hulumi/policies 1.4.0 - upgrade the npm dependency to 1.4.0 or later (npm install @hulumi/policies@^1.4.0 or equivalent lockfile update), per the GHSA advisory at https://github.com/kerberosmansour/hulumi/security/advisories/GHSA-g759-4pxw-6692 and PR https://github.com/kerberosmansour/hulumi/pull/178. The vendor explicitly states no reliable workaround exists, so if an immediate upgrade is impossible, compensating controls are to manually audit every IAM role trust policy generated or validated by the hardening packs for a Principal.Federated array containing multiple OIDC providers and any wildcard or overly-broad token.actions.githubusercontent.com sub: condition (e.g. repo:*:* or repo:org/*:pull_request), and to tighten the sub: condition to specific repositories, branches, or environments - accepting the operational cost of explicitly enumerating trusted refs. As an additional control, restrict role assumption for forked-PR workflows by gating sensitive workflows behind protected GitHub Environments with required reviewers (the same pattern adopted in the upstream PR).

Affected VersionsENISA

hulumi < 1.4.0

Affected Packages

npm @hulumi/policies fix: 1.4.0
euvd hulumi fix: 1.4.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is @hulumi/policies, an npm-distributed policy/linting library (pkg:npm/@hulumi_policies) that evaluates AWS IAM trust policies generated by Pulumi-based Hulumi hardening packs. The root cause is CWE-697 (Incorrect Comparison): when an IAM trust policy's Principal.Federated value is a JSON array (multiple OIDC providers, e.g. GitHub Actions plus Google Workload Identity), the GitHub-OIDC matcher coerced the array into a single comma-joined string and then evaluated only the leading substring, so the GitHub OIDC issuer ARN (token.actions.githubusercontent.com) was not recognised unless it appeared first. As a result, both G_OIDC_1 (wildcard sub: condition detection) and G_OIDC_2 (AdministratorAccess blast-radius check on GitHub-OIDC roles) short-circuited and skipped their substantive checks. The fix in 1.4.0 replaces the string-coerced comparison with an iteration over each element of the providers list.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/kerberosmansour/hulumi) PRIMARY 8.3 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/kerberosmansour/hulumi) · only source for this CVE.

CVSS VectorVendor: https://github.com/kerberosmansour/hulumi

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
CVSS changed
Jul 24, 2026 - 19:22 NVD
8.3 (HIGH)

DescriptionCVE.org

Affected: @hulumi/policies < 1.4.0 - Fixed in: 1.4.0 - Severity: High - CWE-697 (Incorrect Comparison)

Summary

AWS IAM trust policies can list more than one federated identity provider - for example, a role that accepts BOTH GitHub Actions OIDC and Google's OIDC. The G_OIDC_1 and G_OIDC_2 policy rules are supposed to flag IAM roles whose GitHub-OIDC trust is too permissive (e.g. wildcard sub: conditions that would let any branch or any pull request assume the role).

The bug: when the role's Principal.Federated field was a JSON array of multiple providers, the rules failed to recognise that GitHub Actions was one of them. The providers list was coerced into a single comma-joined string, the matcher only looked at the start, and the GitHub OIDC hostname was lost in the join. Both rules concluded "this isn't a GitHub-OIDC role" and skipped the wildcard check.

Impact

A trust policy that listed the real GitHub OIDC provider ARN alongside any second provider would slip past both detectors. Consumers using HulumiHardeningPack or HulumiGithubHardeningPack could ship an IAM role with wildcard sub: conditions (allowing untrusted PRs from forks to assume the role) while their policy validation reported the stack as compliant. The G_OIDC_2 detector also failed to mark such roles for the cluster-admin / AdministratorAccess blast-radius check.

Patches

Upgrade to @hulumi/policies@1.4.0. The shared GitHub-OIDC-provider matcher now correctly walks lists of providers - if any element of the list is the real GitHub OIDC ARN, the role is treated as GitHub-OIDC-assumable and the wildcard / blast-radius checks apply.

Workarounds

None reliable - upgrade is the fix.

Resources
  • PR #178 (Cluster A); regression tests at packages/policies/tests/github/{g-oidc-2,github-oidc-issuer}.test.ts.

Executive ViewAI

Why It Matters

A detection bypass in @hulumi/policies prior to version 1.4.0 allows GitHub Actions OIDC roles to ship with overly permissive conditions while the validator falsely reports compliance, potentially enabling untrusted forked workflows to assume administrative access. Organizations relying on this tool for policy enforcement risk deploying roles that violate security intent without detection.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 88% exploitable
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy