{"id":"CVE-2026-104020","kind":"vulnerability","aliases":["CVE-2026-104020"],"related":[],"title":"Amazon Ion Python: deeply nested Ion data crashes the reader, denial of service","description":"CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python\n\n### CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python\n\nBulletin ID: 2026-122-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 10/01/2026 13:30 PM PDT\n\nDescription:\n\nAmazon Ion Python is an open-source Python implementation of the Amazon Ion data notation. We identified CVE-2026-104020, an issue in the Ion reader in Amazon Ion Python before version 0.15.0 where a crafted, deeply nested Ion value could cause the application to raise an error or crash, resulting in a denial of service.\n\nImpacted versions: < 0.15.0\n\nResolution:\n\nThis issue has been addressed in Amazon Ion Python version 0.15.0. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\nWorkarounds:\n\nDisable ion-python's C extension (simpleion.c_ext = False) and explicitly handle RecursionError raised from within the simpleion module.\n\nReferences:\n\n- CVE-2026-104020\n- GHSA-93q6-f8hx-vv7f\n\nAcknowledgement:\n\nWe would like to thank Weiqi Wang and Lucas C. Cordeiro, University of Manchester, 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":"Amazon Ion Python before 0.15.0 has uncontrolled recursion in its Ion reader: a crafted, deeply nested Ion value makes the application raise an error or crash. An attacker who can feed it data gets a denial of service.","severity":"high","cvss":8.7,"epss":0.00441,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["amazon-ion","aws","lab-disclosure","package","python","self-hosted"],"not_affected_if":["no-ion-parsing","trusted-input-only"],"how_to_check":"- Run `pip show amazon-ion` (or `pip freeze | grep -i ion`) and check whether the installed version is below `0.15.0`.\n- Search dependency lock files for `amazon-ion` to find where it is pulled in, including transitive dependencies.","fix":"- Upgrade the `amazon-ion` package to `0.15.0` or later.\n- Patch any forked or vendored copies of the Ion reader code to include the fix.\n- Workaround if upgrading is not possible: set `simpleion.c_ext = False` and explicitly handle `RecursionError` raised from the simpleion module.","status":"open","published_at":"2026-10-01T21:17:18+00:00","first_seen_at":"2026-10-24T20:05:35+00:00","triaged_at":"2026-10-25T03:00:02+00:00","updated_at":"2026-10-25T12:38:49+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T03:00:02Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the `amazon-ion` package to `0.15.0` or later.\n- Patch any forked or vendored copies of the Ion reader code to include the fix.\n- Workaround if upgrading is not possible: set `simpleion.c_ext = False` and explicitly handle `RecursionError` raised from the simpleion module.","reach":"unknown","title":"Amazon Ion Python: deeply nested Ion data crashes the reader, denial of service","impact":"low","summary":"Amazon Ion Python before 0.15.0 has uncontrolled recursion in its Ion reader: a crafted, deeply nested Ion value makes the application raise an error or crash. An attacker who can feed it data gets a denial of service.","category":"package","nicknames":[],"who_cares":["python","amazon-ion","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Application crashes or errors on crafted input, causing denial of service","analyst_note":"Confirm from the AWS bulletin 2026-122-AWS and GHSA-93q6-f8hx-vv7f whether unauthenticated remote input reaches the Ion reader by default, and the exact affected entry points.","how_to_check":"- Run `pip show amazon-ion` (or `pip freeze | grep -i ion`) and check whether the installed version is below `0.15.0`.\n- Search dependency lock files for `amazon-ion` to find where it is pulled in, including transitive dependencies.","needs_analyst":true,"not_affected_if":["no-ion-parsing","trusted-input-only"],"who_is_affected":"Teams whose Python services parse Amazon Ion data, especially data from outside sources, are exposed. The sources do not say which applications parse untrusted Ion input by default, so check whether any input path reaches the Ion reader. Services that do not use amazon-ion, or only read Ion from trusted sources, can skip it.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000733,"input_tokens":3847,"output_tokens":696,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-104020':16A,19A,72C,85C,136C,232C '-122':99C '-2026':15A,18A,71C,84C,135C,231C '..':273C '0.15.0':36B,149C,175C,187C '10/01/2026':110C '13':111C '2026':98C '30':112C '93q6':235C 'acknowledg':238C 'address':181C 'amazon':1A,21B,32B,80C,93C,116C,128C,144C,183C 'amazon-ion':20B 'applic':52B,160C 'attack':59B 'attent':107C 'aw':23B,100C,102C 'aws-security@amazon.com':266C 'bulletin':96C 'c':215C,248C 'caus':158C 'code':201C 'collabor':254C 'concern':272C 'content':103C 'coordin':260C 'cordeiro':249C 'could':157C 'craft':45B,152C 'crash':8A,57B,166C 'cve':14A,17A,70C,83C,134C,230C 'data':7A,64B,130C 'date':109C 'deepli':4A,46B,153C 'denial':11A,67B,170C 'deriv':200C 'descript':115C 'disabl':210C 'disclosur':26B,262C 'email':265C 'ensur':196C 'error':55B,164C 'explicit':220C 'extens':216C 'f8hx':236C 'fals':218C 'feed':62B 'fix':208C 'fork':198C 'get':65B 'ghsa':234C 'ghsa-93q6-f8hx-vv7f':233C 'handl':221C 'host':31B 'id':97C 'identifi':133C 'impact':173C 'implement':125C 'import':105C 'incorpor':205C 'ion':2A,6A,22B,33B,42B,48B,77C,81C,90C,94C,117C,129C,141C,145C,155C,184C,212C 'ion-python':211C 'issu':138C,178C,257C 'lab':25B 'lab-disclosur':24B 'latest':193C 'like':241C 'luca':247C 'make':50B 'manchest':252C 'modul':228C 'nest':5A,47B,154C 'new':207C 'notat':131C 'open':122C 'open-sourc':121C 'packag':27B 'patch':203C 'pdt':114C 'pleas':264C 'pm':113C 'process':263C 'public':108C 'python':3A,28B,34B,82C,95C,118C,124C,146C,185C,213C 'question':270C 'rais':53B,162C,223C 'reader':10A,43B,78C,91C,142C 'recommend':189C 'recurs':39B,74C,87C 'recursionerror':222C 'refer':229C 'requir':106C 'resolut':176C 'result':167C 'scope':101C 'secur':269C 'self':30B 'self-host':29B 'servic':13A,69B,172C 'simpleion':227C 'simpleion.c_ext':217C 'sourc':123C 'thank':243C 'type':104C 'uncontrol':38B,73C,86C 'univers':250C 'upgrad':190C 'valu':49B,156C 'version':148C,174C,186C,194C 'vulner':261C 'vv7f':237C 'wang':245C 'weiqi':244C 'within':225C 'workaround':209C 'would':240C","nicknames":[],"mitigations":[{"kind":"workaround","scope":"Amazon Ion Python (ion-python before 0.15.0)","since":null,"covers":"Deeply nested Ion values parsed by the simpleion module, by disabling the C extension and handling RecursionError raised from simpleion","limits":"none stated","source":"https://aws.amazon.com/security/security-bulletins/rss/2026-122-aws/","vendor":"Team","seen_at":"2026-10-24T21:50:52Z","confidence":0.9,"source_title":"CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python","customer_action":"Set simpleion.c_ext = False and explicitly handle RecursionError raised from within the simpleion module; upgrade to 0.15.0 for the fix"}],"who_affected":"Teams whose Python services parse Amazon Ion data, especially data from outside sources, are exposed. The sources do not say which applications parse untrusted Ion input by default, so check whether any input path reaches the Ion reader. Services that do not use amazon-ion, or only read Ion from trusted sources, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-01T21:17:18+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/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-122-aws/#CVE-2026-104020","url":"https://aws.amazon.com/security/security-bulletins/rss/2026-122-aws/","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T20:05:35+00:00","fetched_at":"2026-10-24T21:51:20+00:00","note":"AWS: CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python"},{"source":"nvd","external_id":"CVE-2026-104020","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-104020","severity":null,"published_at":"2026-10-01T21:17:18+00:00","modified_at":"2026-10-02T19:16:40+00:00","first_seen_at":"2026-10-24T20:15:27+00:00","fetched_at":"2026-10-24T20:15:27+00:00","note":null},{"source":"epss","external_id":"CVE-2026-104020","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-104020","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-25T12:38:49+00:00","fetched_at":"2026-10-25T12:38:49+00:00","note":null}],"documents":[{"id":2969,"url":"https://aws.amazon.com/security/security-bulletins/rss/2026-122-aws/","title":"AWS: CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python","kind":"advisory","source":"lab","text":"CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python\n\n### CVE-2026-104020 - Uncontrolled recursion in the Ion reader in Amazon Ion Python\n\nBulletin ID: 2026-122-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 10/01/2026 13:30 PM PDT\n\nDescription:\n\nAmazon Ion Python is an open-source Python implementation of the Amazon Ion data notation. We identified CVE-2026-104020, an issue in the Ion reader in Amazon Ion Python before version 0.15.0 where a crafted, deeply nested Ion value could cause the application to raise an error or crash, resulting in a denial of service.\n\nImpacted versions: < 0.15.0\n\nResolution:\n\nThis issue has been addressed in Amazon Ion Python version 0.15.0. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\nWorkarounds:\n\nDisable ion-python's C extension (simpleion.c_ext = False) and explicitly handle RecursionError raised from within the simpleion module.\n\nReferences:\n\n- CVE-2026-104020\n- GHSA-93q6-f8hx-vv7f\n\nAcknowledgement:\n\nWe would like to thank Weiqi Wang and Lucas C. Cordeiro, University of Manchester, 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":null,"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"}