This is an automated email from the ASF dual-hosted git repository.

vatsrahul1001 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 8e8f8266a53 Record six recurring non-issue shapes in the security 
model (#72239)
8e8f8266a53 is described below

commit 8e8f8266a5386e0d6af6c27452d45cd9b9d39d87
Author: Jarek Potiuk <[email protected]>
AuthorDate: Mon Sep 7 10:59:18 2026 +0200

    Record six recurring non-issue shapes in the security model (#72239)
    
    The security team re-derives the same dispositions from first principles
    each time they arrive: hardening with no reachable path, findings premised
    on a misconfiguration, restatements of decisions this document already
    records, components the project does not release, preconditions that
    already grant the capability being demonstrated, and values the masking
    contract was never claimed to cover. Writing them down lets a reporter
    check their finding before spending their own time on it, and gives triage
    something to point at instead of composing the reasoning again.
---
 airflow-core/docs/security/security_model.rst | 101 ++++++++++++++++++++++++++
 1 file changed, 101 insertions(+)

diff --git a/airflow-core/docs/security/security_model.rst 
b/airflow-core/docs/security/security_model.rst
index b5139d2a4c6..e9882ba83d8 100644
--- a/airflow-core/docs/security/security_model.rst
+++ b/airflow-core/docs/security/security_model.rst
@@ -1067,3 +1067,104 @@ judged on the Linux behavior; the non-Linux aspect is 
informational.
 
 Reporters who identify a non-Linux-only bug should still report it through the 
regular contribution
 process — fixes are welcome as defense-in-depth hardening, with no CVE or 
advisory.
+
+Hardening opportunities with no demonstrated exploitation path
+...............................................................
+
+Many reports describe code that could be written more defensively — a shell 
command assembled by
+string formatting, a path that is not confined, a check that fails open on a 
branch the reporter
+has not shown to be reachable. Where no path exists by which an actor reaches 
an outcome they were
+not already entitled to, the finding is hardening rather than a vulnerability.
+
+Hardening is handled in public: open a normal pull request or issue and it is 
reviewed like any
+other change. No CVE is allocated and no advisory is issued. This is the 
disposition the security
+team applies most often, and it is not a dismissal — such findings are 
frequently fixed soon after
+they reach the public process, which is the faster route precisely because it 
does not wait on a
+coordinated release.
+
+A report that states a weakness and then observes that it is not reachable has 
answered its own
+question. If you believe the weakness *is* reachable, show the path; that is 
the part that decides
+which process handles it.
+
+Findings whose premise is a misconfiguration
+.............................................
+
+Airflow gives Deployment Managers settings that widen what the software will 
do: deserialization
+allow-lists, module and plugin paths loaded by name, and the ``test 
connection`` feature among
+others. Reports of the form "if this allow-list were misconfigured, arbitrary 
classes could be
+instantiated", or "a misconfigured module path could load unintended code", 
describe the
+consequence of choosing an unsafe value. They do not describe a defect in the 
code that reads it.
+
+Choosing that value is a Deployment Manager decision of the same kind as 
granting a user the Admin
+role, and Deployment Managers are trusted. For a report in this shape to be 
actionable it has to
+establish one of two things: that the **default** configuration is 
exploitable, or that some actor
+who is not a Deployment Manager can cause the setting to take the unsafe value.
+
+The same applies to a call site presented without a route to it. Pointing at 
``import_string()``, a
+deserialization helper, or a subprocess invocation does not establish that 
attacker-controlled
+input reaches it. Name the entry point, the role of the actor who controls the 
input, and each hop
+in between — that trace is the finding, not the call site.
+
+Restating a documented design property
+.......................................
+
+Sections of this document record decisions the project has made and the 
consequences that follow:
+that a symmetric JWT signing secret is held by every component that must 
verify tokens, that Dag
+authors execute arbitrary code, that the Execution API does not isolate 
workloads from one another.
+A report whose evidence is a link to one of those sections restates the 
project's position rather
+than contradicting it, and submitting the same restatement more than once does 
not change the
+assessment.
+
+Such a report becomes useful at the point where it shows behaviour that 
differs from what this
+document describes, or a consequence of a documented decision that the 
document does not
+acknowledge and that a Deployment Manager could not reasonably have 
anticipated. Disagreement with
+a documented decision is welcome and often productive, but it is a design 
discussion for the
+developer mailing list rather than a security report.
+
+Components the project does not release
+........................................
+
+The security process covers what the Apache Airflow project releases: 
``apache-airflow``, the
+provider distributions, the Task SDK, the Helm chart, and the reference Docker 
image. Third-party
+plugins, operators distributed outside the project, forks, vendor builds, and 
images built by
+others are not ASF releases and fall outside it — including when they are 
widely deployed
+alongside Airflow, and when their name contains "airflow".
+
+Report those to whoever publishes them. Where a third-party component is only 
exploitable because
+of something Airflow itself does, that part is in scope and worth reporting 
here; say which part is
+which.
+
+Findings whose precondition already grants the capability
+..........................................................
+
+A report has to gain an attacker something they could not already do. Where 
the stated precondition
+is write access to the metadata database, the ability to place a file in a Dag 
bundle, or a
+permission whose documented purpose is the action being demonstrated, the 
conclusion follows from
+the premise and no boundary has been crossed.
+
+Two shapes recur. The first assumes a principal that is already inside a trust 
boundary — a
+metadata-database writer can approve a gated task, but that principal can 
already set task and Dag
+run states directly. The second reads an administrative permission as an 
escalation: a role holding
+the FAB user-administration permission can grant roles, Admin included, 
because granting roles is
+what that permission is for.
+
+State what the attacker holds at the start and what they hold at the end. 
Where those are the same,
+there is no escalation to report.
+
+Values outside the secret-masking contract
+...........................................
+
+Secret masking covers values Airflow has been told are secret: a connection's 
password and its
+``extra``, and values whose field name matches the sensitive-field list that
+``[core] sensitive_var_conn_names`` extends. It reduces accidental disclosure 
in logs and the UI.
+It is not a boundary that contains a Dag author, who can always read and print 
the values their
+tasks are given.
+
+Two consequences of that scope are by design. Identity fields are not secrets 
— a connection's
+``login`` is deliberately absent from the sensitive-field list, as are 
``user`` and ``username`` —
+so a report that ``login`` appears in logs describes intended behaviour. And 
values placed
+somewhere Airflow has not been told is sensitive, most often a Dag run 
configuration, are not
+masked; the project has never documented them as being.
+
+A value that *is* within the contract and appears in clear text is a real bug 
and worth raising, in most
+cases through the public issue tracker rather than the security process.

Reply via email to