Description |
This article describes the udp_flood anomaly, its method of operation, and why it is the most likely anomaly present within Denial of Service (DoS) Policies that will cause false positives and impacts to end-users. This article will also aggregate the many articles available that touch upon the udp_flood Anomaly, and it will also offer guidance for how to use this Anomaly responsibly.
Note that this article assumes that users are generally familiar with DoS Policies. Refer to the following documentation for a primer on DoS Policies on the FortiGate: DoS policy. |
Scope | FortiGate, DoS Policy |
Solution |
First and foremost: do not enable the Block action for the udp_flood Anomaly until the Monitor action has been used to sufficiently tune the Threshold. Enabling udp_flood blocking on the WAN interface without adjusting the default thresholds will almost-certainly result in impacts to user traffic, particularly UDP-based traffic like DNS and any VoIP traffic (SIP, Microsoft Teams, Zoom, etc.)
What is udp_flood, and how does it work? The udp_flood Anomaly tracks the number of incoming UDP packets per second that are going to a given Destination IP address, and it triggers if that traffic exceeds the threshold configured within the DoS Policy. This means that the udp_flood anomaly is useful for identifying and blocking attackers that use one or more sources to send a high volume of UDP traffic towards the FortiGate (for example, a DNS amplification attack).
Notably, there are a few critical points to consider for this specific Anomaly:
Why can udp_flood result in false-positives? At the time of this writing, the vast majority of enterprise networks today are still predominantly using IPv4, which means that Source NAT is almost always being applied for traffic flowing from the corporate LAN out to the Internet. This also means that for any given session (e.g., a client device connecting to an Internet server), two sets of traffic are incoming from the FortiGate's perspective:
In the latter case (incoming to WAN interface), the first part of the problem can be seen: many unique sessions from different clients going out to the Internet will inevitably result in reply traffic being destined for a singular (or relatively small set) of public IP addresses assigned to the FortiGate.
The second part of the problem occurs when users are frequently utilizing UDP-based services on the Internet. While TCP is utilized for applications that trade latency for reliable packet delivery, UDP is utilized by applications that can tolerate minor packet loss but are much more sensitive to latency and overhead.
This is why the udp_flood Anomaly disproportionately affects VoIP applications (e.g., Microsoft Teams, Google Meet, Zoom, etc.,) when it comes to false-positives, as these applications prefer to utilize high volumes of small-sized UDP datagrams when handling audio and video traffic (since UDP is much more performant in these use-cases compared to TCP). This problem can also be observed with DNS traffic sent out to the Internet, as well as with HTTP/3 (aka QUIC) based web traffic.
For example, consider the following log sample. Note how the Source IP is 1.1.1.1 (Cloudflare) and Source Port is 53 (DNS), which is counter to typical expectations given that this was triggered by a client making a DNS request out to Cloudflare (the threshold was set to only 5 pps for demonstration purposes):
date=2025-09-09 time=12:23:36 eventtime=1757445816755223619 tz="-0700" logid="0720018432" type="utm" subtype="anomaly" eventtype="anomaly" level="alert" vd="root" severity="critical" srcip=1.1.1.1 srccountry="Australia" dstip=100.64.0.1 dstcountry="Reserved" srcintf="wan1" srcintfrole="wan" sessionid=0 action="clear_session" proto=17 service="udp/50736" count=17 attack="udp_flood" srcport=53 dstport=50736 attackid=285212772 policyid=1 policytype="DoS-policy" ref="http://www.fortinet.com/ids/VID285212772" msg="anomaly: udp_flood, 6 > threshold 5, repeats 17 times since last log, pps 6 of prior second" crscore=50 craction=4096 crlevel="critical"
What can be done to prevent false-positives with udp_flood? Generally speaking, there are a few different approaches that can be taken when addressing udp_flood in DoS Policies, though these approaches are useful across the many different Anomalies:
Option 1: Measure the udp_flood thresholds and increase them to above typical network usage.
Option 2: Disable blocking of udp_flood. In some cases, the typical usage of UDP traffic on the network may be too variable to set a particular threshold value. In those cases, it may be easier to simply set the udp_flood Action to either Disable or Monitor so that it does not block traffic at all.
Option 3: Modify the DoS Policies to handle known traffic differently. If an application uses a specific set of UDP ports or server IP addresses, then it is possible to define a separate DoS Policy that matches this traffic. This would allow different settings for the Anomalies compared to traffic hitting the main DoS Policy (e.g., disable udp_flood for Microsoft Teams traffic, but enable udp_flood for all other cases).
For more specific guidance for certain applications, as well as more information on DoS Policies in-general, consult the Related Articles section below.
Related articles: Technical Tip: Using Microsoft Teams with DOS Policy Technical Tip: Using Zoom with IPv4 DoS Policy Troubleshooting Tip: User DNS communication fails randomly Technical Tip: DoS attack log according to action set on DoS policy Troubleshooting Tip: How to set DoS policy exceptions Technical Tip: Identifying packet drops caused by DOS Policy Technical Tip: FortiGate - UDP Flooding Attack is blocked but amount of traffic does not decrease |
The Fortinet Security Fabric brings together the concepts of convergence and consolidation to provide comprehensive cybersecurity protection for all users, devices, and applications and across all network edges.
Copyright 2025 Fortinet, Inc. All Rights Reserved.