[
https://issues.apache.org/jira/browse/TS-2954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nikolai Gorchilov updated TS-2954:
----------------------------------
Description:
Current implementation of proxy.config.http.use_client_target_addr opens a very
simple attack vector for cache poisoning in transparent forwarding mode.
An attacker (or malware installed on innocent end-user computer) puts a fake IP
for popular website like www.google.com or www.facebook.com in hosts file on PC
behind the proxy. Once an infected PC requests the webpage in question, a
cacheable fake response poisons the cache.
In order to prevent such scenarios (as well as [some
others|http://www.kb.cert.org/vuls/id/435052]) Squid have implemented a
mechanism known as [Host Header Forgery
Detection|http://wiki.squid-cache.org/KnowledgeBase/HostHeaderForgery].
In short, while requesting an URL from origin server IP as hinted by the
client, proxy makes independent DNS query in parallel in order to determine if
client supplied IP belongs to requested domain name. In case of discrepancy
between DNS and client IP, the transaction shall be flagged as non-cacheable to
avoid possible cache poisoning, while still serving the origin response to the
client.
was:
Current implementation of proxy.config.http.use_client_target_addr opens a very
simple attack vector for cache poisoning in transparent forwarding mode.
An attacker (or malware installed on innocent end-user computer) puts a fake IP
for popular website like www.google.com or www.facebook.com in hosts file on PC
behind the proxy. Once an infected PC requests the webpage in question, a
cacheable fake response poisons the cache.
In order to prevent such scenarios (as well as [some
others|http://www.kb.cert.org/vuls/id/435052]) Squid have implemented a
mechanism known as [Host Header Forgery
Detection|http://wiki.squid-cache.org/KnowledgeBase/HostHeaderForgery].
In short, while requesting an URL from origin server IP as hinted by the
client, proxy makes independent DNS query in parallel in order to determine if
client supplied IP belongs to requested domain name. In case of discrepancy
between DNS and client IP, the transaction shall be flagged as non-cacheable to
avoid possible cache poisoning, while still serving the original response to
the client.
> cache poisoning due to proxy.config.http.use_client_target_addr = 1
> -------------------------------------------------------------------
>
> Key: TS-2954
> URL: https://issues.apache.org/jira/browse/TS-2954
> Project: Traffic Server
> Issue Type: Bug
> Components: Cache, DNS, Security, TProxy
> Reporter: Nikolai Gorchilov
> Priority: Critical
>
> Current implementation of proxy.config.http.use_client_target_addr opens a
> very simple attack vector for cache poisoning in transparent forwarding mode.
> An attacker (or malware installed on innocent end-user computer) puts a fake
> IP for popular website like www.google.com or www.facebook.com in hosts file
> on PC behind the proxy. Once an infected PC requests the webpage in question,
> a cacheable fake response poisons the cache.
> In order to prevent such scenarios (as well as [some
> others|http://www.kb.cert.org/vuls/id/435052]) Squid have implemented a
> mechanism known as [Host Header Forgery
> Detection|http://wiki.squid-cache.org/KnowledgeBase/HostHeaderForgery].
> In short, while requesting an URL from origin server IP as hinted by the
> client, proxy makes independent DNS query in parallel in order to determine
> if client supplied IP belongs to requested domain name. In case of
> discrepancy between DNS and client IP, the transaction shall be flagged as
> non-cacheable to avoid possible cache poisoning, while still serving the
> origin response to the client.
--
This message was sent by Atlassian JIRA
(v6.2#6252)