Ferritaas Incident Intelligence
Defect Intelligence Report Bug 0891402 Severity: High (Gradual Memory Leak)

WAD Worker Memory Leak during Rapid TLS Client Renegotiation Cycles

Client-initiated TLS cipher renegotiations fail to deallocate previous SSL state structures inside wad worker processes, slowly consuming system RAM over weeks until conserve mode triggers failover.

Technical Root Cause Analysis

In proxy inspection environments where deep SSL inspection is applied to enterprise client workstations or legacy financial software, endpoints occasionally initiate TLS renegotiation handshakes to refresh session keys.

In FortiOS 7.2.2–7.2.5 builds, the WAD worker handler allocates a replacement SSL structure but retains the original cryptographic context pointer in a thread-local tracking queue. Because the pointer is never freed or unlinked, each renegotiation leaks approximately 4KB–16KB. In organizations with thousands of endpoints, this cumulative leak forces the firewall into conserve mode every 7–14 days.

Affected Firmware & Blast Radius Matrix

FortiOS Branch Vulnerable Builds Confirmed Clean Build Status & Workaround
FortiOS 7.2 7.2.2 – 7.2.5 7.2.6+ Disable client-renegotiation in SSL profile
FortiOS 7.4 7.4.0 – 7.4.1 7.4.2+ Upgrade recommended
FortiOS 7.0 Not Affected 7.0.x Branch Clean Older OpenSSL architecture handles free cleanly

Platform Impact: High-density campus and branch firewalls performing deep SSL inspection on heterogeneous client operating systems.

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

Execute these commands to check active WAD worker memory footprints and monitor SSL renegotiation metrics:

Diagnostic Commands

# 1. Inspect active WAD worker process IDs and memory statistics
diagnose test application wad 1000

# 2. Dump SSL proxy session counters and renegotiation events
diagnose wad ssl stats

# 3. Check memory ranking of WAD processes
diagnose sys top-mem | grep wad

# 4. Check active WAD memory allocations by type
diagnose test application wad 2

Remediation & Workaround Steps (Teaser Preview)

Access the complete SSL hardening and worker recycling guide on the Ferrite interactive platform:

Step 02: Audit SSL/SSH Inspection Profile Renegotiation Settings

Locate profiles permitting client-initiated SSL renegotiation across active proxy policies.

🔒 Interactive CLI Available in Ferrite Runbook #05

Step 03: Disable Insecure Client-Initiated Renegotiation

Configure set renegotiation-mode to disable in firewall ssl-ssh-profile to eliminate the leaking vector.

🔒 Interactive CLI Available in Ferrite Runbook #05

Step 04: Surgical Recycling of Bloated WAD Workers

Restart bloated workers cleanly without disrupting active ASIC fastpath sessions.

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

Execute Runbook #05 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 Bug 0891402?

Client-initiated TLS renegotiations allocate new SSL session context structures without freeing previous context pointers in the thread queue.

Can client renegotiation be disabled safely?

Yes. Disabling client renegotiation adheres to modern TLS security standards and does not break compliant web applications.

What is the permanent resolution?

Upgrade to FortiOS 7.2.6 or 7.4.2 where SSL session teardown routines properly release cryptographic contexts.