{"id":"CVE-2024-21669","kind":"vulnerability","aliases":["CVE-2024-21669","GHSA-97x9-59rv-q5pm"],"related":[],"title":"Hyperledger Aries Cloud Agent Python result of presentation verification not checked for LDP-VC","description":"### Impact\n\nWhen verifying W3C Format Verifiable Credentials using JSON-LD with Linked Data Proofs (LDP-VCs), the result of verifying the presentation `document.proof` was not factored into the final `verified` value (`true`/`false`) on the presentation record. Below is an example result from verifying a JSON-LD Presentation where there is an error noted in the processing (mismatched challenge), but the overall result is incorrectly `\"verified\": true`:\n\n```json\n{\n  \"verified\": true,\n  \"presentation_result\": {\n    \"verified\": false,\n    \"document\": {\n      \"@context\": [\n        \"https://www.w3.org/2018/credentials/v1\"\n      ],\n      \"type\": [\n        \"VerifiablePresentation\"\n      ],\n      \"verifiableCredential\": [\n        {\n          \"@context\": [\n            \"https://www.w3.org/2018/credentials/v1\",\n            \"https://w3id.org/citizenship/v1\"\n          ],\n          \"type\": [\n            \"VerifiableCredential\",\n            \"PermanentResident\"\n          ],\n          \"issuer\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd\",\n          \"issuanceDate\": \"2023-11-18\",\n          \"credentialSubject\": {\n            \"type\": [\n              \"PermanentResident\"\n            ],\n            \"id\": \"did:key:z6MkrpbudRMUpTWSdqFcG2ytbYu2QQfgGFUf8GJpShR8Gy7C\",\n            \"givenName\": \"Bob\",\n            \"familyName\": \"Builder\",\n            \"gender\": \"Male\",\n            \"birthCountry\": \"Bahamas\",\n            \"birthDate\": \"1958-07-17\"\n          },\n          \"proof\": {\n            \"type\": \"Ed25519Signature2018\",\n            \"proofPurpose\": \"assertionMethod\",\n            \"verificationMethod\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd#key-1\",\n            \"created\": \"2023-11-18T21:39:56.988853+00:00\",\n            \"jws\": \"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..eKdLMhKJkiVNzTKOEv14KyAFJnk8QX5MqXPmRE5OjQvwRNkeXk1lQRovhDhXKw154OrSqLHgfSNwBd3xfwuDCA\"\n          }\n        }\n      ],\n      \"proof\": {\n        \"type\": \"Ed25519Signature2018\",\n        \"proofPurpose\": \"authentication\",\n        \"verificationMethod\": \"did:key:z6MkrpbudRMUpTWSdqFcG2ytbYu2QQfgGFUf8GJpShR8Gy7C#z6MkrpbudRMUpTWSdqFcG2ytbYu2QQfgGFUf8GJpShR8Gy7C\",\n        \"created\": \"2023-11-18T21:39:59.188276+00:00\",\n        \"challenge\": \"ce0956d4-206d-4b69-a087-52bbb9ddaf1d\",\n        \"jws\": \"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..4ciLzT3oF-Ch9nngGVgI_fBNIo_RPPXzRuFXjMx4AdwVNM4ioeB3TNDbHsF7fPXANznkZR0bHceyvMN3-CUSAw\"\n      }\n    },\n    \"results\": [\n      {\n        \"verified\": false,\n        \"proof\": {\n          \"@context\": [\n            \"https://www.w3.org/2018/credentials/v1\"\n          ],\n          \"type\": \"Ed25519Signature2018\",\n          \"proofPurpose\": \"authentication\",\n          \"verificationMethod\": \"did:key:z6MkrpbudRMUpTWSdqFcG2ytbYu2QQfgGFUf8GJpShR8Gy7C#z6MkrpbudRMUpTWSdqFcG2ytbYu2QQfgGFUf8GJpShR8Gy7C\",\n          \"created\": \"2023-11-18T21:39:59.188276+00:00\",\n          \"challenge\": \"ce0956d4-206d-4b69-a087-52bbb9ddaf1d\",\n          \"jws\": \"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..4ciLzT3oF-Ch9nngGVgI_fBNIo_RPPXzRuFXjMx4AdwVNM4ioeB3TNDbHsF7fPXANznkZR0bHceyvMN3-CUSAw\"\n        },\n        \"error\": \"The challenge is not as expected; challenge=ce0956d4-206d-4b69-a087-52bbb9ddaf1d, expected=328daf6e-f1f5-475a-944e-6446e7b3a969\",\n        \"purpose_result\": {\n          \"valid\": false,\n          \"error\": \"The challenge is not as expected; challenge=ce0956d4-206d-4b69-a087-52bbb9ddaf1d, expected=328daf6e-f1f5-475a-944e-6446e7b3a969\"\n        }\n      }\n    ],\n    \"errors\": [\n      \"The challenge is not as expected; challenge=ce0956d4-206d-4b69-a087-52bbb9ddaf1d, expected=328daf6e-f1f5-475a-944e-6446e7b3a969\"\n    ]\n  },\n  \"credential_results\": [\n    {\n      \"verified\": true,\n      \"document\": {\n        \"@context\": [\n          \"https://www.w3.org/2018/credentials/v1\",\n          \"https://w3id.org/citizenship/v1\"\n        ],\n        \"type\": [\n          \"VerifiableCredential\",\n          \"PermanentResident\"\n        ],\n        \"issuer\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd\",\n        \"issuanceDate\": \"2023-11-18\",\n        \"credentialSubject\": {\n          \"type\": [\n            \"PermanentResident\"\n          ],\n          \"id\": \"did:key:z6MkrpbudRMUpTWSdqFcG2ytbYu2QQfgGFUf8GJpShR8Gy7C\",\n          \"givenName\": \"Bob\",\n          \"familyName\": \"Builder\",\n          \"gender\": \"Male\",\n          \"birthCountry\": \"Bahamas\",\n          \"birthDate\": \"1958-07-17\"\n        },\n        \"proof\": {\n          \"type\": \"Ed25519Signature2018\",\n          \"proofPurpose\": \"assertionMethod\",\n          \"verificationMethod\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd#key-1\",\n          \"created\": \"2023-11-18T21:39:56.988853+00:00\",\n          \"jws\": \"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..eKdLMhKJkiVNzTKOEv14KyAFJnk8QX5MqXPmRE5OjQvwRNkeXk1lQRovhDhXKw154OrSqLHgfSNwBd3xfwuDCA\"\n        }\n      },\n      \"results\": [\n        {\n          \"verified\": true,\n          \"proof\": {\n            \"@context\": [\n              \"https://www.w3.org/2018/credentials/v1\",\n              \"https://w3id.org/citizenship/v1\"\n            ],\n            \"type\": \"Ed25519Signature2018\",\n            \"proofPurpose\": \"assertionMethod\",\n            \"verificationMethod\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd#key-1\",\n            \"created\": \"2023-11-18T21:39:56.988853+00:00\",\n            \"jws\": \"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..eKdLMhKJkiVNzTKOEv14KyAFJnk8QX5MqXPmRE5OjQvwRNkeXk1lQRovhDhXKw154OrSqLHgfSNwBd3xfwuDCA\"\n          },\n          \"purpose_result\": {\n            \"valid\": true,\n            \"controller\": {\n              \"@context\": \"https://w3id.org/security/v2\",\n              \"id\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd\",\n              \"assertionMethod\": [\n                \"did:sov:EzcfrVw7Tveho5NjrmDWnd#key-1\"\n              ],\n              \"authentication\": [\n                {\n                  \"id\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd#key-1\",\n                  \"type\": \"Ed25519VerificationKey2018\",\n                  \"controller\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd\",\n                  \"publicKeyBase58\": \"8dMkWKZxsK7vS8sR4XgS7gWvRawPp5TMYVFvnU2RyXqo\"\n                }\n              ],\n              \"verificationMethod\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd#key-1\",\n              \"https://www.w3.org/ns/did#service\": {\n                \"id\": \"did:sov:EzcfrVw7Tveho5NjrmDWnd#did-communication\",\n                \"type\": \"did-communication\",\n                \"https://www.w3.org/ns/did#serviceEndpoint\": {\n                  \"id\": \"http://alice:3000\"\n                }\n              }\n            }\n          }\n        }\n      ]\n    }\n  ],\n  \"errors\": [\n    \"The challenge is not as expected; challenge=ce0956d4-206d-4b69-a087-52bbb9ddaf1d, expected=328daf6e-f1f5-475a-944e-6446e7b3a969\"\n  ]\n}\n```\n\nThe flaw enables holders of W3C Format Verifiable Credentials using JSON-LD with Linked Data Proofs (LDPs) to present incorrectly constructed proofs, and allows malicious verifiers to save and replay a presentation from such holders as their own.\n\nThis vulnerability has been present since the first implementation of support for JSON-LD W3C Verifiable Credential Data Model presentations, in Aries Cloud Agent Python release in 0.7.0.\n\nAll ACA-Py Users depending on W3C Format Verifiable Credentials using JSON-LD with Linked Data Proofs are impacted by this vulnerability.\n\n### Patches\n\nThis issue has been patched in version [0.10.5](https://github.com/hyperledger/aries-cloudagent-python/releases/tag/0.10.5) and fixed in [0.11.0](https://github.com/hyperledger/aries-cloudagent-python/releases/tag/0.11.0).\n\n### Workarounds\n\nThere is no workaround other upgrading to a patched/fixed version of ACA-Py.","summary":"ACA-Py does not factor the presentation proof result into the final verified flag for W3C JSON-LD verifiable presentations. A malicious holder can present an incorrectly constructed proof, and a verifier can save and replay another holder's presentation as their own.","severity":"critical","cvss":9.9,"epss":0.00632,"exploited":false,"exploited_at":null,"products":[{"name":"aries-cloudagent","fixed":["0.10.5"],"affected":">= 0.7.0, < 0.10.5","ecosystem":"pypi"},{"name":"aries-cloudagent","fixed":["0.11.0"],"affected":">= 0.11.0rc1, < 0.11.0","ecosystem":"pypi"},{"name":"hyperledger aries cloud agent","fixed":["0.10.5"],"affected":">= 0.7.0, < 0.10.5","ecosystem":"vendor"},{"name":"hyperledger aries cloud agent","fixed":[],"affected":"= 0.11.0","ecosystem":"vendor"}],"ecosystems":["pypi","vendor"],"tags":["aries-cloudagent","cwe-347","package","python","self-sovereign-identity","verifiable-credentials"],"not_affected_if":["other-credential-formats","versions-0.10.5-or-later"],"how_to_check":"- Check the installed version with `pip show aries-cloudagent`\n- Check whether the deployment verifies W3C Format Verifiable Credentials using JSON-LD with Linked Data Proofs (LDP-VCs)","fix":"- Upgrade `aries-cloudagent` to `0.10.5` on the 0.10.x line, or to `0.11.0` or later on the 0.11.x line\n- There is no workaround other than upgrading, per the advisory","status":"open","published_at":"2024-01-09T20:31:55+00:00","first_seen_at":"2026-10-27T15:13:25+00:00","triaged_at":"2026-10-27T15:14:39+00:00","updated_at":"2026-10-27T15:32:59+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-27T15:14:39Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `aries-cloudagent` to `0.10.5` on the 0.10.x line, or to `0.11.0` or later on the 0.11.x line\n- There is no workaround other than upgrading, per the advisory","reach":"network","title":"Aries Cloud Agent Python: presentation verification ignores failed proof checks","impact":"medium","summary":"ACA-Py does not factor the presentation proof result into the final verified flag for W3C JSON-LD verifiable presentations. A malicious holder can present an incorrectly constructed proof, and a verifier can save and replay another holder's presentation as their own.","category":"package","nicknames":[],"who_cares":["aries-cloudagent","python","verifiable-credentials","self-sovereign-identity"],"confidence":0.8,"needs_auth":"unknown","worst_case":"Verifier accepts forged or replayed presentations as valid from holders","analyst_note":"","how_to_check":"- Check the installed version with `pip show aries-cloudagent`\n- Check whether the deployment verifies W3C Format Verifiable Credentials using JSON-LD with Linked Data Proofs (LDP-VCs)","needs_analyst":false,"not_affected_if":["other-credential-formats","versions-0.10.5-or-later"],"who_is_affected":"Teams running ACA-Py from 0.7.0 up to but not including 0.10.5, or 0.11.0rc1 up to but not including 0.11.0, that verify W3C JSON-LD presentations with Linked Data Proofs. The advisory says all ACA-Py users depending on that credential format are impacted. Deployments that only use other credential formats are not described as affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.001011,"input_tokens":7039,"output_tokens":614,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'+00':237C,259C,301C '-07':217C '-1':229C '-11':198C,232C,254C,296C '-17':218C '-18':199C,233C,255C,297C '-2024':17A,25A '-21669':18A,26A '-347':45B '/2018/credentials/v1':178C,185C,284C,394C '/citizenship/v1':188C,397C '00':238C,260C,302C '1958':216C '2023':197C,231C,253C,295C '206d':264C,306C,329C,354C,375C '328daf6e':335C,360C,381C '328daf6e-f1f5-475a-944e-6446e7b3a969':334C,359C,380C '39':235C,257C,299C '475a':337C,362C,383C '4b69':265C,307C,330C,355C,376C '4cilzt3of':271C,313C '4cilzt3of-ch9nnggvgi':270C,312C '52bbb9ddaf1d':267C,309C,332C,357C,378C '56.988853':236C '59.188276':258C,300C '59rv':22A '6446e7b3a969':339C,364C,385C '944e':338C,363C,384C '97x9':21A 'a087':266C,308C,331C,356C,377C 'aca':56B 'aca-pi':55B 'agent':4A,36A,40A 'anoth':93B 'ari':2A,42B 'aries':28A,31A,34A,38A 'aries-cloudag':41B 'aries-cloudagent':27A,30A 'assertionmethod':223C 'authent':246C,288C 'bahama':214C 'birthcountri':213C 'birthdat':215C 'bob':208C 'builder':210C 'ce0956d4':263C,305C,328C,353C,374C 'ce0956d4-206d-4b69-a087-52bbb9ddaf1d':262C,304C,327C,352C,373C 'ch9nnggvgi':272C,314C 'challeng':158C,261C,303C,321C,326C,346C,351C,367C,372C 'check':11A 'cloud':3A,35A,39A 'cloudag':43B 'cloudagent':29A,32A 'construct':84B 'context':175C,182C,281C,391C 'creat':230C,252C,294C 'credenti':54B,103C,386C 'credentialsubject':200C 'cusaw':276C,318C 'cve':16A,24A 'cwe':44B 'data':110C 'document':174C,390C 'document.proof':121C 'ed25519signature2018':221C,244C,286C 'ekdlmhkjkivnztkoev14kyafjnk8qx5mqxpmre5ojqvwrnkexk1lqrovhdhxkw154orsqlhgfsnwbd3xfwudca':241C 'error':152C,319C,344C,365C 'exampl':139C 'expect':325C,333C,350C,358C,371C,379C 'eyjhbgcioiairwreu0eilcaiyjy0ijogzmfsc2usicjjcml0ijogwyjinjqixx0':240C,269C,311C 'ezcfrvw7tveho5njrmdwnd':195C,227C,404C 'f1f5':336C,361C,382C 'factor':60B,124C 'fals':131C,173C,279C,343C 'familynam':209C 'fbnio':273C,315C 'final':67B,127C 'flag':69B 'format':101C 'gender':211C 'ghsa':20A 'ghsa-97x9-59rv-q5pm':19A 'givennam':207C 'holder':79B,94B 'hyperledg':1A 'hyperledger':33A,37A 'id':203C 'ident':51B 'impact':97C 'incorrect':83B,164C 'issuanced':196C 'issuer':192C,401C 'json':73B,106C,145C,167C 'json-ld':72B,105C,144C 'jws':239C,268C,310C 'key':205C,228C,249C,291C 'ld':74B,107C,146C 'ldp':14A,113C 'ldp-vc':13A 'ldp-vcs':112C 'link':109C 'male':212C 'malici':78B 'mismatch':157C 'note':153C 'overal':161C 'packag':46B 'permanentresid':191C,202C,400C 'present':8A,62B,76B,81B,96B,120C,134C,147C,170C 'process':156C 'proof':63B,85B,111C,219C,242C,280C 'proofpurpos':222C,245C,287C 'purpos':340C 'py':57B 'python':5A,47B 'q5pm':23A 'record':135C 'replay':92B 'result':6A,64B,116C,140C,162C,171C,277C,341C,387C 'rppxzrufxjmx4adwvnm4ioeb3tndbhsf7fpxanznkzr0bhceyvmn3':275C,317C 'rppxzrufxjmx4adwvnm4ioeb3tndbhsf7fpxanznkzr0bhceyvmn3-cusaw':274C,316C 'save':90B 'self':49B 'self-sovereign-ident':48B 'sov':194C,226C,403C 'sovereign':50B 't21':234C,256C,298C 'true':130C,166C,169C,389C 'type':179C,189C,201C,220C,243C,285C,398C 'use':104C 'valid':342C 'valu':129C 'vc':15A 'vcs':114C 'verif':9A 'verifi':53B,68B,75B,88B,99C,102C,118C,128C,142C,165C,168C,172C,278C,388C 'verifiable-credenti':52B 'verifiablecredenti':181C,190C,399C 'verifiablepresent':180C 'verificationmethod':224C,247C,289C 'w3c':71B,100C 'w3id.org':187C,396C 'w3id.org/citizenship/v1':186C,395C 'www.w3.org':177C,184C,283C,393C 'www.w3.org/2018/credentials/v1':176C,183C,282C,392C 'z6mkrpbudrmuptwsdqfcg2ytbyu2qqfggfuf8gjpshr8gy7c':206C,250C,251C,292C,293C","nicknames":[],"mitigations":[],"who_affected":"Teams running ACA-Py from 0.7.0 up to but not including 0.10.5, or 0.11.0rc1 up to but not including 0.11.0, that verify W3C JSON-LD presentations with Linked Data Proofs. The advisory says all ACA-Py users depending on that credential format are impacted. Deployments that only use other credential formats are not described as affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2024-01-09T20:31:55+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-97x9-59rv-q5pm","url":"https://github.com/advisories/GHSA-97x9-59rv-q5pm","severity":"critical","published_at":"2024-01-09T20:31:55+00:00","modified_at":"2026-10-27T15:13:19+00:00","first_seen_at":"2026-10-27T15:13:25+00:00","fetched_at":"2026-10-27T15:18:30+00:00","note":null},{"source":"nvd","external_id":"CVE-2024-21669","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-21669","severity":null,"published_at":"2024-01-11T06:15:44+00:00","modified_at":"2026-06-17T07:09:57+00:00","first_seen_at":"2026-10-27T15:32:59+00:00","fetched_at":"2026-10-27T15:32:59+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}