Ferritaas Incident Intelligence
Defect Intelligence Report Bug 0841209 Severity: High (P2)

WAD SSL Handshake Buffer Exhaustion during TLS 1.3 Session Resumption

FortiOS proxy worker daemon /bin/wad suffers a continuous heap allocation leak when processing high volumes of TLS 1.3 0-RTT early data and Pre-Shared Key (PSK) session ticket resumptions, ultimately driving the appliance into memory conserve mode.

Technical Root Cause Analysis

When FortiOS proxy-mode firewall policies perform deep SSL inspection on modern web traffic, endpoints negotiating TLS 1.3 leverage PSK tickets to resume sessions without a full round-trip handshake. In FortiOS builds prior to 7.2.6, the WAD SSL engine initializes an ephemeral ring buffer ssl_session_ticket_ctx for each resumption attempt to decrypt the NewSessionTicket extension and replay early 0-RTT application payloads.

During rapid connection reconnect bursts—frequent with modern browsers, microservices, and mobile applications—the session ticket validator overwrites the session pointer before calling the inner deallocation macro wad_ssl_ticket_free(). As a result, 4KB to 16KB user-space heap chunks are orphaned per resumption. Over several hours or days, active WAD worker memory footprints expand monotonically until system memory breaches the 82% conserve mode threshold.

[wad 1842] ssl_session_resumption_parse_ticket: alloc ticket_ctx 0x00007fa148c21a00 (len 8192) [wad 1842] ssl_session_ticket_validate: fast-resumed session [id=7fa13901] without ctx teardown [wad 1842] memory leak warning: slab 'wad_ssl_buf' refcount mismatch: allocs=49120 frees=21043 [system] kernel: memory conserve mode entered (total: 3982MB, used: 3345MB, 84%) [system] alert: conserve mode activated - new proxy sessions dropped

Affected Firmware & Blast Radius Matrix

FortiOS Branch Vulnerable Builds Confirmed Clean Build Status & Workaround
FortiOS 7.2 7.2.1 – 7.2.5 7.2.6+ Restrict SSL profile to TLS 1.2 or disable ticket resumption
FortiOS 7.4 7.4.0 – 7.4.1 7.4.2+ Upgrade to 7.4.2 GA or apply protocol options fallback
FortiOS 7.0 Not Affected 7.0.x Branch Clean TLS 1.3 0-RTT resumption handler uses legacy static cache

Platform Impact: Affects FortiGate 60F, 80F, 100F, 200F, and 400F appliances running proxy inspection with deep SSL inspection under high concurrent user loads.

Step 01: Free Verification CLI (Safe Read-Only)

Run these diagnostic commands to determine if WAD workers are leaking memory and identify whether conserve mode is imminent:

Diagnostic Commands

# 1. Inspect per-worker memory allocations inside the WAD daemon
diagnose test application wad 1000

# 2. View top memory-consuming processes to isolate leaking WAD workers
diagnose sys top-mem 10

# 3. Query active SSL session cache size and ticket resumption stats
diagnose test application wad 110

# 4. Check whether the firewall has entered conserve mode
diagnose hardware sysinfo conserve

Remediation & Workaround Steps (Teaser Preview)

Access the complete step-by-step remediation guide in the interactive Ferrite platform:

Step 02: Identify Firewall Policies with TLS 1.3 Deep Inspection

Audit firewall policies and SSL/SSH inspection profiles where TLS 1.3 session resumption is active.

🔒 Interactive CLI Available in Ferrite Runbook #05

Step 03: Restrict Maximum Protocol to TLS 1.2 in SSL Profile

Gracefully cap SSL negotiation at TLS 1.2 to bypass the buggy ticket deserializer without session interruption.

🔒 Interactive CLI Available in Ferrite Runbook #05

Step 04: Surgical Recycling of Bloated WAD Workers

Cycle only leaking WAD worker PIDs without impacting hardware-accelerated NP7 traffic or causing failover.

🔒 Interactive CLI Available in Ferrite Runbook #05
⚡ Ferrite Platform Superpowers

Execute the Complete Runbook with Live Browser Automation

Connect your FortiGate via browser console (Web Serial) or local SSH bridge, verify each command in real-time, generate ready-to-run Tera Term scripts, and export sanitized TAC dossiers.

Live Browser Automation Direct terminal connection with live step checkoff.
📟
1-Click Tera Term (.ttl) Generate scripts for air-gapped jumpboxes.
🛡️
Zero-Trust Scrubber Scrub serials and credentials in local browser RAM.
📄
TAC P1 Escalation Dossier Standardized evidence export with SHA-256 seal.

Frequently Asked Questions

What causes FortiOS Bug 0841209?

During rapid TLS 1.3 Pre-Shared Key (PSK) session ticket resumption or 0-RTT early data handshakes, WAD proxy workers allocate ephemeral SSL handshake reassembly buffers. When clients negotiate rapid reconnects, the ticket validation callback fails to release the allocated ssl_session_ticket_ctx buffer before overwriting the handle, causing steady heap exhaustion.

What is the non-disruptive workaround for Bug 0841209?

Administrators can set 'set ssl-max-proto-ver tls1-2' within the active firewall ssl-ssh-profile or disable session-ticket resumption under firewall ssl-ssh-profile settings. This forces clients to negotiate TLS 1.2 sessions which use clean, isolated session caches without memory leaks.

Which FortiOS firmware versions resolve Bug 0841209?

This defect is permanently resolved in FortiOS 7.2.6, 7.4.2, and later builds, where the TLS 1.3 session ticket deserializer and context release lifecycle were overhauled.