{"id":"CVE-2026-54279","kind":"vulnerability","aliases":["CVE-2026-54279","GHSA-2fqr-mr3j-6wp8"],"related":[],"title":"aiohttp: Host-Only Cookies Become Domain Cookies After CookieJar Persistence","description":"### Summary\n\nHost-only cookies that are saved with ``CookieJar.save()`` and then restored later with ``CookieJar.load()`` lose their host-only status.\n\n### Impact\n\nHost-only cookies that have been loaded from disk may get sent to subdomains that previously should have been disallowed.\n\n-----\n\nPatch: https://github.com/aio-libs/aiohttp/commit/a329a7aacad5284f087af36103aff778746da0f2","summary":"aiohttp's CookieJar loses the host-only flag on cookies it restores from disk via load(). Those cookies can then be sent to subdomains that should not receive them.","severity":"high","cvss":7.5,"epss":0.00493,"exploited":false,"exploited_at":null,"products":[{"name":"aiohttp","fixed":["3.14.1"],"affected":"<= 3.14.0","ecosystem":"pypi"},{"name":"aiohttp","fixed":["3.14.1"],"affected":"< 3.14.1","ecosystem":"vendor"}],"ecosystems":["pypi","vendor"],"tags":["aiohttp","cwe-665","http-clients","package","python"],"not_affected_if":["fixed-version","no-cookie-persistence"],"how_to_check":"- Run `pip show aiohttp` and compare the version to `3.14.0`\n- Search your code for `CookieJar` together with `.load(` or `.save(`","fix":"- `aiohttp` `3.14.1`","status":"open","published_at":"2026-06-15T20:08:51+00:00","first_seen_at":"2026-11-03T16:30:30+00:00","triaged_at":"2026-11-03T16:31:58+00:00","updated_at":"2026-11-03T16:51:48+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-03T16:31:58Z","model":"claude-haiku-5-5","output":{"fix":"- `aiohttp` `3.14.1`","reach":"network","title":"aiohttp: restored cookies leak to subdomains after CookieJar load","impact":"medium","summary":"aiohttp's CookieJar loses the host-only flag on cookies it restores from disk via load(). Those cookies can then be sent to subdomains that should not receive them.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","aiohttp","http-clients"],"confidence":0.8,"fix_status":"available","needs_auth":"unknown","worst_case":"session cookies sent to unintended subdomains","analyst_note":"","how_to_check":"- Run `pip show aiohttp` and compare the version to `3.14.0`\n- Search your code for `CookieJar` together with `.load(` or `.save(`","plain_action":"","needs_analyst":false,"not_affected_if":["no-cookie-persistence","fixed-version"],"who_is_affected":"Applications that use aiohttp's CookieJar save() and load() to persist cookies between runs, and then make requests to subdomains of the host that set the cookie. Code that does not persist its cookie jar to disk is not affected by this description.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000651,"input_tokens":4283,"output_tokens":446,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,21A '-54279':14A,22A '-665':27B '/aio-libs/aiohttp/commit/a329a7aacad5284f087af36103aff778746da0f2':109C '2fqr':17A '6wp8':19A 'aiohttp':1A,23A,24A,25B,33B 'becom':6A 'client':30B 'cooki':5A,8A,43B,51B,66C,88C 'cookiejar':10A,35B 'cookiejar.load':77C 'cookiejar.save':71C 'cve':12A,20A 'cwe':26B 'disallow':105C 'disk':47B,94C 'domain':7A 'flag':41B 'get':96C 'ghsa':16A 'ghsa-2fqr-mr3j-6wp8':15A 'github.com':108C 'github.com/aio-libs/aiohttp/commit/a329a7aacad5284f087af36103aff778746da0f2':107C 'host':3A,39B,64C,81C,86C 'host-on':2A,38B,63C,80C,85C 'http':29B 'http-client':28B 'impact':84C 'later':75C 'load':49B,92C 'lose':36B,78C 'may':95C 'mr3j':18A 'packag':31B 'patch':106C 'persist':11A 'previous':101C 'python':32B 'receiv':61B 'restor':45B,74C 'save':69C 'sent':55B,97C 'status':83C 'subdomain':57B,99C 'summari':62C 'via':48B","nicknames":[],"mitigations":[],"who_affected":"Applications that use aiohttp's CookieJar save() and load() to persist cookies between runs, and then make requests to subdomains of the host that set the cookie. Code that does not persist its cookie jar to disk is not affected by this description.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["aiohttp"],"ptokens":["aiohttp"],"labels":["aiohttp","cwe665","high","httpclients","package","pypi","python","vendor"],"campaign_type":null,"first_public_at":"2026-06-08T20:09:03+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-2fqr-mr3j-6wp8","url":"https://github.com/advisories/GHSA-2fqr-mr3j-6wp8","severity":"low","published_at":"2026-06-15T20:08:51+00:00","modified_at":"2026-11-03T16:28:00+00:00","first_seen_at":"2026-11-03T16:30:30+00:00","fetched_at":"2026-11-03T16:30:30+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-54279","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54279","severity":null,"published_at":"2026-06-22T18:16:46+00:00","modified_at":"2026-10-25T23:10:00+00:00","first_seen_at":"2026-11-03T16:51:48+00:00","fetched_at":"2026-11-03T16:51:48+00:00","note":null}],"documents":[{"id":58895,"url":"https://api.github.com/repos/aio-libs/aiohttp/security-advisories/GHSA-2fqr-mr3j-6wp8","title":"Maintainer's advisory: api.github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: api.github.com"},{"id":58896,"url":"https://github.com/aio-libs/aiohttp/security/advisories/GHSA-2fqr-mr3j-6wp8","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":"2026-06-08T20:09:03+00:00","relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"},{"id":58897,"url":"https://github.com/aio-libs/aiohttp/commit/a329a7aacad5284f087af36103aff778746da0f2","title":"Patch: github.com","kind":"other","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}