{"id":"CVE-2026-64855","kind":"vulnerability","aliases":["CVE-2026-64855"],"related":[],"title":"soapbar: SOAP BSP verification trusts the attacker's own embedded certificate","description":"soapbar is a SOAP library for Python — client, server, and WSDL handling. Prior to version 0.13.0, verify_envelope_bsp() derived its trust anchor from the message it was verifying. It read the X.509 certificate out of the caller-untrusted wsse:BinarySecurityToken, validated only that certificate's not-before / not-after dates, and then verified the signature against that same certificate. There was no CA-chain validation, no issuer/subject allowlist, and no pinning. A successful verify_envelope_bsp() therefore proved only that the envelope was signed by whoever supplied the embedded certificate — never that it was signed by a trusted party. An attacker who mints their own certificate, signs a forged envelope, and embeds that certificate in the token passes verification. Any consumer that treats a successful BSP verification as authentication can be impersonated (signature forgery / authentication bypass). verify_envelope() (which pins a caller-supplied x509_cert) was not affected — the flaw was specific to the BSP variant whose trust anchor came from the message. This issue has been patched in version 0.13.0.","summary":"soapbar's verify_envelope_bsp() took its trust anchor from the certificate inside the message itself, with no CA chain, issuer or pinning check. An attacker can sign a forged SOAP envelope with their own certificate and have it pass verification as authenticated.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","python","soap","soapbar","wss-security"],"not_affected_if":["no-bsp-verification","uses-verify-envelope-with-pinned-cert"],"how_to_check":"- Check the installed soapbar version with `pip show soapbar`; versions below `0.13.0` are affected.\n- Search your code for `verify_envelope_bsp` to find where BSP verification is used as an authentication decision.","fix":"- soapbar: upgrade to `0.13.0`.","status":"open","published_at":"2026-11-11T16:17:25+00:00","first_seen_at":"2026-11-11T16:28:06+00:00","triaged_at":"2026-11-11T16:29:58+00:00","updated_at":"2026-11-11T16:29:58+00:00","category":"package","confidence":0.85,"triage":{"at":"2026-11-11T16:29:58Z","model":"claude-haiku-5-5","output":{"fix":"- soapbar: upgrade to `0.13.0`.","reach":"network","title":"soapbar: SOAP BSP verification trusts the attacker's own embedded certificate","impact":"high","summary":"soapbar's verify_envelope_bsp() took its trust anchor from the certificate inside the message itself, with no CA chain, issuer or pinning check. An attacker can sign a forged SOAP envelope with their own certificate and have it pass verification as authenticated.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","soap","soapbar","wss-security"],"confidence":0.85,"fix_status":"available","needs_auth":"no","worst_case":"Attacker impersonates any sender of a SOAP request to the service.","analyst_note":"","how_to_check":"- Check the installed soapbar version with `pip show soapbar`; versions below `0.13.0` are affected.\n- Search your code for `verify_envelope_bsp` to find where BSP verification is used as an authentication decision.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["uses-verify-envelope-with-pinned-cert","no-bsp-verification"],"who_is_affected":"Only applications that call verify_envelope_bsp() and treat a successful result as proof of the sender's identity. verify_envelope(), which pins a caller-supplied certificate, was not affected. Services that do not use the BSP verification path are not exposed through this flaw.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000752,"input_tokens":4837,"output_tokens":537,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-64855':14A,17A '0.13.0':83C,244C 'affect':221C 'allowlist':140C 'anchor':33B,90C,232C 'attack':7A,50B,173C 'authent':67B,201C,207C 'binarysecuritytoken':109C 'bsp':3A,29B,86C,148C,198C,228C 'bypass':208C 'ca':43B,135C 'ca-chain':134C 'caller':106C,215C 'caller-suppli':214C 'caller-untrust':105C 'came':233C 'cert':218C 'certif':11A,36B,60B,101C,113C,130C,162C,178C,186C 'chain':44B,136C 'check':48B 'client':75C 'consum':193C 'cve':12A,15A 'date':121C 'deriv':87C 'emb':184C 'embed':10A,161C 'envelop':28B,56B,85C,147C,154C,182C,210C 'flaw':223C 'forg':54B,181C 'forgeri':206C 'handl':79C 'imperson':204C 'insid':37B 'issu':238C 'issuer':45B 'issuer/subject':139C 'librari':72C 'messag':39B,93C,236C 'mint':175C 'never':163C 'not-aft':118C 'not-befor':115C 'packag':18B 'parti':171C 'pass':64B,190C 'patch':241C 'pin':47B,143C,212C 'prior':80C 'prove':150C 'python':19B,74C 'read':98C 'secur':24B 'server':76C 'sign':52B,156C,167C,179C 'signatur':126C,205C 'soap':2A,20B,55B,71C 'soapbar':1A,21B,25B,68C 'specif':225C 'success':145C,197C 'suppli':159C,216C 'therefor':149C 'token':189C 'took':30B 'treat':195C 'trust':5A,32B,89C,170C,231C 'untrust':107C 'valid':110C,137C 'variant':229C 'verif':4A,65B,191C,199C 'verifi':27B,84C,96C,124C,146C,209C 'version':82C,243C 'whoever':158C 'whose':230C 'wsdl':78C 'wss':23B 'wss-secur':22B 'wsse':108C 'x.509':100C 'x509':217C","nicknames":[],"mitigations":[],"who_affected":"Only applications that call verify_envelope_bsp() and treat a successful result as proof of the sender's identity. verify_envelope(), which pins a caller-supplied certificate, was not affected. Services that do not use the BSP verification path are not exposed through this flaw.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","package","python","soap","soapbar","wsssecurity"],"campaign_type":null,"search_a":"'-2026':13A,16A '-64855':14A,17A 'attack':7A 'bsp':3A 'certif':11A 'cve':12A,15A 'embed':10A 'soap':2A 'soapbar':1A 'trust':5A 'verif':4A","search_b":"'anchor':33B 'attack':50B 'authent':67B 'bsp':29B 'ca':43B 'certif':36B,60B 'chain':44B 'check':48B 'envelop':28B,56B 'forg':54B 'insid':37B 'issuer':45B 'messag':39B 'packag':18B 'pass':64B 'pin':47B 'python':19B 'secur':24B 'sign':52B 'soap':20B,55B 'soapbar':21B,25B 'took':30B 'trust':32B 'verif':65B 'verifi':27B 'wss':23B 'wss-secur':22B","search_c":"'0.13.0':83C,244C 'affect':221C 'allowlist':140C 'anchor':90C,232C 'attack':173C 'authent':201C,207C 'binarysecuritytoken':109C 'bsp':86C,148C,198C,228C 'bypass':208C 'ca':135C 'ca-chain':134C 'caller':106C,215C 'caller-suppli':214C 'caller-untrust':105C 'came':233C 'cert':218C 'certif':101C,113C,130C,162C,178C,186C 'chain':136C 'client':75C 'consum':193C 'date':121C 'deriv':87C 'emb':184C 'embed':161C 'envelop':85C,147C,154C,182C,210C 'flaw':223C 'forg':181C 'forgeri':206C 'handl':79C 'imperson':204C 'issu':238C 'issuer/subject':139C 'librari':72C 'messag':93C,236C 'mint':175C 'never':163C 'not-aft':118C 'not-befor':115C 'parti':171C 'pass':190C 'patch':241C 'pin':143C,212C 'prior':80C 'prove':150C 'python':74C 'read':98C 'server':76C 'sign':156C,167C,179C 'signatur':126C,205C 'soap':71C 'soapbar':68C 'specif':225C 'success':145C,197C 'suppli':159C,216C 'therefor':149C 'token':189C 'treat':195C 'trust':89C,170C,231C 'untrust':107C 'valid':110C,137C 'variant':229C 'verif':191C,199C 'verifi':84C,96C,124C,146C,209C 'version':82C,243C 'whoever':158C 'whose':230C 'wsdl':78C 'wsse':108C 'x.509':100C 'x509':217C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-07-03T05:03:42+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-64855","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-64855","severity":null,"published_at":"2026-11-11T16:17:25+00:00","modified_at":"2026-11-11T16:17:25+00:00","first_seen_at":"2026-11-11T16:28:06+00:00","fetched_at":"2026-11-11T16:28:06+00:00","note":null}],"documents":[{"id":126991,"url":"https://github.com/hitoshyamamoto/soapbar/releases/tag/v0.13.0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":126992,"url":"https://github.com/hitoshyamamoto/soapbar/security/advisories/GHSA-859w-52fx-hcm6","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-03T05:03:42+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}