Skip to content
Heist/ feed
Back to feed
CriticalFix available

Argo CD: AppProject destination-namespace and resource restrictions bypassed by PreDelete/PostDelete resource hooks

Type: advisorySources: OSV

### Impact Argo CD checks an Application's AppProject before it creates resources during a sync. That check covers destination namespaces and servers, cluster-scoped resource allow and deny lists, and namespaced resource allow and deny lists, including resource names. PreDelete and PostDelete hooks skip it. When the Application is deleted, Argo CD creates those hooks with the application-controller's credentials on the destination cluster. All versions from v2.10.0 onward are affected, including every currently supported release. v2.9.22 and earlier are not. PostDelete hooks were introduced in [dcc17f70bf](https://github.com/argoproj/argo-cd/commit/dcc17f70bf7db973fe480b8b613189b2c5ac4b4b) (2023-12-18, [#16595](https://github.com/argoproj/argo-cd/pull/16595)) and first released in v2.10.0. That creation path has never applied the project check. PreDelete hooks, added in [3bf3d8a212](https://github.com/argoproj/argo-cd/commit/3bf3d8a2124e772ac651f3fd42375c4e9b8008af) (2025-12-05, [#22288](https://github.com/argoproj/argo-cd/pull/22288)) and first released in v3.3.0, use the same path. v3.2.12 and earlier do not have PreDelete hooks. PreSync, Sync, PostSync, and SyncFail hooks still go through the project check. A user who can push to the Git repository an Application syncs from can commit a hook whose namespace, group, kind, or name the AppProject would refuse on sync. The controller adds the delete finalizer when it sees the hook, and the Application stays Synced until someon

Products
github.com/argoproj/argo-cd/v2, github.com/argoproj/argo-cd/v3
Affected versions
Not specified
Fixed versions
3.3.15, 3.4.10, 3.5.4, 3.6.0-rc2
CVEs
CVE-2026-77459
Confirmed fixed CVEs
Not specified
Updated in this feed
31 Oct 2026, 12:07 UTC · Revision 1

Source evidence

Argo CD: AppProject destination-namespace and resource restrictions bypassed by PreDelete/PostDelete resource hooks

core-osv · Original source

Published 15 Oct 2026, 20:19 UTC

### Impact Argo CD checks an Application's AppProject before it creates resources during a sync. That check covers destination namespaces and servers, cluster-scoped resource allow and deny lists, and namespaced resource allow and deny lists, including resource names. PreDelete and PostDelete hooks skip it. When the Application is deleted, Argo CD creates those hooks with the application-controller's credentials on the destination cluster. All versions from v2.10.0 onward are affected, including every currently supported release. v2.9.22 and earlier are not. PostDelete hooks were introduced in [dcc17f70bf](https://github.com/argoproj/argo-cd/commit/dcc17f70bf7db973fe480b8b613189b2c5ac4b4b) (2023-12-18, [#16595](https://github.com/argoproj/argo-cd/pull/16595)) and first released in v2.10.0. That creation path has never applied the project check. PreDelete hooks, added in [3bf3d8a212](https://github.com/argoproj/argo-cd/commit/3bf3d8a2124e772ac651f3fd42375c4e9b8008af) (2025-12-05, [#22288](https://github.com/argoproj/argo-cd/pull/22288)) and first released in v3.3.0, use the same path. v3.2.12 and earlier do not have PreDelete hooks. PreSync, Sync, PostSync, and SyncFail hooks still go through the project check. A user who can push to the Git repository an Application syncs from can commit a hook whose namespace, group, kind, or name the AppProject would refuse on sync. The controller adds the delete finalizer when it sees the hook, and the Application stays Synced until someon

osv:GHSA-fmxq-cgp8-87wp

github.com/argoproj/argo-cd/v2

Fixed versions: Not specified

github.com/argoproj/argo-cd/v3

Fixed versions: 3.3.15

github.com/argoproj/argo-cd/v3

Fixed versions: 3.4.10

github.com/argoproj/argo-cd/v3

Fixed versions: 3.5.4

github.com/argoproj/argo-cd/v3

Fixed versions: 3.6.0-rc2

