漏洞修复
如果修复payload1,按照修复CVE-2021-28164的方式,在__ambiguousSegments中增加%u002e类似的歧义字符,是可以的。但是Jetty并没有这么做,而是直接选择了不按照RFC规范来了。
这是最新版9.4.43中org.eclipse.jetty.http.HttpURI.java中新加的注释。也就是说,通过在规范化相对路径之前进行url解码和删除参数,歧义的路径就不存在了,但是这是一种非标准的方法,因为RFC3986要求需要先规范化,在进行解码和删除参数,也就是9.4.37-9.4.42之间(包含)的版本的处理方式才是标准的。
如果修复payload1,按照修复CVE-2021-28164的方式,在__ambiguousSegments中增加%u002e类似的歧义字符,是可以的。但是Jetty并没有这么做,而是直接选择了不按照RFC规范来了。
这是最新版9.4.43中org.eclipse.jetty.http.HttpURI.java中新加的注释。也就是说,通过在规范化相对路径之前进行url解码和删除参数,歧义的路径就不存在了,但是这是一种非标准的方法,因为RFC3986要求需要先规范化,在进行解码和删除参数,也就是9.4.37-9.4.42之间(包含)的版本的处理方式才是标准的。