Web Application Security

Quick tip: Watch out — restriction by location can be circumvented.

by @Andrey Danau, Wallarm Research

If you are like many app developers, you may be using nginx or apache proxy or a web server on the front end of your application. If you are on a tight schedule, it is tempting to tie authorization and data controls simply to the locations defined in the front end.

Here lies a pitfall — due to a different treatment of the location path by the java-based back-end and the front-end. Because of this, it is possible to bypass the location-based restrictions.

Let’s consider an example where a basic authorization can be circumvented.

The example in this post was tested with Apache/2.4.27 (Ubuntu), nginx/1.10.3(Ubuntu)

Apache configuration was as follows:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Location /resin-doc/>
AuthType Basic
AuthName ‘test’
AuthUserFile ‘/etc/.htpasswd’
Require valid-user
</Location>
ProxyPass /

http ://0.0.0.0:8080/

ProxyPassReverse /

http ://0.0.0.0:8080/

</VirtualHost>

For nginx:

location / {
             proxy_pass

http: //localhost:8080;

           }
location /resin-doc/ {
                      auth_basic “closed site”;
                      auth_basic_user_file /etc/.htpasswd;
                     }

Apache or nginx were used as front-end with a proxy to backend on port *:8080; backend is implemented with a web server running on Resin/4.0.55

Using Apache or nginx as a proxy server to Resin we can circumvent location restrictions, for example when they are used for the authorization.

URL http ://localhost/resin-doc/ will request the credentials (login name and password) with a special request that will look similar to this: http ://localhost/%C0%AFresin-doc%C0%AFindex.xtp

(%C0%AF is a unicode encoded symbol “/”)

Alternatively, the request can take a form of http ://localhost/resin-docindex.xtp

Resin normalizes “” into “/”.

Unlike Resin, neither Apache nor nginx change the path at all and do not normalize which means that by the time location is presented to the back-end it looks like http ://localhost/resin-doc/index.xtp , and the location restrictions are bypassed.

Although this case can be considered a simple configuration error, the consequences can be quite serious. Watch out for it.

Recent Posts

AI Agent Security Readiness: The Federal Standard You Should Get Ahead Of

Here's the uncomfortable part first: in August 2026, researchers found AI agents connected to Hugging…

2 weeks ago

Dissecting Attacks Is Only Valuable If It Informs Controls: What the Unit 42 agentic AI investigation should change in your control set, stage by stage.

The volume of published incident research involving agentic AI is increasing, and the analysis that…

3 weeks ago

Lessons from the OpenAI and Hugging Face Incident: When Safety Filters Disarm the Defender

In July 2026, an OpenAI model escaped its evaluation sandbox and broke into Hugging Face's…

2 months ago

AI Control Platform vs. AI Firewall vs. AI Gateway: Clearing Up The Terminology

Editor's note: This article was originally published by Tim Erlin on LinkedIn. It has been…

3 months ago

Introducing the Wallarm AI Control Platform: One closed loop for AI security and API security.

TL;DR- AI deployment has outpaced AI governance. Most enterprises running AI on AWS cannot answer…

4 months ago

What Your Board Gets Wrong About AI Security

Editor's note: This article was originally published by Craig Riddell on LinkedIn. It has been…

4 months ago