Skip to content

Breaking Parser Logic Take Your Path Normalization Off and Pop 0Days Out

Orange Tsai

Orange Tsai presents breaking parser logic take your path normalization off and pop 0days out: We propose a new exploit technique that brings a whole-new attack surface to defeat path normalization, which is complic...

Summary

Architecture and Background

We propose a new exploit technique that brings a whole-new attack surface to defeat path normalization, which is complicated in implementation due to many implicit properties and edge cases. This complication, being under-estimated or ignored by developers for a long time, has made our proposed attack vector possible, lethal, and general.

Vulnerability Analysis

Therefore, many 0days have been discovered via this approach in popular web frameworks written in trending programming languages, including Python, Ruby, Java, and JavaScript. Being a very fundamental problem that exists in path normalization logic, sophisticated web frameworks can also suffer. For example, we've found various 0days on Java Spring Framework, Ruby on Rails, Next.js, and Python aiohttp, just to name a few.

Exploitation and Demonstrations

This general technique can also adapt to multi-layered web architecture, such as using Nginx or Apache as a proxy for Tomcat. In that case, reverse proxy protections can be bypassed.

Remediation and Defensive Strategies

To make things worse, we're able to chain path normalization bugs to bypass authentication and achieve RCE in real world Bug Bounty Programs. Several scenarios will be demonstrated to illustrate how path normalization can be exploited to achieve sensitive information disclosure, SMB-Relay and RCE. Understanding the basics of this technique, the audience won't be surprised to know that more than 10 vulnerabilities have been found in sophisticated frameworks and multi-layered web architectures aforementioned via this technique.

Related talks

Main Stage·40 min

  • DEF CON
  • AppSec
  • Date: Aug 2021
  • Location: Las Vegas

James Kettle

PortSwigger researcher James Kettle pioneers HTTP/2 request smuggling, uncovering critical implementation flaws when front-end reverse proxies downgrade to back-end HTTP/1.1.

http2request-smugglingdesync+2