<div dir="ltr"><font face="monospace">VSV00008 Varnish HTTP/1 Request Smuggling Vulnerability<br>=======================================================<br><br>Date: 2022-01-25<br><br>A request smuggling attack can be performed on HTTP/1 connections on<br>Varnish Cache servers. The smuggled request would be treated as an<br>additional request by the Varnish server, go through normal VCL<br>processing, and injected as a spurious response on the client connection.<br><br>Identifying smuggled requests<br>-----------------------------<br><br>Smuggled requests will show in the logs generated by Varnish as normal<br>requests. It may be possible to identify the smuggled requests by<br>comparing the Varnish logs with logs from any proxy software between the<br>Varnish server and the client.<br><br>Versions affected<br>-----------------<br><br>* Varnish Cache releases 1.x, 2.x, 3.x, 4.x, 5.x, 6.0.x, 6.1.x, 6.2.x,<br>  6.3.x, 6.4.x, 6.5.x, 6.6.0, 6.6.1, 7.0.0, 7.0.1.<br><br>* Varnish Cache 6.0 LTS series up to and including 6.0.9.<br><br>* All versions of Varnish Cache 4.1 LTS series.<br><br>Versions not affected<br>---------------------<br><br>* Varnish Cache 6.6.2 (released 2022-01-25)<br><br>* Varnish Cache 7.0.2 (released 2022-01-25)<br><br>* Varnish Cache 6.0 LTS version 6.0.10 (released 2022-01-25)<br><br>* GitHub Varnish Cache master branch at commit 1020be7e886399a4e94407ae0dfbfd1475cc5756<br><br>Mitigation<br>----------<br><br>If upgrading Varnish is not possible, it is possible to mitigate the<br>problem by ensuring that the Varnish Server does not allow connection<br>reuse on HTTP/1 client connections once a request body has been seen on<br>the connection. To deploy the workaround, put the following VCL<br>configuration towards the top of the VCL configuration::<br><br>  sub vsv8 {<br>      if ((req.http.Content-Length || req.http.Transfer-Encoding) &&<br>        req.proto != "HTTP/2.0") {<br>          set resp.http.Connection = "close";<br>      }<br>  }<br><br>  sub vcl_synth { call vsv8; }<br>  sub vcl_deliver { call vsv8; }<br><br>Credits<br>-------<br><br>This problem was discovered and reported to us by James Kettle, Director<br>of Research at PortSwigger. We wish to thank him for the responsible<br>disclosure.<br></font><br></div>