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

FortiAnalyzer Disk Quota Enforcement Silently Discarding Security Logs

When configured ADOM disk storage reaches maximum quota, the FortiAnalyzer faz_quota_mgr process locks into an emergency drop state instead of performing automated FIFO log rolling, silently rejecting incoming FortiGate event and traffic logs without alert triggers.

Technical Root Cause Analysis

In enterprise deployments, FortiGates stream encrypted audit trails over the Fortinet OFTP/SSL transport layer to an on-premise FortiAnalyzer cluster. Each device or Administrative Domain (ADOM) is assigned a maximum storage quota (e.g., 500GB) with an enforcement policy configured to overwrite oldest logs once utilization surpasses 90–95%.

Under Bug 0892902, when continuous write throughput coincides with complex background SQL index compression, a mutex deadlock occurs inside faz_quota_mgr. The quota evaluation daemon flags the storage container as hard-locked (100% full) but fails to dispatch the deletion worker task. Consequently, FortiAnalyzer responds to incoming OFTP batch transmissions with application-level reject codes. On the FortiGate side, miglogd detects backpressure and drops unsent event buffers. Because the underlying TCP connection remains established, the FortiGate dashboard displays a deceptive green "Connected" status while weeks of compliance telemetry evaporate.

# FORTIGATE miglogd STATUS DUMP (DIAGNOSE TEST APPLICATION MIGLOGD 6) Remote FortiAnalyzer: 10.100.20.10:514 (OFTP Encrypted) Status: Connected (socket 14) Buffer Queue: 16384/16384 (SATURATED) Logs sent: 148,290,112 Logs rejected by server: 4,892,104 [SILENT COMPLIANCE DATA LOSS] Log drop rate: 320 msgs/sec (reason: server_quota_exceeded) Last OFTP status code: 0x80040012 (FAZ_ERR_DISK_QUOTA_LOCKED)

Affected Firmware & Blast Radius Matrix

FAZOS Branch Vulnerable Builds Confirmed Clean Build Status & Workaround
FAZOS 7.4 7.4.0 – 7.4.2 7.4.3+ Reduce retention ratio, re-index ADOM database
FAZOS 7.2 7.2.0 – 7.2.5 7.2.6+ Tune quota alert trigger to 80% to avoid deadlock
FAZOS 7.0 7.0.4 – 7.0.10 7.0.11+ Apply manual SQL vacuum & disk expand

Platform Impact: All on-prem physical FAZ appliances (FAZ-300F to 3700G) and FAZ-VM instances hosting multi-VDOM enterprise FortiGate estates.

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

Run these diagnostic commands on your FortiGate to verify whether your FortiAnalyzer is currently accepting or silently rejecting audit events:

Diagnostic Commands

# 1. Check live FortiAnalyzer connectivity and rejection counters
diagnose log fortianalyzer status

# 2. Inspect miglogd internal queue saturation and drop statistics
diagnose test application miglogd 6

# 3. Check local disk-quota state on units with internal SSD logging
execute log disk-quota status

# 4. Filter kernel log for remote collector backpressure warnings
diagnose log kernel-log | grep -i "oftp"

Remediation & Workaround Steps (Teaser Preview)

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

Step 02: Emergency SQL ADOM Compaction

Execute safe CLI garbage collection on FortiAnalyzer to unstick faz_quota_mgr without rebooting the appliance.

🔒 Interactive CLI Available in Ferrite Runbook #04

Step 03: Dynamic Disk Allocation Ratio Rebalancing

Reconfigure Analytics (SQL) vs Archive (flat file) ratios from 70/30 to 50/50 to prevent write lockouts.

🔒 Interactive CLI Available in Ferrite Runbook #04

Step 04: Automated FortiGate Fallback to Secondary Syslog

Configure automated failover to an immutable S3/syslog bucket when OFTP rejection counters exceed zero.

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

Eliminate Silent Log Loss with Automated Telemetry Audits

Connect your FortiGate and FortiAnalyzer via browser terminal, verify buffer states in real-time, execute live zero-downtime remediation, and generate audited evidence 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.
📄
Log Integrity Audit Dossier Standardized evidence export with SHA-256 seal.

Frequently Asked Questions

Why does FortiAnalyzer drop logs instead of overwriting older logs?

Under Bug 0892902, a race condition in the FAZ quota manager daemon (faz_quota_mgr) deadlocks when high write IOPS coincide with automatic archive pruning. The disk quota daemon flags the storage container as full and rejects the FortiGate OFTP stream instead of recycling oldest indexed SQL blocks.

Does the FortiGate GUI notify administrators when logs are dropped?

No. In the FortiGate GUI, the FortiAnalyzer connection typically shows a green checkmark because the TCP/SSL handshake completes, even though miglogd discard counters increment silently in the background.

Which FAZOS releases contain the permanent fix?

The quota manager deadlock is resolved in FAZOS 7.2.6, 7.4.3, and all 7.6 builds through an asynchronous garbage collection pipeline.