Ferritaas Incident Intelligence
Compliance & Regulatory Intelligence LogID 0000000013 / PCI-REQ-10 Severity: High (P2)

Missing Source NAT (SNAT) IP in Traffic Logs Causing PCI-DSS Audit Failure

FortiOS firewall policies operating in default logging modes omit post-NAT translation attributes (transip, transport) from session closure records, destroying forward-and-backward IP traceability mandated by PCI-DSS v4.0 Requirement 10 and HIPAA audits.

๐Ÿš€ Open Full Runbook & Live Automation on Ferrite โ†’ Browse Known Issues Directory
โฑ๏ธ Est. Triage: 4โ€“6 mins | Automated CLI Available

Technical Root Cause Analysis

PCI-DSS v4.0 Requirement 10.2.2 and 10.3.1 strictly mandate that audit trails record all administrative and user network interactions with cardholder data, including individual source identities, destination addresses, and post-translation endpoints. When a FortiGate performs Source Network Address Translation (dynamic pool or outgoing interface PAT), the kernel session table (sys session) maintains both original direction tuples (srcip, srcport) and reply direction tuples (transip, transport).

However, the logging subsystem (miglogd) formats traffic log records based on policy-specific directives. In configurations where logtraffic is set to default or utm (logging only UTM security events), or where logtraffic-start is omitted on long-running flows, the translation tuple is suppressed from the emitted LogID 0000000013 (Traffic Log). Egress flows appear in SIEM collectors with purely internal private RFC 1918 addresses without the public egress translation IP, creating a critical forensic blind spot where external providers cannot correlate abuse or access events back to internal workstations.

date=2026-09-11 time=03:14:22 devname="FGT-CDE-CORE" devid="FGT60FTK21008912" logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" srcip=10.240.12.45 srcport=54210 srcintf="port2" dstip=198.51.100.22 dstport=443 dstintf="port1" sessionid=891024 proto=6 action="accept" policyid=14 dstcountry="United States" srccountry="Reserved" trandisp="snat" [AUDIT DEFECT: transip and transport fields omitted] duration=18 sentbyte=1240 rcvdbyte=8432 sentpkt=14 rcvdpkt=22

Affected Firmware & Compliance Blast Radius

FortiOS Branch Default Configuration Behavior Required Policy Setting Compliance Status
FortiOS 7.6 Requires explicit logtraffic all set logtraffic all Audit Compliant if configured
FortiOS 7.4 Omits transip on offloaded fast-path sessions set logtraffic all + pool log Audit Compliant if configured
FortiOS 7.2 Default policy omits SNAT port allocation logs set logtraffic all Audit Compliant if configured
FortiOS 7.0 Default policy template sets logtraffic utm logtraffic utm (Default Non-compliant) Violates PCI-DSS Req 10

Platform Impact: All FortiGate appliances protecting payment processing environments, healthcare HIPAA enclaves, or ISO 27001 scope perimeters utilizing SNAT.

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

Run these diagnostic commands directly via SSH or Web Serial to audit your firewall policies and verify whether active log streams include translation attributes:

Diagnostic Commands

# 1. Audit firewall policies touching sensitive segments for logtraffic configuration
show firewall policy | grep -B 2 -A 5 "logtraffic"

# 2. Filter local log buffer for real-time forward traffic records
execute log filter category 0
execute log filter field subtype forward
execute log display | grep -E "trandisp|transip"

# 3. Verify session table translation parameters on an active CDE flow
diagnose sys session filter src 10.240.12.0 255.255.255.0
diagnose sys session list | grep -E "proto=|saddr=|daddr=|act="

Remediation & Workaround Steps (Teaser Preview)

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

Step 02: Bulk Policy Alignment via CLI Script

Configure set logtraffic all and enable session-start records across all in-scope CDE firewall rules.

๐Ÿ”’ Interactive CLI Available in Ferrite Runbook #04

Step 03: IP Pool Port-Block Allocation (PBA) Logging

Enable deterministic NAT translation event logging to eliminate session-by-session logging overhead while preserving full auditability.

๐Ÿ”’ Interactive CLI Available in Ferrite Runbook #04

Step 04: Central SIEM Parser Normalization Verification

Validate Splunk, Sentinel, and Chronicle CEF field extraction mappings for transip and transport.

๐Ÿ”’ Interactive CLI Available in Ferrite Runbook #04
โšก Ferrite Platform Superpowers

Audit & Fix Compliance Gaps with Live Browser Automation

Connect your FortiGate securely via Web Serial or local SSH bridge, run compliance audit checks across all policies in seconds, and generate sealed QSA-ready forensic 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 & QSA Audit Dossier Standardized evidence export with SHA-256 seal.

Frequently Asked Questions

Why are transip and transport omitted from FortiGate traffic logs?

By default, FortiOS firewall policies may have logtraffic configured to 'utm' instead of 'all', or NAT port allocation is offloaded directly to hardware NP7/NP6 ASICs without passing translation metadata back to miglogd on session termination unless explicit traffic logging is enforced.

Which compliance mandates are violated by missing SNAT logs?

PCI-DSS v4.0 Requirement 10 (specifically 10.2.2, 10.3.1, and 10.3.4), HIPAA Security Rule ยง164.312(b), and NIST SP 800-53 AU-3 mandate that audit trails identify the actor, origin, and exact egress IP/port for all network connections initiating from or traversing secure segments.

Does enabling 'set logtraffic all' degrade firewall performance?

On high-capacity appliances (FG-100F and above), session-close logging has negligible ASIC impact. However, if 'logtraffic-start' is enabled across millions of concurrent short-lived connections, miglogd queue depth must be monitored using Runbook #04 to avoid buffer accumulation.