VYPR
Moderate severityOSV Advisory· Published Jan 26, 2021· Updated Aug 4, 2024

CVE-2020-17522

CVE-2020-17522

Description

Apache Traffic Control's ORT generated overly permissive ip_allow.config files, allowing unauthorized cache content manipulation and potentially granting access to unintended IP ranges.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Apache Traffic Control's ORT generated overly permissive ip_allow.config files, allowing unauthorized cache content manipulation and potentially granting access to unintended IP ranges.

The vulnerability resides in the ORT (now atstccfg) utility in Apache Traffic Control versions 3.0.0 to 3.1.0 and 4.0.0 to 4.1.0 [1]. When generating ip_allow.config files for Apache Traffic Server caches, ORT mistakenly includes overly permissive access rules. These rules allow any client to push arbitrary content into CDN cache servers and remove arbitrary content from them [2]. Additionally, the permissions can inadvertently extend to IP addresses outside the intended CDN architecture, further widening the attack surface [1].

Exploitation requires network access to the cache servers on the ports governed by ip_allow.config. Since the generated rules are permissive, an attacker who can reach a cache server can perform these operations without authentication [2]. The misconfiguration stems from ORT's generation logic, which did not properly restrict IP allow rules to only trusted networks [1].

An attacker exploiting this flaw could inject malicious content into the CDN cache, potentially serving that content to legitimate end users. They could also delete cached assets, causing denial of service or degraded performance [2]. The extended IP ranges mean that even clients outside the CDN's intended network could gain these permissions [1].

The Apache Traffic Control project has addressed this issue by modifying ORT behavior. In the commit referenced by [3], ORT now refuses to update ip_allow.config during syncds mode (logging an error) and only updates it in badass mode. This change acknowledges an upstream ATS bug where reloading with a changed ip_allow.config blocks arbitrary addresses. Users are advised to upgrade to a patched version (e.g., 4.1.1 or later) to mitigate the risk [3].

AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
github.com/apache/trafficcontrolGo
< 5.0.05.0.0

Affected products

2

Patches

1
492290d810e9

Change ORT to not update ip_allow except badass (#5041)

https://github.com/apache/trafficcontrolRobert O ButtsSep 18, 2020via ghsa
2 files changed · +14 0
  • CHANGELOG.md+2 0 modified
    @@ -78,6 +78,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
     - Changed Traffic Portal to use the more performant and powerful ag-grid for all server tables.
     - Changed ORT Config Generation to be deterministic, which will prevent spurious diffs when nothing actually changed.
     - Changed ORT to find the local ATS config directory and use it when location Parameters don't exist for many required configs, including all Delivery Service files (Header Rewrites, Regex Remap, URL Sig, URI Signing).
    +- Changed ORT to not update ip_allow.config but log an error if it needs updating in syncds mode, and only actually update in badass mode.
    +    - ATS has a known bug, where reloading when ip_allow.config has changed blocks arbitrary addresses. This will break things by not allowing any new necessary servers, but prevents breaking the Mid server. There is no solution that doesn't break something, until ATS fixes the bug, and breaking an Edge is better than breaking a Mid.
     - Changed the access logs in Traffic Ops to now show the route ID with every API endpoint call. The Route ID is appended to the end of the access log line.
     - Changed Traffic Monitor's `tmconfig.backup` to store the result of `GET /api/2.0/cdns/{{name}}/configs/monitoring` instead of a transformed map
     - [Multiple Interface Servers](https://github.com/apache/trafficcontrol/blob/master/blueprints/multi-interface-servers.md)
    
  • traffic_ops_ort/traffic_ops_ort.pl+12 0 modified
    @@ -42,6 +42,7 @@
     my $skip_os_check = 0;
     my $override_hostname_short = '';
     my $to_timeout_ms = 30000;
    +my $syncds_updates_ipallow = 0;
     
     GetOptions( "dispersion=i"       => \$dispersion, # dispersion (in seconds)
                 "retries=i"          => \$retries,
    @@ -51,6 +52,7 @@
                 "skip_os_check=i" => \$skip_os_check,
                 "override_hostname_short=s" => \$override_hostname_short,
                 "to_timeout_ms=i" => \$to_timeout_ms,
    +            "syncds_updates_ipallow=i" => \$syncds_updates_ipallow,
               );
     
     if ( $#ARGV < 1 ) {
    @@ -345,6 +347,7 @@ sub usage {
     	print "\t   skip_os_check=<0|1>            => bypass the check for a supported CentOS version. Default = 0.\n";
     	print "\t   override_hostname_short=<text> => override the short hostname of the OS for config generation. Default = ''.\n";
     	print "\t   to_timeout_ms=<time>           => the Traffic Ops request timeout in milliseconds. Default = 30000 (30 seconds).\n";
    +	print "\t   syncds_updates_ipallow=<0|1>   => Update ip_allow.config in syncds mode, which may trigger an ATS bug blocking random addresses on load! Default = 0, only update on badass and restart.\n";
     	print "====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====\n";
     	exit 1;
     }
    @@ -412,6 +415,15 @@ sub process_cfg_file {
     		}
     	}
     
    +	if ($change_needed && $cfg_file eq "ip_allow.config" && $syncds_updates_ipallow != 1) {
    +		if ($script_mode == $BADASS) {
    +			$trafficserver_restart_needed++;
    +		} else {
    +			( $log_level >> $ERROR ) && print "ERROR Not in badass mode, but ip_allow.config changed! Changing that file will cause ATS to break the next time it Reloads! Ignoring file!! This will cause this server to reject any new servers! ORT must be run in badass mode to get the ip_allow.config change and permit the necessary client!\n";
    +			$change_needed = undef;
    +		}
    +	}
    +
     	if ( $change_needed ) {
     		$cfg_file_tracker->{$cfg_file}{'change_needed'}++;
     		( $log_level >> $ERROR ) && print "ERROR $file needs updated.\n";
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

8

News mentions

0

No linked articles in our index yet.