{"id":"CVE-2026-61810","kind":"vulnerability","aliases":["CVE-2026-61810"],"related":[],"title":"libspdm: FINISH messages leave opaque data outside the signature","description":"libspdm is a sample implementation that follows the DMTF SPDM specifications. In version 1.4.0, both the FINISH request (Table 80) and the FINISH_RSP response (Table 81) gained two new fields, OpaqueDataLength and OpaqueData, placed before the trailing signed/authenticated field. The transcript definitions used to compute and verify the FINISH signature, the FINISH HMAC (RequesterVerifyData), and the FINISH_RSP HMAC (ResponderVerifyData) were not updated and still terminate with a step of the form. Per DSP0274, the \"SPDM Header Fields\" are only the four header bytes (SPDMVersion, RequestResponseCode, Param1, Param2). A literal reading therefore excludes OpaqueDataLength and OpaqueData, even though those fields are transmitted before the trailing signature/HMAC field. Because the signature/HMAC must cover every field transmitted before it to \"protect the entire handshake against manipulation by an active attacker,\" an active attacker could otherwise modify the opaque data in flight without invalidating the signature or HMAC. This issue has been patched in version 1.4.1.","summary":"libspdm, a sample implementation of the DMTF SPDM device authentication protocol, did not include the new OpaqueDataLength and OpaqueData fields of FINISH and FINISH_RSP in the transcript that signatures and HMACs cover in version 1.4.0. An active attacker on the path could alter that opaque data in transit without breaking the handshake check.","severity":"medium","cvss":6.0,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["attestation","firmware","libspdm","other","spdm"],"not_affected_if":["no-spdm-usage","other-libspdm-versions"],"how_to_check":"- Check the libspdm version in the build or vendored source; versions in `1.4.0` are affected.\n- Look for OpaqueDataLength and OpaqueData in the FINISH and FINISH_RSP handling code of your libspdm copy.","fix":"- libspdm: move to `1.4.1`","status":"open","published_at":"2026-11-11T05:19:49+00:00","first_seen_at":"2026-11-11T05:25:39+00:00","triaged_at":"2026-11-11T05:26:43+00:00","updated_at":"2026-11-11T05:26:43+00:00","category":"other","confidence":0.6,"triage":{"at":"2026-11-11T05:26:43Z","model":"claude-haiku-5-5","output":{"fix":"- libspdm: move to `1.4.1`","reach":"network","title":"libspdm: FINISH messages leave opaque data outside the signature","impact":"low","summary":"libspdm, a sample implementation of the DMTF SPDM device authentication protocol, did not include the new OpaqueDataLength and OpaqueData fields of FINISH and FINISH_RSP in the transcript that signatures and HMACs cover in version 1.4.0. An active attacker on the path could alter that opaque data in transit without breaking the handshake check.","audience":"businesses","category":"other","nicknames":[],"who_cares":["libspdm","spdm","firmware","attestation"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"Attacker alters opaque handshake data in transit undetected","analyst_note":"Product ranges are not listed in the input; confirm affected range and transport preconditions from the vendor advisory.\n\n","how_to_check":"- Check the libspdm version in the build or vendored source; versions in `1.4.0` are affected.\n- Look for OpaqueDataLength and OpaqueData in the FINISH and FINISH_RSP handling code of your libspdm copy.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["other-libspdm-versions","no-spdm-usage"],"who_is_affected":"Systems that run libspdm 1.4.0 for SPDM device authentication, typically firmware, BMC or hardware attestation code that uses SPDM over a transport an attacker can reach. Systems on other libspdm versions, or that do not use SPDM FINISH with opaque data, are not affected by this report.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000792,"input_tokens":4845,"output_tokens":615,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':11A,14A '-61810':12A,15A '1.4.0':56B,88C '1.4.1':228C '80':94C '81':101C 'activ':58B,202C,205C 'alter':64B 'attack':59B,203C,206C 'attest':16B 'authent':30B 'break':71B 'byte':159C 'check':74B 'comput':120C 'could':63B,207C 'cover':53B,187C 'cve':10A,13A 'data':6A,67B,212C 'definit':117C 'devic':29B 'dmtf':27B,83C 'dsp0274':149C 'entir':196C 'even':172C 'everi':188C 'exclud':168C 'field':40B,105C,114C,153C,175C,182C,189C 'finish':2A,42B,44B,91C,97C,124C,127C,132C 'firmwar':17B 'flight':214C 'follow':81C 'form':147C 'four':157C 'gain':102C 'handshak':73B,197C 'header':152C,158C 'hmac':52B,128C,134C,220C 'implement':24B,79C 'includ':34B 'invalid':216C 'issu':222C 'leav':4A 'libspdm':1A,18B,21B,75C 'liter':165C 'manipul':199C 'messag':3A 'modifi':209C 'must':186C 'new':36B,104C 'opaqu':5A,66B,211C 'opaquedata':39B,108C,171C 'opaquedatalength':37B,106C,169C 'otherwis':208C 'outsid':7A 'param1':162C 'param2':163C 'patch':225C 'path':62B 'per':148C 'place':109C 'protect':194C 'protocol':31B 'read':166C 'request':92C 'requesterverifydata':129C 'requestresponsecod':161C 'responderverifydata':135C 'respons':99C 'rsp':45B,98C,133C 'sampl':23B,78C 'signatur':9A,50B,125C,218C 'signature/hmac':181C,185C 'signed/authenticated':113C 'spdm':20B,28B,84C,151C 'spdmversion':160C 'specif':85C 'step':144C 'still':140C 'tabl':93C,100C 'termin':141C 'therefor':167C 'though':173C 'trail':112C,180C 'transcript':48B,116C 'transit':69B 'transmit':177C,190C 'two':103C 'updat':138C 'use':118C 'verifi':122C 'version':55B,87C,227C 'without':70B,215C","nicknames":[],"mitigations":[],"who_affected":"Systems that run libspdm 1.4.0 for SPDM device authentication, typically firmware, BMC or hardware attestation code that uses SPDM over a transport an attacker can reach. Systems on other libspdm versions, or that do not use SPDM FINISH with opaque data, are not affected by this report.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["attestation","firmware","libspdm","medium","other","spdm"],"campaign_type":null,"search_a":"'-2026':11A,14A '-61810':12A,15A 'cve':10A,13A 'data':6A 'finish':2A 'leav':4A 'libspdm':1A 'messag':3A 'opaqu':5A 'outsid':7A 'signatur':9A","search_b":"'1.4.0':56B 'activ':58B 'alter':64B 'attack':59B 'attest':16B 'authent':30B 'break':71B 'check':74B 'could':63B 'cover':53B 'data':67B 'devic':29B 'dmtf':27B 'field':40B 'finish':42B,44B 'firmwar':17B 'handshak':73B 'hmac':52B 'implement':24B 'includ':34B 'libspdm':18B,21B 'new':36B 'opaqu':66B 'opaquedata':39B 'opaquedatalength':37B 'path':62B 'protocol':31B 'rsp':45B 'sampl':23B 'signatur':50B 'spdm':20B,28B 'transcript':48B 'transit':69B 'version':55B 'without':70B","search_c":"'1.4.0':88C '1.4.1':228C '80':94C '81':101C 'activ':202C,205C 'attack':203C,206C 'byte':159C 'comput':120C 'could':207C 'cover':187C 'data':212C 'definit':117C 'dmtf':83C 'dsp0274':149C 'entir':196C 'even':172C 'everi':188C 'exclud':168C 'field':105C,114C,153C,175C,182C,189C 'finish':91C,97C,124C,127C,132C 'flight':214C 'follow':81C 'form':147C 'four':157C 'gain':102C 'handshak':197C 'header':152C,158C 'hmac':128C,134C,220C 'implement':79C 'invalid':216C 'issu':222C 'libspdm':75C 'liter':165C 'manipul':199C 'modifi':209C 'must':186C 'new':104C 'opaqu':211C 'opaquedata':108C,171C 'opaquedatalength':106C,169C 'otherwis':208C 'param1':162C 'param2':163C 'patch':225C 'per':148C 'place':109C 'protect':194C 'read':166C 'request':92C 'requesterverifydata':129C 'requestresponsecod':161C 'responderverifydata':135C 'respons':99C 'rsp':98C,133C 'sampl':78C 'signatur':125C,218C 'signature/hmac':181C,185C 'signed/authenticated':113C 'spdm':84C,151C 'spdmversion':160C 'specif':85C 'step':144C 'still':140C 'tabl':93C,100C 'termin':141C 'therefor':167C 'though':173C 'trail':112C,180C 'transcript':116C 'transmit':177C,190C 'two':103C 'updat':138C 'use':118C 'verifi':122C 'version':87C,227C 'without':215C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-07-03T02:09:38+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:N/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":"nvd","external_id":"CVE-2026-61810","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61810","severity":null,"published_at":"2026-11-11T05:19:49+00:00","modified_at":"2026-11-11T05:19:49+00:00","first_seen_at":"2026-11-11T05:25:39+00:00","fetched_at":"2026-11-11T05:25:39+00:00","note":null}],"documents":[{"id":122858,"url":"https://github.com/DMTF/libspdm/security/advisories/GHSA-chjj-xvqx-c8w4","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-03T02:09:38+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"}