{"id":"CVE-2026-61604","kind":"vulnerability","aliases":["CVE-2026-61604","GHSA-w3rp-4cm2-4wgc","GO-2026-6595"],"related":[],"title":"ixo Blockchain x/bonds DID-resolved payer drain + x/entity ICA authorization bypass in github.com/ixofoundation/ixo-blockchain","description":"The ixo Blockchain is a Layer 1 blockchain that runs on both Testnet and Mainnet. Prior to version 8.0.0, the x/bonds module moved funds from an address that was resolved from a DID verification method, without verifying that the resolved address belonged to the transaction signer. Affected handlers included MsgMakeOutcomePayment, MsgBuy, MsgSell, MsgSwap, and MsgWithdrawShare, as well as the batch order processor. Because any account may list an arbitrary blockchainAccountID as a verification method on a DID it controls (without the consent of that address's owner), an attacker could register victims' addresses as verification methods on their own DID and then move the victims' balances into a bond the attacker controlled — later withdrawing and bridging the proceeds off-chain. This was exploited on ixo mainnet (ixo-5) on 2026-06-20. The attack required no victim keys, signatures, or system compromise — any account holding a balance in a token a bond could use was at risk. This was fixed in v8.0.0, delivered via the on-chain v8 software-upgrade. The x/bonds module is disabled: every bonds message is rejected on all routes (top-level, authz, CosmWasm, and ICA), and the bonds batch EndBlocker is a no-op so no further reserve movements can occur. All node operators and validators must upgrade to v8.0.0. The flaw is in chain state-machine logic and can only be remediated by running the patched binary. There is no application-level workaround. The vulnerability is in consensus logic; remediation requires the network to run the patched (v8.0.0) binary. The bonds module remains disabled in v8.0.0 and will only be re-enabled in a future release once the signer-authorization model has been corrected.","summary":"The ixo Blockchain x/bonds module moved funds from addresses resolved through DID verification methods without checking that the address belonged to the transaction signer, and x/entity ICA authorization could be bypassed. An attacker could list a victim's address as a verification method on their own DID and drain the victim's balances into a bond they control; this was exploited on ixo mainnet on 2026-06-20.","severity":"critical","cvss":9.3,"epss":0.00266,"exploited":false,"exploited_at":null,"products":[{"name":"github.com/ixofoundation/ixo-blockchain","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/ixofoundation/ixo-blockchain/v3","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/ixofoundation/ixo-blockchain/v4","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/ixofoundation/ixo-blockchain/v5","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/ixofoundation/ixo-blockchain/v6","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/ixofoundation/ixo-blockchain/v7","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/ixofoundation/ixo-blockchain/v8","fixed":["8.0.0"],"affected":"< 8.0.0","ecosystem":"go"}],"ecosystems":["go"],"tags":["cosmos-sdk","ixo-blockchain","ixo-mainnet","node-operators","runtime","validators"],"not_affected_if":["not-running-ixo-chain"],"how_to_check":"Check the node binary version against v8.0.0 (for example, the chain's reported software version or the go.mod version of the running build).\nConfirm whether the network has completed the on-chain v8 software upgrade.\nIf running ixo-blockchain v3 through v7 modules, treat the node as affected.","fix":"Upgrade all nodes and validators to v8.0.0 via the on-chain v8 software upgrade; no application-level workaround exists.\nThe x/bonds module stays disabled in v8.0.0 until a corrected signer-authorization model ships.","status":"open","published_at":"2026-09-24T18:17:15+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T19:51:05+00:00","updated_at":"2026-10-23T19:51:05+00:00","category":"runtime","confidence":0.85,"triage":{"at":"2026-10-23T19:51:05Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade all nodes and validators to v8.0.0 via the on-chain v8 software upgrade; no application-level workaround exists.\nThe x/bonds module stays disabled in v8.0.0 until a corrected signer-authorization model ships.","summary":"The ixo Blockchain x/bonds module moved funds from addresses resolved through DID verification methods without checking that the address belonged to the transaction signer, and x/entity ICA authorization could be bypassed. An attacker could list a victim's address as a verification method on their own DID and drain the victim's balances into a bond they control; this was exploited on ixo mainnet on 2026-06-20.","category":"runtime","who_cares":["ixo-blockchain","validators","node-operators","cosmos-sdk","ixo-mainnet"],"confidence":0.85,"analyst_note":"Confirm the exact v8 upgrade height and whether the x/entity ICA bypass has a separate fix or check path via https://pkg.go.dev/vuln/GO-2026-6595 and https://github.com/advisories/GHSA-w3rp-4cm2-4wgc; fixed versions for the v3 to v7 module paths are listed as unknown in the sources.","how_to_check":"Check the node binary version against v8.0.0 (for example, the chain's reported software version or the go.mod version of the running build).\nConfirm whether the network has completed the on-chain v8 software upgrade.\nIf running ixo-blockchain v3 through v7 modules, treat the node as affected.","needs_analyst":true,"not_affected_if":["not-running-ixo-chain"],"severity_if_unknown":"critical"},"cost_usd":0.000569,"input_tokens":2875,"output_tokens":563,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-06':132B,265C '-20':133B,266C '-2026':18A,26A,29A '-5':262C '-61604':19A,30A '-6595':27A '/ixofoundation/ixo-blockchain':16A,33A '/ixofoundation/ixo-blockchain/v3':36A '/ixofoundation/ixo-blockchain/v4':39A '/ixofoundation/ixo-blockchain/v5':42A '/ixofoundation/ixo-blockchain/v6':45A '/ixofoundation/ixo-blockchain/v7':48A '/ixofoundation/ixo-blockchain/v8':51A '1':140C '2026':131B,264C '4cm2':23A '4wgc':24A '8.0.0':152C 'account':198C,278C 'address':74B,84B,104B,160C,174C,218C,226C 'affect':180C 'applic':376C 'application-level':375C 'arbitrari':202C 'attack':98B,222C,244C,268C 'author':11A,93B,417C 'authz':323C 'balanc':118B,239C,281C 'batch':193C,330C 'belong':85B,175C 'binari':371C,394C 'blockchain':2A,57B,68B,136C,141C 'blockchainaccountid':203C 'bond':121B,242C,286C,313C,329C,396C 'bridg':249C 'bypass':12A,96B 'chain':254C,302C,357C 'check':81B 'compromis':276C 'consensus':383C 'consent':215C 'control':123B,212C,245C 'correct':421C 'cosmos':53B 'cosmos-sdk':52B 'cosmwasm':324C 'could':94B,99B,223C,287C 'cve':17A,28A 'deliv':297C 'did-resolv':4A 'disabl':311C,399C 'drain':8A,114B 'enabl':408C 'endblock':331C 'everi':312C 'exploit':126B,257C 'fix':294C 'flaw':354C 'fund':72B,157C 'futur':411C 'ghsa':21A 'ghsa-w3rp-4cm2-4wgc':20A 'github.com':15A,32A,35A,38A,41A,44A,47A,50A 'github.com/ixofoundation/ixo-blockchain':14A,31A 'github.com/ixofoundation/ixo-blockchain/v3':34A 'github.com/ixofoundation/ixo-blockchain/v4':37A 'github.com/ixofoundation/ixo-blockchain/v5':40A 'github.com/ixofoundation/ixo-blockchain/v6':43A 'github.com/ixofoundation/ixo-blockchain/v7':46A 'github.com/ixofoundation/ixo-blockchain/v8':49A 'go':25A 'handler':181C 'hold':279C 'ica':10A,92B,326C 'includ':182C 'ixo':1A,56B,59B,67B,128B,135C,259C,261C 'ixo-blockchain':55B 'ixo-mainnet':58B 'key':272C 'later':246C 'layer':139C 'level':322C,377C 'list':100B,200C 'logic':361C,384C 'machin':360C 'mainnet':60B,129B,148C,260C 'may':199C 'messag':314C 'method':79B,108B,168C,207C,229C 'model':418C 'modul':70B,155C,309C,397C 'move':71B,156C,236C 'movement':341C 'msgbuy':184C 'msgmakeoutcomepay':183C 'msgsell':185C 'msgswap':186C 'msgwithdrawshar':188C 'must':349C 'network':388C 'no-op':334C 'node':62B,345C 'node-oper':61B 'occur':343C 'off-chain':252C 'on-chain':300C 'op':336C 'oper':63B,346C 'order':194C 'owner':220C 'patch':370C,392C 'payer':7A 'prior':149C 'proceed':251C 'processor':195C 're':407C 're-en':406C 'regist':224C 'reject':316C 'releas':412C 'remain':398C 'remedi':366C,385C 'requir':269C,386C 'reserv':340C 'resolv':6A,75B,163C,173C 'risk':291C 'rout':319C 'run':143C,368C,390C 'runtim':64B 'sdk':54B 'signatur':273C 'signer':89B,179C,416C 'signer-author':415C 'softwar':305C 'software-upgrad':304C 'state':359C 'state-machin':358C 'system':275C 'testnet':146C 'token':284C 'top':321C 'top-level':320C 'transact':88B,178C 'upgrad':306C,350C 'use':288C 'v8':303C 'v8.0.0':296C,352C,393C,401C 'valid':65B,348C 'verif':78B,107B,167C,206C,228C 'verifi':170C 'version':151C 'via':298C 'victim':102B,116B,225C,238C,271C 'vulner':380C 'w3rp':22A 'well':190C 'withdraw':247C 'without':80B,169C,213C 'workaround':378C 'x/bonds':3A,69B,154C,308C 'x/entity':9A,91B","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-24T18:17:15+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"govuln","external_id":"GO-2026-6595","url":"https://pkg.go.dev/vuln/GO-2026-6595","severity":null,"published_at":"2026-10-01T20:23:38+00:00","modified_at":"2026-10-01T20:23:38+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-61604","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-61604","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-61604","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61604","severity":null,"published_at":"2026-09-24T18:17:15+00:00","modified_at":"2026-09-30T17:32:07+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+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"}