Complete source record
{
  "id": "5602c973734eed0711b18501983e52e3ce8abd63e6cadc6baaca99b062cbde37",
  "url": "https://osv.dev/vulnerability/GHSA-fmxq-cgp8-87wp",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Argo CD: AppProject destination-namespace and resource restrictions bypassed by PreDelete/PostDelete resource hooks",
    "summary": "### Impact Argo CD checks an Application's AppProject before it creates resources during a sync. That check covers destination namespaces and servers, cluster-scoped resource allow and deny lists, and namespaced resource allow and deny lists, including resource names. PreDelete and PostDelete hooks skip it. When the Application is deleted, Argo CD creates those hooks with the application-controller's credentials on the destination cluster. All versions from v2.10.0 onward are affected, including every currently supported release. v2.9.22 and earlier are not. PostDelete hooks were introduced in [dcc17f70bf](https://github.com/argoproj/argo-cd/commit/dcc17f70bf7db973fe480b8b613189b2c5ac4b4b) (2023-12-18, [#16595](https://github.com/argoproj/argo-cd/pull/16595)) and first released in v2.10.0. That creation path has never applied the project check. PreDelete hooks, added in [3bf3d8a212](https://github.com/argoproj/argo-cd/commit/3bf3d8a2124e772ac651f3fd42375c4e9b8008af) (2025-12-05, [#22288](https://github.com/argoproj/argo-cd/pull/22288)) and first released in v3.3.0, use the same path. v3.2.12 and earlier do not have PreDelete hooks. PreSync, Sync, PostSync, and SyncFail hooks still go through the project check. A user who can push to the Git repository an Application syncs from can commit a hook whose namespace, group, kind, or name the AppProject would refuse on sync. The controller adds the delete finalizer when it sees the hook, and the Application stays Synced until someon",
    "evidence": "osv:GHSA-fmxq-cgp8-87wp",
    "products": [
      {
        "name": {
          "value": "github.com/argoproj/argo-cd/v2",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      },
      {
        "name": {
          "value": "github.com/argoproj/argo-cd/v3",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "3.3.15",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "github.com/argoproj/argo-cd/v3",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "3.4.10",
            "evidence": "/affected/2/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "github.com/argoproj/argo-cd/v3",
          "evidence": "/affected/3/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "3.5.4",
            "evidence": "/affected/3/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "github.com/argoproj/argo-cd/v3",
          "evidence": "/affected/4/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "3.6.0-rc2",
            "evidence": "/affected/4/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "critical",
    "structured": {
      "id": "GHSA-fmxq-cgp8-87wp",
      "aliases": [
        "BIT-argo-cd-2026-77459",
        "CVE-2026-77459",
        "GHSA-fmxq-cgp8-87wp",
        "GO-2026-6784"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "2.10.0"
                },
                {
                  "last_affected": "2.14.21"
                }
              ]
            }
          ],
          "package": {
            "name": "github.com/argoproj/argo-cd/v2",
            "purl": "pkg:golang/github.com/argoproj/argo-cd/v2",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-fmxq-cgp8-87wp/GHSA-fmxq-cgp8-87wp.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "3.0.0"
                },
                {
                  "fixed": "3.3.15"
                }
              ]
            }
          ],
          "package": {
            "name": "github.com/argoproj/argo-cd/v3",
            "purl": "pkg:golang/github.com/argoproj/argo-cd/v3",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-fmxq-cgp8-87wp/GHSA-fmxq-cgp8-87wp.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "3.4.0"
                },
                {
                  "fixed": "3.4.10"
                }
              ]
            }
          ],
          "package": {
            "name": "github.com/argoproj/argo-cd/v3",
            "purl": "pkg:golang/github.com/argoproj/argo-cd/v3",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-fmxq-cgp8-87wp/GHSA-fmxq-cgp8-87wp.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "3.5.0"
                },
                {
                  "fixed": "3.5.4"
                }
              ]
            }
          ],
          "package": {
            "name": "github.com/argoproj/argo-cd/v3",
            "purl": "pkg:golang/github.com/argoproj/argo-cd/v3",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-fmxq-cgp8-87wp/GHSA-fmxq-cgp8-87wp.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "3.6.0-rc1"
                },
                {
                  "fixed": "3.6.0-rc2"
                }
              ]
            }
          ],
          "package": {
            "name": "github.com/argoproj/argo-cd/v3",
            "purl": "pkg:golang/github.com/argoproj/argo-cd/v3",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-fmxq-cgp8-87wp/GHSA-fmxq-cgp8-87wp.json"
          }
        }
      ],
      "modified": "2026-10-20T11:25:50.628228133Z",
      "provider": "osv",
      "references": [
        "https://github.com/argoproj/argo-cd/security/advisories/GHSA-fmxq-cgp8-87wp",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-77459",
        "https://github.com/argoproj/argo-cd/commit/1149cdc6e932208c4402183cc3d7b7485239940c",
        "https://github.com/argoproj/argo-cd/commit/4bc8085b0a6d2296b849539d3d09fc7be7a4a511",
        "https://github.com/argoproj/argo-cd/commit/7f0a05834b05103d69d7c150e1ee36541b314696",
        "https://github.com/argoproj/argo-cd/commit/d5dd7019ee65be8895133fe4df554e28074242c4",
        "https://github.com/argoproj/argo-cd",
        "https://github.com/argoproj/argo-cd/releases/tag/v3.3.15",
        "https://github.com/argoproj/argo-cd/releases/tag/v3.4.10",
        "https://github.com/argoproj/argo-cd/releases/tag/v3.5.4",
        "https://github.com/argoproj/argo-cd/releases/tag/v3.6.0-rc2"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-863"
        ],
        "severity": "CRITICAL",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-13T17:17:46Z",
        "github_reviewed_at": "2026-10-15T20:19:31Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-77459",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 387171,
  "published_at": "2026-10-15T20:19:31+00:00"
}