{"id":"CVE-2026-92943","kind":"vulnerability","aliases":["CVE-2026-92943"],"related":[],"title":"AWS IoT Device SDK for Python: certificate hostname not checked, enabling impersonation","description":"CVE-2026-92943 - Improper validation of certificate with host mismatch in AWS IoT Device SDK for Python\n\n### CVE-2026-92943 - Improper validation of certificate with host mismatch in AWS IoT Device SDK for Python\n\nBulletin ID: 2026-114-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 09/17/2026 12:00 PM PDT\n\nDescription:\n\nAWS IoT Device SDK for Python (AWSIoTPythonSDK) is an open source SDK that lets IoT devices and gateways connect to AWS IoT Core over MQTT. We identified CVE-2026-92943 in the MQTT client TLS connection layer, where the client did not validate that the server certificate matched the AWS IoT Core endpoint hostname. On Python 3.7 and later, an adversary-in-the-middle positioned on the network could present a certificate issued for an unrelated hostname by any certificate authority in the device trust store, impersonate the AWS IoT Core endpoint, read device telemetry, and inject arbitrary MQTT messages that the device processes as authentic. Both SDK default connection paths were affected: X.509 mutual authentication on port 8883 and WebSocket with SigV4 on port 443. The port 443 ALPN path was not affected.\n\nImpacted versions: >=1.5.3 AND <=1.6.0 (on Python 3.7 and later)\n\nResolution:\n\nThis issue has been addressed in AWSIoTPythonSDK version 1.6.1. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\nWorkarounds:\n\nThere is no workaround. The affected connection paths are the SDK's documented defaults. Customers must upgrade to version 1.6.1.\n\nReferences:\n\n- CVE-2026-92943\n- GHSA-g7vp-3rxx-v25r\n\nAcknowledgement:\n\nWe would like to thank George Chen for collaborating on this issue through the coordinated vulnerability disclosure process.\n\n Please email aws-security@amazon.com with any security questions or concerns.","summary":"The AWS IoT Device SDK for Python (AWSIoTPythonSDK) did not verify that the server certificate matched the AWS IoT Core endpoint hostname on Python 3.7 and later. An attacker on the network can impersonate the endpoint, read device telemetry and inject MQTT messages the device treats as authentic.","severity":"critical","cvss":9.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["aws","aws-iot","iot-devices","lab-disclosure","mqtt","package","python"],"not_affected_if":["port-443-alpn-path","sdk-version-outside-range"],"how_to_check":"- `pip show AWSIoTPythonSDK` and confirm the installed version is not between `1.5.3` and `1.6.0` inclusive\n- Check that the device runs Python 3.7 or later\n- Search lockfiles and forked or vendored copies of the SDK for `AWSIoTPythonSDK` at affected versions","fix":"- Upgrade AWSIoTPythonSDK to `1.6.1` or later\n- Patch any forked or derivative copies of the SDK with the same fix\n- No workaround exists according to the advisory","status":"open","published_at":"2026-09-17T00:00:00+00:00","first_seen_at":"2026-10-24T19:43:42+00:00","triaged_at":"2026-10-25T05:29:20+00:00","updated_at":"2026-10-25T05:29:20+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T05:29:20Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade AWSIoTPythonSDK to `1.6.1` or later\n- Patch any forked or derivative copies of the SDK with the same fix\n- No workaround exists according to the advisory","reach":"network","title":"AWS IoT Device SDK for Python: certificate hostname not checked, enabling impersonation","impact":"high","summary":"The AWS IoT Device SDK for Python (AWSIoTPythonSDK) did not verify that the server certificate matched the AWS IoT Core endpoint hostname on Python 3.7 and later. An attacker on the network can impersonate the endpoint, read device telemetry and inject MQTT messages the device treats as authentic.","category":"package","nicknames":[],"who_cares":["aws-iot","python","iot-devices","mqtt"],"confidence":0.8,"needs_auth":"no","worst_case":"Attacker impersonates AWS IoT endpoint, reads telemetry and injects messages","analyst_note":"","how_to_check":"- `pip show AWSIoTPythonSDK` and confirm the installed version is not between `1.5.3` and `1.6.0` inclusive\n- Check that the device runs Python 3.7 or later\n- Search lockfiles and forked or vendored copies of the SDK for `AWSIoTPythonSDK` at affected versions","needs_analyst":false,"not_affected_if":["sdk-version-outside-range","port-443-alpn-path"],"who_is_affected":"Devices and gateways using AWSIoTPythonSDK `>=1.5.3` and `<=1.6.0` on Python 3.7 or later connecting to AWS IoT Core over MQTT. Both default paths are affected: X.509 mutual TLS on port 8883 and WebSocket with SigV4 on port 443, though the port 443 ALPN path was not affected. Teams on other SDKs or on versions outside this range can skip it.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"critical"},"cost_usd":0.000749,"input_tokens":4029,"output_tokens":692,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-114':117C '-2026':14A,17A,81C,98C,162C,333C '-92943':15A,18A,82C,99C,163C,334C '00':130C '09/17/2026':128C '1.5.3':271C '1.6.0':273C '1.6.1':288C,330C '12':129C '2026':116C '3.7':56B,190C,276C '3rxx':338C '443':260C,263C '8883':253C 'acknowledg':340C 'address':284C 'adversari':195C 'adversary-in-the-middl':194C 'affect':247C,268C,316C 'alpn':264C 'arbitrari':232C 'attack':60B 'attent':125C 'authent':79B,240C,250C 'author':215C 'aw':1A,19B,21B,33B,49B,91C,108C,118C,120C,134C,154C,183C,223C 'aws-iot':20B 'aws-security@amazon.com':361C 'awsiotpythonsdk':39B,140C,286C 'bulletin':114C 'certif':7A,46B,86C,103C,180C,206C,214C 'check':10A 'chen':347C 'client':167C,173C 'code':302C 'collabor':349C 'concern':367C 'connect':152C,169C,244C,317C 'content':121C 'coordin':355C 'core':51B,156C,185C,225C 'could':203C 'custom':325C 'cve':13A,16A,80C,97C,161C,332C 'date':127C 'default':243C,324C 'deriv':301C 'descript':133C 'devic':3A,25B,35B,69B,76B,93C,110C,136C,149C,218C,228C,237C 'disclosur':28B,357C 'document':323C 'email':360C 'enabl':11A 'endpoint':52B,67B,186C,226C 'ensur':297C 'fix':309C 'fork':299C 'g7vp':337C 'gateway':151C 'georg':346C 'ghsa':336C 'ghsa-g7vp-3rxx-v25r':335C 'host':88C,105C 'hostnam':8A,53B,187C,211C 'id':115C 'identifi':160C 'impact':269C 'imperson':12A,65B,221C 'import':123C 'improp':83C,100C 'incorpor':306C 'inject':72B,231C 'iot':2A,22B,24B,34B,50B,92C,109C,135C,148C,155C,184C,224C 'iot-devic':23B 'issu':207C,281C,352C 'lab':27B 'lab-disclosur':26B 'later':58B,192C,278C 'latest':294C 'layer':170C 'let':147C 'like':343C 'match':47B,181C 'messag':74B,234C 'middl':198C 'mismatch':89C,106C 'mqtt':29B,73B,158C,166C,233C 'must':326C 'mutual':249C 'network':63B,202C 'new':308C 'open':143C 'packag':30B 'patch':304C 'path':245C,265C,318C 'pdt':132C 'pleas':359C 'pm':131C 'port':252C,259C,262C 'posit':199C 'present':204C 'process':238C,358C 'public':126C 'python':6A,31B,38B,55B,96C,113C,139C,189C,275C 'question':365C 'read':68B,227C 'recommend':290C 'refer':331C 'requir':124C 'resolut':279C 'scope':119C 'sdk':4A,36B,94C,111C,137C,145C,242C,321C 'secur':364C 'server':45B,179C 'sigv4':257C 'sourc':144C 'store':220C 'telemetri':70B,229C 'thank':345C 'tls':168C 'treat':77B 'trust':219C 'type':122C 'unrel':210C 'upgrad':291C,327C 'v25r':339C 'valid':84C,101C,176C 'verifi':42B 'version':270C,287C,295C,329C 'vulner':356C 'websocket':255C 'workaround':310C,314C 'would':342C 'x.509':248C","nicknames":[],"mitigations":[],"who_affected":"Devices and gateways using AWSIoTPythonSDK `>=1.5.3` and `<=1.6.0` on Python 3.7 or later connecting to AWS IoT Core over MQTT. Both default paths are affected: X.509 mutual TLS on port 8883 and WebSocket with SigV4 on port 443, though the port 443 ALPN path was not affected. Teams on other SDKs or on versions outside this range can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-17T00:00:00+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/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":"ff89ba41-3aa1-4d27-914a-91399e9639e5","poc_count":0,"sources":[{"source":"lab","external_id":"https://aws.amazon.com/security/security-bulletins/rss/2026-114-aws/#CVE-2026-92943","url":"https://aws.amazon.com/security/security-bulletins/rss/2026-114-aws/","severity":null,"published_at":"2026-09-17T00:00:00+00:00","modified_at":null,"first_seen_at":"2026-10-24T19:43:42+00:00","fetched_at":"2026-10-24T19:43:42+00:00","note":"AWS: CVE-2026-92943 - Improper validation of certificate with host mismatch in AWS IoT Device SDK for Python"},{"source":"nvd","external_id":"CVE-2026-92943","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92943","severity":null,"published_at":"2026-09-17T20:18:59+00:00","modified_at":"2026-09-18T17:48:19+00:00","first_seen_at":"2026-10-24T20:15:27+00:00","fetched_at":"2026-10-24T20:15:27+00:00","note":null}],"documents":[{"id":2957,"url":"https://aws.amazon.com/security/security-bulletins/rss/2026-114-aws/","title":"AWS: CVE-2026-92943 - Improper validation of certificate with host mismatch in AWS IoT Device SDK for Python","kind":"advisory","source":"lab","text":"CVE-2026-92943 - Improper validation of certificate with host mismatch in AWS IoT Device SDK for Python\n\n### CVE-2026-92943 - Improper validation of certificate with host mismatch in AWS IoT Device SDK for Python\n\nBulletin ID: 2026-114-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 09/17/2026 12:00 PM PDT\n\nDescription:\n\nAWS IoT Device SDK for Python (AWSIoTPythonSDK) is an open source SDK that lets IoT devices and gateways connect to AWS IoT Core over MQTT. We identified CVE-2026-92943 in the MQTT client TLS connection layer, where the client did not validate that the server certificate matched the AWS IoT Core endpoint hostname. On Python 3.7 and later, an adversary-in-the-middle positioned on the network could present a certificate issued for an unrelated hostname by any certificate authority in the device trust store, impersonate the AWS IoT Core endpoint, read device telemetry, and inject arbitrary MQTT messages that the device processes as authentic. Both SDK default connection paths were affected: X.509 mutual authentication on port 8883 and WebSocket with SigV4 on port 443. The port 443 ALPN path was not affected.\n\nImpacted versions: >=1.5.3 AND <=1.6.0 (on Python 3.7 and later)\n\nResolution:\n\nThis issue has been addressed in AWSIoTPythonSDK version 1.6.1. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\nWorkarounds:\n\nThere is no workaround. The affected connection paths are the SDK's documented defaults. Customers must upgrade to version 1.6.1.\n\nReferences:\n\n- CVE-2026-92943\n- GHSA-g7vp-3rxx-v25r\n\nAcknowledgement:\n\nWe would like to thank George Chen for collaborating on this issue through the coordinated vulnerability disclosure process.\n\n Please email aws-security@amazon.com with any security questions or concerns.","published_at":"2026-09-17T00:00:00+00:00","relation":"advisory","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}