{"id":"GHSA-rg3g-4rw9-gqrp","revision":null,"records":[{"revision":"e3fcd3c0ed764d04ba547d1a3bfdc1e7","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-45737","aliases":[],"title":"Argo CD: Kubernetes Secret Extraction via ArgoCD ServerSideDiff via sensitive annotations","description":"Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. From 3.2.0 until 3.2.12, 3.3.10, and 3.4.2, Argo CD ServerSideDiff can expose Kubernetes Secret values embedded in the kubectl.kubernetes.io/last-applied-configuration annotation because HideSecretData(target, live, ...) does not fully sanitize ResourceDiff.TargetState and LiveState predicted live Secret objects, allowing sensitive data, stringData, and annotations to appear in UI or CLI diffs. This issue is fixed in versions 3.2.12, 3.3.10, and 3.4.2.","state":0,"publishedAt":"2026-07-15T20:00:46.998+00:00","modifiedAt":"2026-07-16T19:14:44.711+00:00","affected":[{"ecosystem":"Vendor product","name":"argo-cd","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"argoproj\",\n                    \"product\": \"argo-cd\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 3.2.0, < 3.2.12\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 3.3.9, < 3.3.10\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 3.4.1, < 3.4.2\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N","score":6.3,"severity":"MEDIUM"}],"references":["https://github.com/argoproj/argo-cd/security/advisories/GHSA-rg3g-4rw9-gqrp","https://github.com/argoproj/argo-cd/commit/7879e6322465080a82d152bf00f2b92e0f36c658","https://github.com/argoproj/argo-cd/commit/87e9148320749693624d08e3d6fa2cc217c672a0","https://github.com/argoproj/argo-cd/commit/ac11bec9986807adc8886ef1181eced7347ef5c6","https://github.com/argoproj/argo-cd/commit/bcb4298afc9fcff5f5d69f4e1db2d0a75983f42c","https://github.com/argoproj/argo-cd/releases/tag/v3.2.12","https://github.com/argoproj/argo-cd/releases/tag/v3.3.10","https://github.com/argoproj/argo-cd/releases/tag/v3.4.2"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-45737","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-45737","identifiers":["CVE-2026-45737"]},"retained":false,"historicalAffected":[]},{"revision":"04847245c72944dabf8fc5dec805bcc1","observedAt":"2026-10-25T12:17:14.897+00:00","statement":{"source":"nvd","id":"CVE-2026-45737","aliases":[],"title":"Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. From 3.2.0 until 3.2.12, 3.3.10, and 3.4.2, Argo CD ServerSideDiff can expose Kubernetes Secret values embedded in the kubectl.kubernetes.io/last-applied-configuratio…","description":"Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. From 3.2.0 until 3.2.12, 3.3.10, and 3.4.2, Argo CD ServerSideDiff can expose Kubernetes Secret values embedded in the kubectl.kubernetes.io/last-applied-configuration annotation because HideSecretData(target, live, ...) does not fully sanitize ResourceDiff.TargetState and LiveState predicted live Secret objects, allowing sensitive data, stringData, and annotations to appear in UI or CLI diffs. This issue is fixed in versions 3.2.12, 3.3.10, and 3.4.2.","state":0,"publishedAt":"2026-07-15T20:17:04.907+00:00","modifiedAt":"2026-10-24T21:10:00.13+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N","score":6.3,"severity":"MEDIUM"},{"system":"CVSS 3.1 · nvd@nist.gov · Primary","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","score":6.5,"severity":"MEDIUM"}],"references":["https://github.com/argoproj/argo-cd/commit/7879e6322465080a82d152bf00f2b92e0f36c658","https://github.com/argoproj/argo-cd/commit/87e9148320749693624d08e3d6fa2cc217c672a0","https://github.com/argoproj/argo-cd/commit/ac11bec9986807adc8886ef1181eced7347ef5c6","https://github.com/argoproj/argo-cd/commit/bcb4298afc9fcff5f5d69f4e1db2d0a75983f42c","https://github.com/argoproj/argo-cd/releases/tag/v3.2.12","https://github.com/argoproj/argo-cd/releases/tag/v3.3.10","https://github.com/argoproj/argo-cd/releases/tag/v3.4.2","https://github.com/argoproj/argo-cd/security/advisories/GHSA-rg3g-4rw9-gqrp"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-45737","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-200","CWE-212"],"productCriteria":["cpe:2.3:a:argoproj:argo_cd:*:*:*:*:*:*:*:*"],"sourceDates":{"published":"2026-07-15T20:17:04.907","lastModified":"2026-10-24T21:10:00.130"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-45737","identifiers":["CVE-2026-45737"]},"retained":false,"historicalAffected":[]},{"revision":"b28892c6dd50432ea798406723d7a029","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-rg3g-4rw9-gqrp","aliases":["BIT-argo-cd-2026-45737","CVE-2026-45737","GO-2026-5618"],"title":"Argo CD: Kubernetes Secret Extraction via ArgoCD ServerSideDiff via sensitive annotations","description":"### Summary\nThe original fix for [GHSA-3v3m-wc6v-x4x3](https://github.com/argoproj/argo-cd/security/advisories/GHSA-3v3m-wc6v-x4x3) is incomplete. argocd app diff --server-side-diff can still expose Kubernetes Secret values embedded in the kubectl.kubernetes.io/last-applied-configuration annotation.\n\nThe prior fix masks top-level Secret data in ServerSideDiff responses, but it does not fully sanitize Secret data stored inside the last-applied-configuration annotation. If a Secret was previously created or updated using client-side apply, that annotation may contain raw data, stringData, and sensitive annotations. These values can be shown in UI/CLI diffs.\n\n### Details\nThe ServerSideDiff endpoint returns ResourceDiff.TargetState / LiveState based on server-side dry-run output. Kubernetes server-side dry-run can return a full predicted live Secret object that carries forward existing live annotations, including:\n\nkubectl.kubernetes.io/last-applied-configuration\nFor Secrets created with client-side apply, that annotation can contain a JSON-serialized Secret manifest with sensitive values.\n\nThe masking path calls HideSecretData(target, live, ...). However, HideSecretData only rewrites the last-applied annotation on the second argument (live). In server-side diff, the first argument can be predictedLive, not a clean Git target. predictedLive can also contain kubectl.kubernetes.io/last-applied-configuration, so the first object’s embedded annotation can remain unmasked.\n\n### PoC\nCreate an app containing this Secret manifest:\n```yaml\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: last-applied-secret-repro\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: secret\n  namespace: last-applied-secret-repro\n  annotations:\n    app: test\n    token: SECRETVAL\ntype: Opaque\ndata:\n  password: U0VDUkVUVkFM\n  username: U0VDUkVUVkFM\n```\nCreate and Sync Argo App\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: last-applied-secret-repro\n  namespace: argocd\n  annotations:\n    argocd.argoproj.io/compare-options: ServerSideDiff=true,IncludeMutationWebhook=true\nspec:\n  project: default\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: last-applied-secret-repro\n  source:\n    repoURL: https://github.com/YOUR_ORG/YOUR_REPO.git\n    targetRevision: HEAD\n    path: last-applied-secret-repro\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n      - ServerSideApply=true\n```\nRun argo cd app diff\n`argocd app diff last-applied-secret-repro --server-side-diff --exit-code=false`\n```\n❯ argocd app diff last-applied-secret-repro --server-side-diff --exit-code=false\n\n===== /Secret last-applied-secret-repro/secret ======\n10c10,11\n<     kubectl.kubernetes.io/last-applied-configuration: '{\"apiVersion\":\"v1\",\"data\":{\"password\":\"++++++++\",\"username\":\"++++++++\"},\"kind\":\"Secret\",\"metadata\":{\"annotations\":{\"app\":\"test\",\"argocd.argoproj.io/tracking-id\":\"last-applied-secret-repro:/Secret:last-applied-secret-repro/secret\",\"token\":\"SECRETVAL\"},\"name\":\"secret\",\"namespace\":\"last-applied-secret-repro\"},\"type\":\"Opaque\"}'\n---\n>     kubectl.kubernetes.io/last-applied-configuration: |\n>       {\"apiVersion\":\"v1\",\"data\":{\"password\":\"U0VDUkVUVkFM\",\"username\":\"U0VDUkVUVkFM\"},\"kind\":\"Secret\",\"metadata\":{\"annotations\":{\"app\":\"test\",\"argocd.argoproj.io/tracking-id\":\"last-applied-secret-repro:/Secret:last-applied-secret-repro/secret\",\"token\":\"SECRETVAL\"},\"name\":\"secret\",\"namespace\":\"last-applied-secret-repro\"},\"type\":\"Opaque\"}\n```\nThe secret value can be seen inside the diff\n\n### Impact\nAuthenticated Argo CD users who can view application diffs may be able to read Secret values that should be masked.\n\nImpacted values include:\nSecret data embedded in kubectl.kubernetes.io/last-applied-configuration","state":0,"publishedAt":"2026-05-19T15:54:21+00:00","modifiedAt":"2026-09-10T03:50:47.4739585+00:00","affected":[{"ecosystem":"Go","name":"github.com/argoproj/argo-cd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.2.0"},{"kind":"fixed","version":"3.2.12"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/argoproj/argo-cd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.3.0-rc1"},{"kind":"fixed","version":"3.3.10"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/argoproj/argo-cd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.4.0-rc1"},{"kind":"fixed","version":"3.4.2"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/argoproj/argo-cd/security/advisories/GHSA-rg3g-4rw9-gqrp","https://github.com/argoproj/argo-cd"],"sourceUrl":"https://github.com/advisories/GHSA-rg3g-4rw9-gqrp","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-rg3g-4rw9-gqrp","identifiers":["GHSA-rg3g-4rw9-gqrp","BIT-argo-cd-2026-45737","CVE-2026-45737","GO-2026-5618"]},"retained":false,"historicalAffected":[]},{"revision":"cb60bbf8c11d4570939e60bfd89987e7","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GO-2026-5618","aliases":["BIT-argo-cd-2026-45737","CVE-2026-45737","GHSA-rg3g-4rw9-gqrp"],"title":"Argo CD: Kubernetes Secret Extraction via ArgoCD ServerSideDiff via sensitive annotations in github.com/argoproj/argo-cd","description":"Argo CD: Kubernetes Secret Extraction via ArgoCD ServerSideDiff via sensitive annotations in github.com/argoproj/argo-cd","state":0,"publishedAt":"2026-06-25T22:34:34+00:00","modifiedAt":"2026-07-20T21:26:20.5342211+00:00","affected":[{"ecosystem":"Go","name":"github.com/argoproj/argo-cd","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/argoproj/argo-cd/v2","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/argoproj/argo-cd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.2.0"},{"kind":"fixed","version":"3.2.12"},{"kind":"introduced","version":"3.3.0-rc1"},{"kind":"fixed","version":"3.3.10"},{"kind":"introduced","version":"3.4.0-rc1"},{"kind":"fixed","version":"3.4.2"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/argoproj/argo-cd/security/advisories/GHSA-rg3g-4rw9-gqrp"],"sourceUrl":"https://osv.dev/vulnerability/GO-2026-5618","license":"OSV · upstream source license applies","key":"osv:GO-2026-5618","identifiers":["GO-2026-5618","BIT-argo-cd-2026-45737","CVE-2026-45737","GHSA-rg3g-4rw9-gqrp"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-10-27T03:23:00.5555620+00:00","complete":true,"records":1758,"lastAttemptAt":"2026-10-27T03:23:00.555562+00:00","lastSuccessAt":"2026-10-27T03:23:00.6986702+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:23:00.6986732+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-187d2b72c94ceb8c4417f1032ec3109a3a3a7b730abadb561d8cdd2a96e04d27-57af8b9cb8b3567e0ff1c465b55549984a63d39a842292251efe141cd38b38c5","complete":true,"records":414860,"lastAttemptAt":"2026-10-27T03:22:59.8670088+00:00","lastSuccessAt":"2026-10-27T03:22:59.8407535+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:22:59.8670088+00:00","snapshotPublishedAt":"2026-10-27T02:35:43+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-43321610382942b8ad8c85917eab1546","complete":false,"records":4735,"lastAttemptAt":"2026-10-27T03:23:28.43141+00:00","lastSuccessAt":"2026-10-24T23:18:49.862+00:00","error":"InvalidDataException","lastVerifiedAt":"2026-10-24T23:18:49.862+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":0,"expectedIdentifiers":13477},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-10-27T03:23:00.5555620+00:00","complete":true,"records":1093,"lastAttemptAt":"2026-10-27T03:23:00.555562+00:00","lastSuccessAt":"2026-10-27T03:23:00.6994805+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:23:00.699481+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-0359020e244b476eb2e837e8432b1f32","complete":false,"records":13416,"lastAttemptAt":"2026-10-27T03:23:26.5209764+00:00","lastSuccessAt":"2026-10-27T03:23:26.517+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:23:26.517+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13077,"expectedIdentifiers":13477},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-c3121b113ecd88f1c92ccfa0ec9757ddc8386e4c12afd2597450b815744f800a","complete":true,"records":9779,"lastAttemptAt":"2026-10-27T03:23:00.5062933+00:00","lastSuccessAt":"2026-10-26T15:37:14.3083004+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:23:00.5062933+00:00","snapshotPublishedAt":"2026-10-26T14:48:41+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-bad5d31e7f6a5e3d338e11d8789069b63620a403f927730769688b42f768e4f6","complete":true,"records":1965,"lastAttemptAt":"2026-10-27T03:22:59.9290096+00:00","lastSuccessAt":"2026-10-26T16:35:43.1460623+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:22:59.9290096+00:00","snapshotPublishedAt":"2026-10-26T16:18:29+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-a393d8fe0ae8408f3e4cab413b76047090c8e4a3c0a186c79edf33c9a3d3af95","complete":true,"records":2995,"lastAttemptAt":"2026-10-27T03:23:00.5277541+00:00","lastSuccessAt":"2026-10-26T14:35:47.9640893+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:23:00.5277541+00:00","snapshotPublishedAt":"2026-10-26T14:18:55+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-2c2579bb03487537529e2b647fd2d9950cfc0fec1a9832dba33e322b8dcbe369","complete":true,"records":230812,"lastAttemptAt":"2026-10-27T03:23:00.4041305+00:00","lastSuccessAt":"2026-10-26T21:37:26.5810298+00:00","error":null,"lastVerifiedAt":"2026-10-27T03:23:00.4041305+00:00","snapshotPublishedAt":"2026-10-26T21:33:12+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null}]}