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

Reliable Syslog over TLS (TCP 6514) Handshake Failure on Mutual Authentication

In high-security perimeters enforcing mutual TLS (mTLS) syslog forwarding, FortiOS miglogd omits intermediate CA certificates during TLS negotiation, causing SIEM receivers to terminate TCP 6514 sessions and triggering silent audit log drops.

Technical Root Cause Analysis

Regulatory mandates including NIST SP 800-53 (SC-8), PCI-DSS v4.0 (Req 10.5.1), and HIPAA dictate that all audit logs traversing shared or untrusted networks must be encrypted using approved cryptographic algorithms with strong endpoint identity verification. Modern security architectures enforce syslog-over-TLS (RFC 5425) on TCP port 6514 with mutual authentication (mTLS), where both the central SIEM (Splunk, Microsoft Sentinel, Elastic, rsyslog) and the firewall validate each other's X.509 certificates.

Under Bug 0894209, when FortiOS miglogd initiates the TLS handshake, its internal SSL initialization context loads only the end-entity certificate configured under set certificate <cert_name> without traversing the configured CA chain to bundle intermediate issuing certificates. When sending the TLS Certificate handshake message to the SIEM receiver, miglogd provides an incomplete certificate chain. The SIEM's TLS engine (OpenSSL or Go crypto/tls) fails to verify trust against the root CA and aborts the connection with a fatal alert: unknown CA (48) or bad certificate (42). The TCP connection resets, and miglogd enters a relentless reconnect cycle. Because no fallback is engaged, audit logs accumulate in volatile memory until the ring buffer overflows and silently discards compliance events.

# miglogd TLS HANDSHAKE FAILURE (DIAGNOSE TEST APPLICATION MIGLOGD 6) Syslog server 10.200.50.25:6514 (mode: reliable-tls, mTLS enabled) State: TCP_ESTABLISHED -> SSL_HANDSHAKE_PENDING -> SSL_FAILED OpenSSL error: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca Last SSL alert: 48 (TLS_ALERT_UNKNOWN_CA) from remote peer Local cert "FGT_SIEM_CLIENT" missing intermediate CA link in Client Certificate payload Memory queue backlog: 14,320 / 16,384 logs buffered (DROPPING NEW LOGS)

Affected Firmware & Blast Radius Matrix

FortiOS Branch Vulnerable Builds Confirmed Clean Build Status & Workaround
FortiOS 7.2 7.2.3 – 7.2.7 7.2.8+ Concatenate full chain into single local-cert file
FortiOS 7.4 7.4.0 – 7.4.1 7.4.2+ Enable complete PKCS#12 bundle import
FortiOS 7.0 Not Affected 7.0.x Branch Clean Legacy TLS stack uses flat certificate store

Platform Impact: High-security defense, government, and financial sector FortiGates configured with encrypted TLS syslog (TCP 6514) requiring mutual certificate authentication.

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

Verify whether your FortiGate's encrypted syslog connection is experiencing TLS handshake resets and inspect certificate validation health:

Diagnostic Commands

# 1. Query miglogd connection status, TLS alerts, and queue drops
diagnose test application miglogd 6

# 2. Check validity and chain of installed local certificates
diagnose vpn certificate check

# 3. View active syslog configuration and TLS parameters
show log syslogd setting

# 4. Check memory utilization of the logging daemon
diagnose sys top-mem | grep miglogd

Remediation & Workaround Steps (Teaser Preview)

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

Step 02: Full PKCS#12 Certificate Chain Re-import

Re-bundle client certificate, intermediate CAs, and private key into a single container to force miglogd to serve the full chain.

🔒 Interactive CLI Available in Ferrite Runbook #04

Step 03: Non-Disruptive IPsec Tunnel Encapsulation Fallback

Route syslog over a private IPsec VTI tunnel with standard TCP 514 transport while preserving end-to-end cryptographic encryption.

🔒 Interactive CLI Available in Ferrite Runbook #04

Step 04: Automated TLS Connection Watchdog

Deploy event-driven automation to detect TLS alert 48 errors and switch to secondary syslog collectors automatically.

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

Ensure Unbroken Encrypted Syslog Delivery with Ferrite

Connect your FortiGate via browser terminal, audit TLS syslog handshakes in real-time, test certificate chains instantly, and generate sealed cryptographic audit compliance 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.
📄
mTLS Audit Dossier Standardized evidence export with SHA-256 seal.

Frequently Asked Questions

Why does FortiOS fail mutual TLS (mTLS) syslog handshakes?

Under Bug 0894209, when miglogd initiates a TLS connection to an external syslog receiver over TCP 6514 with mutual authentication enabled (client certificate verification), the daemon's internal OpenSSL context fails to include intermediate CA certificates in the Certificate message sent to the SIEM. The SIEM server rejects the incomplete chain with an 'unknown CA' alert and closes the TCP socket.

What happens to logs generated while the TLS handshake is failing?

miglogd queues the un-sent logs into system memory. If the TLS handshake continues to fail in an infinite retry loop, the memory queue fills within minutes, forcing miglogd to discard incoming logs or trip conserve mode.

Which FortiOS versions contain the permanent fix?

The intermediate CA bundle packaging defect is permanently resolved in FortiOS 7.4.2 and FortiOS 7.2.8+, where miglogd correctly exports full PKCS#7 / intermediate chains during TLS ClientHello negotiation.