171 lines
9.3 KiB
JSON
171 lines
9.3 KiB
JSON
{
|
|
"dataType": "CVE_RECORD",
|
|
"dataVersion": "5.2",
|
|
"cveMetadata": {
|
|
"cveId": "CVE-2026-81930",
|
|
"assignerOrgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
|
|
"state": "PUBLISHED",
|
|
"assignerShortName": "apache",
|
|
"dateReserved": "2026-08-27T18:42:14.105Z",
|
|
"datePublished": "2026-09-29T10:00:23.666Z",
|
|
"dateUpdated": "2026-09-29T18:29:50.020Z"
|
|
},
|
|
"containers": {
|
|
"cna": {
|
|
"affected": [
|
|
{
|
|
"defaultStatus": "unaffected",
|
|
"packageURL": "pkg:pypi/apache-airflow-providers-snowflake",
|
|
"product": "Apache Airflow Snowflake provider",
|
|
"vendor": "Apache Software Foundation",
|
|
"versions": [
|
|
{
|
|
"lessThan": "6.18.0",
|
|
"status": "affected",
|
|
"version": "0",
|
|
"versionType": "semver"
|
|
}
|
|
],
|
|
"collectionURL": "https://pypi.python.org",
|
|
"packageName": "apache-airflow-providers-snowflake"
|
|
}
|
|
],
|
|
"credits": [
|
|
{
|
|
"lang": "en",
|
|
"type": "tool",
|
|
"value": "Claude Security Scans"
|
|
},
|
|
{
|
|
"lang": "en",
|
|
"type": "remediation developer",
|
|
"value": "Jarek Potiuk"
|
|
}
|
|
],
|
|
"descriptions": [
|
|
{
|
|
"lang": "en",
|
|
"supportingMedia": [
|
|
{
|
|
"base64": false,
|
|
"type": "text/html",
|
|
"value": "Apache Airflow's Snowflake provider did not validate the connection's `account` and `region` fields before interpolating them into request URLs. The SQL API endpoint is built as `https://{account}.snowflakecomputing.com/api/v2/statements`, so an `account` value containing `/`, `?` or `#` demotes the intended domain to a path, query or fragment and leaves the attacker in control of the request host.<br><br>The provider sends that request with an `Authorization: Bearer` header carrying a JWT minted from the connection's private key, or the configured OAuth or programmatic access token. A user who can edit the Snowflake connection but cannot read its secrets — Airflow gives connection-configuration users write-only access to stored credentials, and a `private_key_file` lives on the worker rather than in the connection — can therefore cause a valid token for the account to be delivered to a host of their choosing and replay it against the genuine Snowflake endpoint. No Dag-authoring ability is required: the attacker edits the connection and waits for an existing Dag to use it. The same unvalidated value was also used to build the OAuth token-request URL and the Cortex Agent base URL.<br><br>Affects deployments where Snowflake connections are editable by users who are not trusted with the connection's credentials. Users are advised to upgrade to `apache-airflow-providers-snowflake` `6.18.0` or later, which rejects `account` and `region` values containing anything other than letters, digits, `.`, `_` and `-` in every URL the provider builds from them."
|
|
}
|
|
],
|
|
"value": "Apache Airflow's Snowflake provider did not validate the connection's `account` and `region` fields before interpolating them into request URLs. The SQL API endpoint is built as `https://{account}.snowflakecomputing.com/api/v2/statements`, so an `account` value containing `/`, `?` or `#` demotes the intended domain to a path, query or fragment and leaves the attacker in control of the request host.\n\nThe provider sends that request with an `Authorization: Bearer` header carrying a JWT minted from the connection's private key, or the configured OAuth or programmatic access token. A user who can edit the Snowflake connection but cannot read its secrets — Airflow gives connection-configuration users write-only access to stored credentials, and a `private_key_file` lives on the worker rather than in the connection — can therefore cause a valid token for the account to be delivered to a host of their choosing and replay it against the genuine Snowflake endpoint. No Dag-authoring ability is required: the attacker edits the connection and waits for an existing Dag to use it. The same unvalidated value was also used to build the OAuth token-request URL and the Cortex Agent base URL.\n\nAffects deployments where Snowflake connections are editable by users who are not trusted with the connection's credentials. Users are advised to upgrade to `apache-airflow-providers-snowflake` `6.18.0` or later, which rejects `account` and `region` values containing anything other than letters, digits, `.`, `_` and `-` in every URL the provider builds from them."
|
|
}
|
|
],
|
|
"metrics": [
|
|
{
|
|
"other": {
|
|
"content": {
|
|
"text": "moderate"
|
|
},
|
|
"type": "Textual description of severity"
|
|
}
|
|
}
|
|
],
|
|
"problemTypes": [
|
|
{
|
|
"descriptions": [
|
|
{
|
|
"cweId": "CWE-522",
|
|
"description": "CWE-522: Insufficiently Protected Credentials",
|
|
"lang": "en",
|
|
"type": "CWE"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"providerMetadata": {
|
|
"orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
|
|
"shortName": "apache",
|
|
"dateUpdated": "2026-09-29T10:00:23.666Z"
|
|
},
|
|
"references": [
|
|
{
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"url": "https://github.com/apache/airflow/pull/72174"
|
|
},
|
|
{
|
|
"tags": [
|
|
"vendor-advisory"
|
|
],
|
|
"url": "https://lists.apache.org/thread/324jm2mxd5x4nq85jfw1ostz94xwzrmk"
|
|
}
|
|
],
|
|
"source": {
|
|
"discovery": "UNKNOWN"
|
|
},
|
|
"title": "Apache Airflow Snowflake provider: Unvalidated account field redirects SQL API bearer token off-domain",
|
|
"x_generator": {
|
|
"engine": "airflow-s/generate_cve_json.py"
|
|
}
|
|
},
|
|
"adp": [
|
|
{
|
|
"title": "CVE Program Container",
|
|
"references": [
|
|
{
|
|
"url": "http://www.openwall.com/lists/oss-security/2026/09/29/12"
|
|
}
|
|
],
|
|
"providerMetadata": {
|
|
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
|
|
"shortName": "CVE",
|
|
"dateUpdated": "2026-09-29T11:08:16.121Z"
|
|
}
|
|
},
|
|
{
|
|
"metrics": [
|
|
{
|
|
"cvssV3_1": {
|
|
"scope": "UNCHANGED",
|
|
"version": "3.1",
|
|
"baseScore": 6.3,
|
|
"attackVector": "NETWORK",
|
|
"baseSeverity": "MEDIUM",
|
|
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L",
|
|
"integrityImpact": "LOW",
|
|
"userInteraction": "NONE",
|
|
"attackComplexity": "LOW",
|
|
"availabilityImpact": "LOW",
|
|
"privilegesRequired": "LOW",
|
|
"confidentialityImpact": "LOW"
|
|
}
|
|
},
|
|
{
|
|
"other": {
|
|
"type": "ssvc",
|
|
"content": {
|
|
"timestamp": "2026-09-29T18:29:44.043559Z",
|
|
"id": "CVE-2026-81930",
|
|
"options": [
|
|
{
|
|
"Exploitation": "none"
|
|
},
|
|
{
|
|
"Automatable": "no"
|
|
},
|
|
{
|
|
"Technical Impact": "partial"
|
|
}
|
|
],
|
|
"role": "CISA Coordinator",
|
|
"version": "2.0.3"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"title": "CISA ADP Vulnrichment",
|
|
"providerMetadata": {
|
|
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
|
|
"shortName": "CISA-ADP",
|
|
"dateUpdated": "2026-09-29T18:29:50.020Z"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |