<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vulnerability Spoiler Alert - apache/airflow</title>
    <link>https://spaceraccoon.github.io/vulnerability-spoiler-alert</link>
    <description>Vulnerability alerts for apache/airflow</description>
    <language>en-us</language>
    <lastBuildDate>Tue, 01 Sep 2026 14:23:07 GMT</lastBuildDate>
    <atom:link href="https://spaceraccoon.github.io/vulnerability-spoiler-alert/feed/apache-airflow.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>[HIGH] Broken Access Control in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/601</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/601</guid>
      <pubDate>Tue, 25 Aug 2026 19:09:08 GMT</pubDate>
      <description>In multi-team mode, Apache Airflow mounted team-scoped plugin FastAPI apps without any authorization middleware. Any authenticated user could access endpoints intended only for members of a specific team, leading to unauthorized data access and privilege escalation. The patch adds TeamAuthorizationMiddleware to enforce team membership on team-scoped plugin mounts.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-68076] [MEDIUM] Authorization Bypass in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/513</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/513</guid>
      <pubDate>Thu, 20 Aug 2026 15:32:19 GMT</pubDate>
      <description>When &apos;core.multi_team&apos; is enabled, calling Variable.set() with a team_name on an existing variable overwrote the variable&apos;s team ownership in the upsert ON CONFLICT DO UPDATE clause. This allowed a user from one team to hijack a global variable or a variable owned by another team, causing global or other-team lookups to fail (DoS) and unauthorized modification of variable ownership. The patch removes team_name from the update fields, preserving the existing owner.</description>
      <category>medium</category>
      <category>confirmed</category>
      <category>CVE-2026-68076</category>
    </item>
    <item>
      <title>[HIGH] Broken Access Control in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/485</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/485</guid>
      <pubDate>Wed, 19 Aug 2026 10:03:44 GMT</pubDate>
      <description>The DELETE endpoints for asset queued events authorized the DAG axis with requires_access_dag(method=&quot;GET&quot;), a read-level check, while performing a write operation that cancels a DAG&apos;s pending asset-triggered scheduling. A user with only read permission on a DAG but delete permission on the global Assets resource could delete queued events, suppressing that DAG&apos;s asset-triggered runs. The patch changes the DAG axis to require edit (PUT), preventing unauthorized writes to DAG scheduling state.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-68971] [HIGH] Broken Access Control in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/465</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/465</guid>
      <pubDate>Tue, 18 Aug 2026 18:01:50 GMT</pubDate>
      <description>The GET /api/v2/assets/events endpoint returned AssetEvent rows for all Dags without enforcing per-Dag authorization, relying only on the global &apos;Assets&apos; resource check. A user with read access to only one Dag and global asset read could retrieve event details (source Dag, task, run identifiers, and task-authored &apos;extra&apos; payloads) from other Dags. The patch adds PermittedAssetEventFilter to scope events to the Dags the caller may read, while keeping events with no source Dag visible.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-68971</category>
    </item>
    <item>
      <title>[CRITICAL] Authentication Bypass in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/464</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/464</guid>
      <pubDate>Tue, 18 Aug 2026 17:48:18 GMT</pubDate>
      <description>Before the patch, Azure AD id_tokens were decoded with only signature verification against Microsoft&apos;s common multi-tenant key set. The token&apos;s issuer and audience were not enforced, so any correctly signed token from any Azure AD tenant could be accepted by the Airflow OAuth login. This allowed an attacker to log in as an arbitrary user or gain admin roles if the token contained forged roles, leading to authentication bypass and potential privilege escalation. The patch pins the iss claim to the configured tenant and the aud claim to the application&apos;s client_id, and rejects configurations that do not identify a single tenant.</description>
      <category>critical</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Publicly Accessible Database with Hardcoded Credentials in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/433</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/433</guid>
      <pubDate>Mon, 17 Aug 2026 22:39:00 GMT</pubDate>
      <description>The example_dms system test DAG created an AWS RDS PostgreSQL instance with PubliclyAccessible=True and a security group allowing inbound TCP 5432 from 0.0.0.0/0, while using hardcoded credentials (username &apos;username&apos;, password &apos;rds_password&apos;). An attacker could connect to the database over the internet and read or modify data. The patch sets PubliclyAccessible=False, scopes ingress to the VPC CIDR, and optionally uses provided private subnet groups.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-68076] [HIGH] Broken Access Control in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/427</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/427</guid>
      <pubDate>Mon, 17 Aug 2026 21:01:24 GMT</pubDate>
      <description>Before the patch, team names allowed uppercase letters and double underscores. The secrets backend upper-cases team names to build environment variable names for team-scoped secrets, causing teams whose names differ only by case to resolve to the same namespace and share secrets. An attacker who can create a team can choose a name like &apos;Data_Eng&apos; to read the Connections and Variables of the existing team &apos;data_eng&apos;.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-68076</category>
    </item>
    <item>
      <title>[MEDIUM] Denial of Service (Uncontrolled Resource Consumption) in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/406</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/406</guid>
      <pubDate>Tue, 11 Aug 2026 11:55:40 GMT</pubDate>
      <description>The Calendar view endpoint computes planned runs for cron-based timetables by iterating croniter until the year boundary with no upper bound, unlike the generic timetable path which caps at MAX_PLANNED_RUNS. Any authenticated user with Dag read access can create/view a Dag with a high-frequency cron schedule (e.g., a seconds-resolution cron) and trigger minutes of CPU consumption per request just by opening the Calendar tab, allowing them to pin/exhaust an API server worker with minimal effort.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-58076] [HIGH] Deserialization of Untrusted Data / Arbitrary Code Import in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/370</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/370</guid>
      <pubDate>Wed, 05 Aug 2026 04:33:16 GMT</pubDate>
      <description>The BaseSerialization.deserialize method used import_string() on an attacker-controlled class name embedded in serialized DAG blobs (AIRFLOW_EXC_SER/BASE_EXC_SER nodes) to reconstruct exception objects. Because import_string will import arbitrary modules and access arbitrary attributes by dotted name, a crafted serialized DAG could cause the deserializer to import and execute code from any importable module (including modules with import-time side effects, or builtins like eval/os.system), leading to code execution or unintended behavior when a malicious/tampered serialized DAG is loaded. The patch restricts resolution to already-loaded classes validated as AirflowException subclasses or a fixed builtin allow-list, preventing import of attacker-named modules/classes.

Patch landed 7 days 16 hours 6 minutes before CVE-2026-58076 was published.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-58076</category>
    </item>
    <item>
      <title>[CVE-2026-65017] [MEDIUM] Sensitive Information Disclosure in apache/airflow</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/359</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/359</guid>
      <pubDate>Tue, 04 Aug 2026 14:14:14 GMT</pubDate>
      <description>Configuration options registered as sensitive (like database connection strings with passwords) were only masked when queried under their base section name. Team-scoped overrides stored in `\[&amp;lt;team&amp;gt;=&amp;lt;section&amp;gt;\]` config sections or `AIRFLOW__&amp;lt;TEAM&amp;gt;___&amp;lt;SECTION&amp;gt;__&amp;lt;KEY&amp;gt;` environment variables bypassed the sensitivity check entirely, exposing secrets like database credentials in clear text via the config API and `as_dict()` output.

Patch landed 8 days 5 hours 11 minutes before CVE-2026-65017 was published.</description>
      <category>medium</category>
      <category>confirmed</category>
      <category>CVE-2026-65017</category>
    </item>
  </channel>
</rss>