<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Request Smuggling &amp; Cache on MrAzoth</title>
    <link>https://az0th.it/web/request/</link>
    <description>Recent content in Request Smuggling &amp; Cache on MrAzoth</description>
    <generator>Hugo -- 0.154.5</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 24 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://az0th.it/web/request/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title> HTTP Request Smuggling (H1): CL.TE / TE.CL / TE.TE</title>
      <link>https://az0th.it/web/request/090-request-http1-smuggling/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/request/090-request-http1-smuggling/</guid>
      <description>&lt;h1 id=&#34;http-request-smuggling-h1-clte--tecl--tete&#34;&gt;HTTP Request Smuggling (H1): CL.TE / TE.CL / TE.TE&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-444
&lt;strong&gt;OWASP&lt;/strong&gt;: A05:2021 – Security Misconfiguration
&lt;strong&gt;PortSwigger Research&lt;/strong&gt;: &lt;a href=&#34;https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn&#34;&gt;https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-http-request-smuggling&#34;&gt;What Is HTTP Request Smuggling?&lt;/h2&gt;
&lt;p&gt;Modern web architectures use a &lt;strong&gt;chain of HTTP processors&lt;/strong&gt;: a frontend (CDN, load balancer, reverse proxy) that forwards requests to a backend server. These processors must agree on where each HTTP request ends and the next begins.&lt;/p&gt;
&lt;p&gt;HTTP/1.1 allows two ways to specify body length:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP/2 Rapid Reset (CVE-2023-44487)</title>
      <link>https://az0th.it/web/request/092-request-http2-rapidreset/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/request/092-request-http2-rapidreset/</guid>
      <description>&lt;h1 id=&#34;http2-rapid-reset-cve-2023-44487&#34;&gt;HTTP/2 Rapid Reset (CVE-2023-44487)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High (DoS) | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-400
&lt;strong&gt;OWASP&lt;/strong&gt;: A05:2021 – Security Misconfiguration&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-http2-rapid-reset&#34;&gt;What Is HTTP/2 Rapid Reset?&lt;/h2&gt;
&lt;p&gt;HTTP/2 Rapid Reset is a DoS amplification technique that exploits the HTTP/2 stream multiplexing mechanism. In HTTP/2, a client can open multiple concurrent streams on a single TCP connection and cancel them immediately with a &lt;code&gt;RST_STREAM&lt;/code&gt; frame — before the server has finished processing them.&lt;/p&gt;
&lt;p&gt;The attack pattern:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Client sends &lt;code&gt;HEADERS&lt;/code&gt; frame (initiates a request on stream N)&lt;/li&gt;
&lt;li&gt;Client immediately sends &lt;code&gt;RST_STREAM&lt;/code&gt; frame (cancels stream N)&lt;/li&gt;
&lt;li&gt;Repeat at high rate — the server must still process each HEADERS frame before seeing the reset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The server incurs full request parsing and dispatch cost per stream. The client incurs almost none — it resets before receiving any response. This asymmetry is the amplification vector.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP/2 Request Smuggling</title>
      <link>https://az0th.it/web/request/091-request-http2-smuggling/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/request/091-request-http2-smuggling/</guid>
      <description>&lt;h1 id=&#34;http2-request-smuggling&#34;&gt;HTTP/2 Request Smuggling&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-444
&lt;strong&gt;OWASP&lt;/strong&gt;: A02:2021 – Cryptographic Failures / A05:2021 – Security Misconfiguration&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-http2-smuggling&#34;&gt;What Is HTTP/2 Smuggling?&lt;/h2&gt;
&lt;p&gt;HTTP/2 uses a binary framing layer with explicit frame lengths — there is &lt;strong&gt;no Content-Length or Transfer-Encoding ambiguity within a true HTTP/2 connection&lt;/strong&gt;. Smuggling occurs at the &lt;strong&gt;H2→H1 downgrade boundary&lt;/strong&gt;: a front-end proxy accepts HTTP/2 but forwards to a back-end over HTTP/1.1. Two main attack variants:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;H2.CL — Front-end ignores HTTP/2 framing length,
         uses attacker-supplied Content-Length to forward to backend.
         Backend processes CL but sees extra bytes as a new request.

H2.TE — Front-end strips Transfer-Encoding header received in H2,
         but attacker-supplied TE header survives downgrade.
         Backend sees chunked encoding → processes smuggled prefix.

H2.0   — HTTP/2 cleartext (h2c) upgrade smuggling
         (CONNECT-based tunnel abuse)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Key difference from H1 smuggling: HTTP/2 headers are &lt;strong&gt;pseudo-headers&lt;/strong&gt; (&lt;code&gt;:method&lt;/code&gt;, &lt;code&gt;:path&lt;/code&gt;, &lt;code&gt;:scheme&lt;/code&gt;, &lt;code&gt;:authority&lt;/code&gt;) — injecting newlines in header values can create entirely new HTTP/1.1 headers after downgrade.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Cache Deception</title>
      <link>https://az0th.it/web/request/094-request-cache-deception/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/request/094-request-cache-deception/</guid>
      <description>&lt;h1 id=&#34;web-cache-deception&#34;&gt;Web Cache Deception&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-200, CWE-346
&lt;strong&gt;OWASP&lt;/strong&gt;: A01:2021 – Broken Access Control&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-web-cache-deception&#34;&gt;What Is Web Cache Deception?&lt;/h2&gt;
&lt;p&gt;Unlike cache poisoning (attacker poisons cache to affect other users), &lt;strong&gt;cache deception&lt;/strong&gt; tricks the cache into storing a &lt;strong&gt;victim&amp;rsquo;s private, authenticated response&lt;/strong&gt; as a public, cacheable resource — then the attacker retrieves it.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Normal: GET /account/profile → private, authenticated → Cache-Control: no-store
Trick:  GET /account/profile.css → server ignores .css, serves profile page
        CDN caches because .css extension → marked as static asset
Attacker: GET /account/profile.css → CDN returns cached victim profile
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Key requirement&lt;/strong&gt;: path routing that ignores the appended path/extension, combined with a cache that uses file-extension-based caching rules.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Cache Poisoning</title>
      <link>https://az0th.it/web/request/093-request-cache-poisoning/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/request/093-request-cache-poisoning/</guid>
      <description>&lt;h1 id=&#34;web-cache-poisoning&#34;&gt;Web Cache Poisoning&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High–Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-346, CWE-116
&lt;strong&gt;OWASP&lt;/strong&gt;: A05:2021 – Security Misconfiguration&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-web-cache-poisoning&#34;&gt;What Is Web Cache Poisoning?&lt;/h2&gt;
&lt;p&gt;A cache stores responses keyed by URL + headers. Poisoning works by injecting malicious content into a &lt;strong&gt;cached response&lt;/strong&gt; that is then served to all users requesting the same URL. Key concept: &lt;strong&gt;cache key&lt;/strong&gt; (what identifies a unique cache entry) vs &lt;strong&gt;unkeyed inputs&lt;/strong&gt; (headers/params that affect the response but aren&amp;rsquo;t in the cache key).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
