---
id: "CVE-2026-123535"
page: "https://infrastack.ai/live/CVE-2026-123535"
kind: "vulnerability"
aliases: ["CVE-2026-123535"]
title: "Tornado: unvalidated max_age lets attackers inject cookie attributes"
severity: "medium"
cvss: 4.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "python", "tornado", "web-apps"]
not_affected_if: ["hard-coded-max-age", "no-user-input-in-cookies"]
published_at: "2026-11-08T02:16:43+00:00"
first_seen_at: "2026-11-08T02:21:10+00:00"
updated_at: "2026-11-08T02:25:35+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-123535", "first_seen_at": "2026-11-08T02:21:10+00:00"}]
exploit_sources: []
---

# Tornado: unvalidated max_age lets attackers inject cookie attributes

Link for people: https://infrastack.ai/live/CVE-2026-123535 (this .md is for agents)

Tornado before 6.6 does not validate the max_age argument of its cookie-setting methods, so attacker-influenced input can add extra Set-Cookie attributes. An attacker can use this to widen a cookie's scope to parent paths or other subdomains.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Tornado version with `pip show tornado` or `python -c "import tornado; print(tornado.version)"`.
- Search application code for calls to `set_cookie`, `set_signed_cookie`, `set_secure_cookie` or `clear_cookie` where `max_age` comes from request data.

## Fix

- Tornado: move to `6.6` or later.

## Timeline

- 2026-11-08T02:21:10+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-123535

## Documents

- [advisory] Vendor advisory: github.com https://github.com/tornadoweb/tornado/security/advisories/GHSA-c6v4-qj2h-f748
- [advisory] Third-party advisory: www.vulncheck.com https://www.vulncheck.com/advisories/tornado-before-6.6-cookie-attribute-injection-via-set-cookie-max-age

## From the sources

Tornado before 6.6 does not validate the max_age argument of RequestHandler.set_cookie (also called by set_signed_cookie, set_secure_cookie, and clear_cookie), allowing injection of additional Set-Cookie attributes. When an application passes attacker-influenced input as max_age, an attacker can embed attributes such as Domain, Path, or Secure to widen the cookie's scope to parent paths or other subdomains.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
