<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nygren-httpbis-http11-request-binding-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="HTTP/1.1 Message Binding">HTTP/1.1 Request Smuggling Defense using Cryptographic Message Binding</title>
    <seriesInfo name="Internet-Draft" value="draft-nygren-httpbis-http11-request-binding-00"/>
    <author fullname="Erik Nygren">
      <organization>Akamai Technologies</organization>
      <address>
        <email>erik+ietf@nygren.org</email>
      </address>
    </author>
    <author fullname="Mike Bishop">
      <organization>Akamai Technologies</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <date year="2025" month="October" day="16"/>
    <area>WIT</area>
    <workgroup>httpbis</workgroup>
    <keyword>HRS</keyword>
    <keyword>Request Smuggling</keyword>
    <keyword>Message Binding</keyword>
    <abstract>
      <?line 68?>

<t>HTTP/1.1 Message Binding adds new hop-by-hop header fields that are cryptographically bound to requests and responses. The keys used are negotiated out-of-band from the HTTP datastream (such as via TLS Exporters). These header fields allow endpoints to detect and mitigate desynchronization attacks, such as HTTP Request Smuggling, that exist due to datastream handling differences.</t>
    </abstract>
  </front>
  <middle>
    <?line 72?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>HTTP Request Smuggling is a class of desynchronization attack <xref target="HTTPSYNC"/> where a malicious endpoint can cause a chain of other endpoints to get confused about HTTP request framing due to attributes of the HTTP/1.1 protocol leading to ambiguities in interpretation and variations in implementation.  For example, if in a flow of:</t>
        <artwork><![CDATA[
    User Agent => Intermediary => Origin Server
]]></artwork>
        <t>the User Agent can send an HTTP request header field with two Content-Length header fields and a Body that contains a second smuggled HTTP request after one of the content lengths.  If the Intermediary and Origin Server interpret the request in different ways, the Intermediary might think that there was one request while the Origin Server thinks there are now two requests. Not only would the first request get smuggled past Intermediary defenses, if there is a second real request (so a total of three requests if you include the smuggled one) then the Intermediary might cache the contents of the smuggled response with the cache key of the third request.</t>
        <t>There are nigh-infinite variations on this class of attack against HTTP/1.1 with frequent vulnerabilities being found and fixed. While some of these are implemenation bugs, others are due to underspecification in the HTTP/1.1 protocol itself. This latter case is hard for any single party to fix, hence where this specification can act as an additonal line of defense.</t>
        <t>While HTTP/2 and HTTP/3 are better (<xref target="RFC9113"/> <xref target="RFC9114"/>), conversions between HTTP versions can also be vectors for vulnerabilities here to creep in. Additionally, a malicious User Agent could force an HTTP/1.1 connection to pollute shared resources (a cache or persistent connection) shared with other User Agents using newer HTTP protocols. Furthermore, the simplicity of HTTP/1.1 and large legacy code bases mean that there is extensive use of HTTP/1.1 in Intermediaries such as reverse proxies in the ecosystem: Origin Servers themselves may have an implementation where an Intermediary proxy fronts application servers, each of which having distinct HTTP implementations potentially from different vendors.</t>
      </section>
      <section anchor="mitigation-overview">
        <name>Mitigation Overview</name>
        <t>The key concept of this specification is for HTTP/1.1 endpoints (such as an Intermediary and an Origin Server) to be able to share information about their state (e.g., which request/response they think they're parsing) in a way that is cryptographically bound to the hop-by-hop TLS connection. Since the attacker has no access to the key used for the cryptographic binding, this allows the endpoints to detect desynchronization and fail out but without needing changes to the HTTP/1.1 protocol itself. This shared key is then used to authenticate newly introduced hop-by-hop header fields, binding information in those header fields (which includes sequential request/response serial numbers) to the request. Cases where requests or responses do become desynchronized will be detected due to invalid bound header fields (either due to failing to validate or not matching what is expected).</t>
        <t>While "Request Framing Confusion" attacks (such as HTTP Request Smuggling or HRS) are one of the most common forms of HTTP Processing Discrepancy attacks, other types of attacks such as Host Confusion can also cause problems (<xref target="HTTPSYNC"/>). This specification focuses on the former, but as it evolves we may be able to extend the approach taken to defend against other forms of attacks such as Host Confusion and Path Confusion, as well as to protect header fields added by Intermediaries.</t>
        <t><em>(FOR DISCUSSION: How broadly do we want to scope this specification? How much do we include here, and how much do we leave hooks to enable future extension? At the moment this is intentionally in a middle-ground, and we may either want to simplify or make more general.)</em></t>
        <t>HTTP endpoints communicating HTTPS over TLS use TLS Exporters to obtain the key used for the binding (<xref section="7.5" sectionFormat="comma" target="RFC8446"/> <xref target="RFC5705"/>), enabling both endpoints of a connection to securely derive this key out-of-band from the request flow in a way that can't be tampered with. The use of Message Binding header fields is also negotiated during the TLS handshake.</t>
        <t>The key used for the binding is abstracted out, so proprietary implementations not using TLS can distribute the key in some other manner, such as in a preface attribute that could be added to the PROXY protocol <xref target="PROXY"/>.</t>
      </section>
      <section anchor="illustrative-example">
        <name>Illustrative Example</name>
        <t>In an example HRS attack from a malicious User Agent to an Origin Server through an Intermediary, the request might start out normally but the malicious User Agent smuggles a second malicious request into the initial request (e.g., due to a bug in the Intermediary or due to the Intermediary and Origin Server interpreting the HTTP/1.1 protocol slightly differently).</t>
        <t><em>(TODO: Add a diagram)</em></t>
        <t>The net result is that the Intermediary and Origin Server get desynchronized as to how requests and responses line up. When the malicious User Agent makes a second request, it gets back the response to the smuggled request, and a caching Intermediary may actually cache the response to the smuggled request with the cache key of this second request. This means the attacker can not only bypass any controls the Intermediary may be implementing, but may also be able to poison its cache.</t>
        <t>With the proposed mitigation, the Intermediary augments the first and second requests (from its perspective) with cryptographically protected hop-by-hop <tt>Bound-Request</tt> header fields indicating a serial number (e.g., 1 and 2). While the Origin Server is able to validate the header field in the first request, the smuggled request is missing the header field (and even if the attacker tried to add one it would fail validation due to the attacker not having the cryptographic secret). This allows the Origin Server to detect the desynchronization, enabling it to refuse to process the smuggled request and terminate the connection.</t>
        <t><em>(TODO: Add a diagram)</em></t>
        <t>Request Smuggling is a family of attacks with many variations. This is why it's valuable to include the request and response binding hop-by-hop header fields in both directions, as in some other variations it might be possible for things to get reordered such that an Intermediary making request A with serial=1 might get back a response for a request C with serial=2 and needs to be able to fail on that as well, as well as any wide range of other similar cases of desynchronization.</t>
        <t>The need for a cryptographic binding to the channel between the Intermediary and Downstream Server (e.g., with TLS Exporters) is required to prevent the malicious User Agent from including a fake request binding header field in what is being smuggled in (which by its nature may be invisible to the Intermediary due to some bug or vulnerability).</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="bound-message-header-protocol">
      <name>Bound Message Header Protocol</name>
      <t>This specification introduces new hop-by-hop <tt>Bound-Request</tt> and <tt>Bound-Response</tt> message header fields, which use <xref target="RFC8941"/> structured fields. These header fields convey a request/response Serial number, additional attributes, and a cryptographic binding.</t>
      <t>As these are hop-by-hop header fields they are added by the endpoints on the HTTP/1.1 persistent connection (<xref target="RFC9112"/>). Below we refer to the outbound endpoint making the request as the Intermediary (<xref section="3.7" sectionFormat="comma" target="RFC9110"/>) and the inbound endpoint receiving the request and issuing a response as the Downstream Server. The Downstream Server may be either another Intermediary or an Origin Server.</t>
      <t>Intermediaries and Downstream Servers <bcp14>MUST NOT</bcp14> exchange <tt>Bound-Request</tt> and <tt>Bound-Response</tt> header fields unless they have mutually negotiated this protocol, either as described below in <xref target="tls-negotiation"/> or via some other out-of-band mechanism. If the User Agent and Downstream Server have negotiated using this protocol for a connection, they <bcp14>MUST</bcp14> send a <tt>Bound-Request</tt> and <tt>Bound-Response</tt> header fields in all requests and responses on that connection.</t>
      <section anchor="serials">
        <name>Request/Response Serials</name>
        <t>The Request Serial (<tt>$req_serial</tt>) is a counter starting at 1 for the initial request in an HTTP/1.1 persistent connection, and then incrementing by 1 for each subsequent request. The Response Serial (<tt>$resp_serial</tt>) for a response is then reflected back to match the Request Serial from the corresponding request.</t>
      </section>
      <section anchor="binding-key">
        <name>Binding Key</name>
        <t>The Binding Key is a binary cryptographic value that is associated with the connection. Below we will refer to the binding key for requests as <tt>$req_key</tt> and the binding key for responses as <tt>$resp_key</tt>.</t>
        <t>With HTTPS over TLS the binding keys <bcp14>MUST</bcp14> be derived as described in <xref target="keying-from-tls-exporters"/>.</t>
      </section>
      <section anchor="header-spec">
        <name>Header Specification</name>
        <t>The <tt>Bound-Request</tt> and <tt>Bound-Response</tt> header fields are specified as an integer item (the Serial) followed by a parameter list of items.</t>
        <t>The ABNF is as follows:</t>
        <sourcecode type="abnf"><![CDATA[
bound_header      = bound_header_name ":" serial ";" OWS
                    "method=" method ";" OWS
                    "authority=" authority ";" OWS
                    ("response-code" = response_code ";" OWS)?
                    "binding=" binding_value
bound_header_name = "Bound-Request" | "Bound-Response"
serial            = sf-integer
method            = sf-string
authority         = sf-string
response_code     = sf-integer
binding_value     = sf-binary
]]></sourcecode>
        <t><em>(TODO: restructure the ABNF to allow the parameter orders to vary)</em></t>
        <t>The binding value for a request or response with a given key (<tt>$req_key</tt> or <tt>$resp_key</tt>) is constructed as:</t>
        <artwork><![CDATA[
   binding_value = HMAC-SHA256($key, $serial "|" $method "|" authority)
]]></artwork>
        <t>In the above:</t>
        <ul spacing="normal">
          <li>
            <t><tt>$key</tt> is the <tt>$req_key</tt> or <tt>$resp_key</tt></t>
          </li>
          <li>
            <t><tt>$serial</tt> is the request or response serial as a string</t>
          </li>
          <li>
            <t><tt>$method</tt> is the HTTP request method associated with the request</t>
          </li>
          <li>
            <t><tt>$authority</tt> is the authority ((as defined in <xref section="4.2.3" sectionFormat="comma" target="RFC9110"/>) from the normalized URI (as defined in <xref section="4.2.3" sectionFormat="comma" target="RFC9110"/>) for the request  and <bcp14>MUST</bcp14> match the value in the request's Host header field</t>
          </li>
          <li>
            <t><tt>$response_code</tt> is the response code for the response</t>
          </li>
          <li>
            <t>The binding value construct uses HMAC-SHA256 (<xref target="RFC2104"/>)</t>
          </li>
        </ul>
        <t><em>(TODO: consider whether/how to add crypto agility for other keyed MACs)</em></t>
        <t>For example, the header field added to the first request on a connection might be:</t>
        <artwork><![CDATA[
   Bound-Request: 1; method=POST; authority=www.example.com;
                  binding=:yYwktnfv9Ehgr+pvSTu67FuxxMuyCcb8K7tH9m/yrTE=:
]]></artwork>
      </section>
      <section anchor="for-discussion-additional-attributes-to-bind">
        <name>For Discussion: Additional Attributes to Bind?</name>
        <t><em>FOR DISCUSSION: Do we want to add in additional information to defend against additional sorts of attacks?  Would we want to change how we encode these?</em></t>
        <t>The reasons to include attributes into the Message Binding are:</t>
        <ul spacing="normal">
          <li>
            <t>Information from an Intermediary or Origin Server endpoint is intermixed in the bytestream with information that was sourced from a potentially malicious User Agent. HTTP/2 and HTTP/3 use distinct pseudoheaders to encode some of these separately, but other header fields such as Client-Cert (<xref target="RFC9440"/>) have no such protections.</t>
          </li>
          <li>
            <t>The encoding within HTTP/1.1 is underspecified in ways that lead to ambiguity, such as with variations in Path and Host header field parsing.</t>
          </li>
        </ul>
        <t>Some options might include:</t>
        <ul spacing="normal">
          <li>
            <t>Adding the <tt>:path</tt> as a parameter (or adding an attribute indicating that it should be considered included) and also binding it in.</t>
          </li>
          <li>
            <t>Having a way to more generally encode HTTP/2 pseudoheader field values in a way that is less ambiguous (converted to sf-binary?) and gets bound in.</t>
          </li>
          <li>
            <t>Including a list of header fields to bind in, and then use <xref target="RFC9421"/> HTTP Message Signatures or similar to protect them. This would be particularly useful for protecting header fields such as Client-Cert.</t>
          </li>
        </ul>
        <t>Adding more in does add more complexity and has more risks of compatibility issues. It may also be worth considering going the other direction and removing method and authority parameters.</t>
      </section>
      <section anchor="upstream-req-handling">
        <name>Intermediary Request Handling</name>
        <t>Intermediaries which have negotiated this protocol <bcp14>MUST</bcp14> add a <tt>Bound-Request</tt> header field with each request they make.  The <tt>$req_serial</tt> <bcp14>MUST</bcp14> start at 1 for the first request on a persistent connection, and <bcp14>MUST</bcp14> be incremented by 1 for each subsequent request.</t>
        <t>If the Intermediary is an Intermediary, regardless of whether or not this protocol was negotiated for the connection, it <bcp14>MUST</bcp14> remove any <tt>Bound-Request</tt> header fields that it received (prior to adding its own, if applicable).</t>
      </section>
      <section anchor="downstream-req-handling">
        <name>Downstream Server Request Handling</name>
        <t>Downstream Servers which have negotiated this protocol <bcp14>MUST</bcp14> validate the presence and contents of the <tt>Bound-Request</tt> header field prior to processing a request. Any failures <bcp14>MUST</bcp14> be detected early in request processing (such as during request parsing), and Downstream Servers <bcp14>MUST</bcp14> immediately terminate the connection without returning an error response.</t>
        <t>Validation checks <bcp14>MUST</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t>Confirmation that the <tt>Bound-Request</tt> header field is present</t>
          </li>
          <li>
            <t>Confirmation that the cryptographic binding hash matches what was expected</t>
          </li>
          <li>
            <t>Confirmation that the <tt>$req_serial</tt> matches what was expected, starting at 1 for the first request on the connection and incrementing by 1 for each subsequent request</t>
          </li>
          <li>
            <t>Confirmation that the authority and method match those in the request</t>
          </li>
        </ul>
        <t>If the Downstream Server is an Intermediary, it <bcp14>MUST</bcp14> remove the <tt>Bound-Request</tt> header field before constructing a request to the next-hop, regardless of whether this protocol is used for the next-hop.</t>
        <t>When constructing a response to the HTTP request the Downstream Server <bcp14>MUST</bcp14> add a <tt>Bound-Response</tt> header field with a <tt>$resp_serial</tt> matching the <tt>$req_serial</tt> of the incoming request.</t>
        <t>If the Downstream Server is an Intermediary, it <bcp14>MUST</bcp14> first remove any <tt>Bound-Response</tt> header fields that it received, regardless of whether this protocol is used on the previous-hop.</t>
      </section>
      <section anchor="upstream-resp-handling">
        <name>Intermediary Response Handling</name>
        <t>Intermediaries which have negotiated this protocol <bcp14>MUST</bcp14> validate the presence and contents of the <tt>Bound-Response</tt> header field prior to processing a response. Any failures <bcp14>MUST</bcp14> be detected early in response processing (such as during response parsing), and Intermediaries <bcp14>MUST</bcp14> immediately terminate the connection without processing any data from the response.</t>
        <t>Validation checks <bcp14>MUST</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t>Confirmation that the <tt>Bound-Response</tt> header field is present</t>
          </li>
          <li>
            <t>Confirmation that the cryptographic binding MAC matches what was expected</t>
          </li>
          <li>
            <t>Confirmation that the <tt>$resp_serial</tt> matches the <tt>$req_serial</tt> of the request that the response is in-response to.</t>
          </li>
          <li>
            <t>Confirmation that the authority and method match those from the corresponding request</t>
          </li>
          <li>
            <t>Confirmation that the <tt>$response_code</tt> matches that from the response (or interim response, as discussed in <xref target="handling-1xx"/>)</t>
          </li>
        </ul>
        <t>The Intermediary <bcp14>MUST</bcp14> remove the <tt>Bound-Response</tt> header field before constructing a response to the previous-hop, regardless of whether this protocol is used for the previous-hop.</t>
      </section>
      <section anchor="handling-1xx">
        <name>Handling 100 Continue and 103 Early Hints</name>
        <t>When using <tt>100 Continue</tt> and <tt>103 Early Hints</tt>, the <tt>$req_serial</tt> and <tt>$resp_serial</tt> <bcp14>MUST</bcp14> remain the same and match for all interim and final responses. Each interim response <bcp14>MUST</bcp14> contain a <tt>Bound-Response</tt> header field with a response-code parameter matching the response code of the interim response.</t>
        <t><em>(TODO can we safely extend this requirement to all 1xx status codes?)</em></t>
      </section>
      <section anchor="retry-handling">
        <name>Retrying Requests</name>
        <t>Requests which are retried <bcp14>MUST</bcp14> be treated no differently than other forms of request, with their <tt>$req_serial</tt> coming from the order of the request in a persistent connection. If a request is retried over a different connection a new <tt>Bound-Request</tt> header field <bcp14>MUST</bcp14> be reconstructed corresponding to the new connection.</t>
      </section>
      <section anchor="tls13-0rtt">
        <name>Handling TLS 1.3 Early Data</name>
        <t><em>TODO: define how this works with TLS 1.3 0RTT as it adds additional wrinkles. While this maybe could be made to work there (e.g., using the separate early exporter secret and a distinct space for request_serials) <xref target="RFC8446"/>, we need to ensure that we properly handle situations where an HTTP request spans 0-RTT and 1-RTT data.</em></t>
      </section>
    </section>
    <section anchor="use-with-https-over-tls">
      <name>Use with HTTPS over TLS</name>
      <section anchor="tls-negotiation">
        <name>Negotiation</name>
        <t>Since the <tt>Bound-Request</tt> header field is hop-by-hop header field it is not safe to send unless the Intermediary knows that recipient supports it, will process it, and then will remove it. Intermediaries and Downstream Servers <bcp14>MUST NOT</bcp14> send <tt>Bound-Request</tt> or <tt>Bound-Response</tt> header fields on connections where they have not negotiated this protocol.</t>
        <t>Negotiation needs to happen out-of-band (e.g., at the TLS layer) due to the nature of the attacks this is trying to mitigate.</t>
        <t>Options for negotiation include:</t>
        <ul spacing="normal">
          <li>
            <t>ALPS (stalled/expired) <xref target="I-D.vvv-tls-alps"/></t>
          </li>
          <li>
            <t>TLS Extension Flags (waiting on implementation) <xref target="I-D.ietf-tls-tlsflags"/></t>
          </li>
          <li>
            <t>An all-new TLS extension specific to this purpose, which could also make it easier to version this protocol.</t>
          </li>
        </ul>
        <t>Note that the first two options only support TLS 1.3 <xref target="RFC8446"/> between the Intermediary and Downstream Server.</t>
        <t>It would also be preferable for the mechanism here to negotiate the supported versions of this protocol, such as if cryptographic agility or additional functionality is needed.</t>
        <t>Application Protocols (ALPN values, per <xref target="RFC7301"/>) other than "http/1.1" are not supported, and a Downstream Server <bcp14>MUST NOT</bcp14> negotiate this Request-Binding protocol when negotiating an application protocol other than "http/1.1".</t>
      </section>
      <section anchor="keying-from-tls-exporters">
        <name>Key Derivation using TLS Exporters</name>
        <t>The <tt>$req_key</tt> and <tt>$resp_key</tt> are derived using TLS Exporters.</t>
        <ul spacing="normal">
          <li>
            <t>For TLS 1.3 this is specified in <xref section="7.5" sectionFormat="comma" target="RFC8446"/></t>
          </li>
          <li>
            <t>For TLS 1.2 this is specified in <xref target="RFC5705"/></t>
          </li>
        </ul>
        <t>Endpoints <bcp14>MAY</bcp14> support TLS 1.2 using <xref target="RFC5705"/>, but if they do they <bcp14>MUST</bcp14> only use this extension when the extended master secret (<xref target="RFC7627"/>) extension is also used. Endpoints <bcp14>MUST NOT</bcp14> use this protocol for versions of TLS prior to 1.2.</t>
        <t>The request and response keys are constructed for a connection with:</t>
        <artwork><![CDATA[
$req_key = TLS-Exporter("HTTP-Request-Binding", "request-"+$alpn, 32)
$resp_key = TLS-Exporter("HTTP-Request-Binding", "response-"+$alpn, 32)
]]></artwork>
        <t>The added context ensures that we get different keys derived for different negotiated ALPNs. When HTTP/1.1 was negotiated without an ALPN, <tt>$alpn</tt> <bcp14>SHALL</bcp14> be <tt>http/1.1</tt>.</t>
        <t>When this extension is negotiated, HTTP requests that indicate an HTTP-version other than HTTP/1.1 <bcp14>MUST</bcp14> be rejected, with the connection closed prior to sending an HTTP-layer response.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="handling-detection-of-desynchronized-connections">
        <name>Handling detection of desynchronized connections</name>
        <t>When an endpoint detects desynchronization (due to a missing or invalid Message Binding header field) it needs to consider itself to be in an unknown, inconsistent, and potentially adversary-controlled state. Any processing that happens past this point for this or other requests on the connection is dangerous and suspect, as nothing in the connection bytestream can be trusted at this point. Letting the request or response get past validation failures during parsing would leave the endpoint vulnerable and might execute smuggled instructions.</t>
        <t>Returning an HTTP error response would be bad as this response would be desynchronized and could be cached. While breaking the connection does not provide information to Intermediaries as to why things broke, it is imperative to terminate immediately.</t>
        <t><em>TODO: explore if there may be a way to use a TLS alert to signal that badness happened to the other endpoint.</em></t>
      </section>
      <section anchor="logging-failures">
        <name>Logging failures</name>
        <t>Endpoints <bcp14>SHOULD</bcp14> log information indicating why the request or connection failed. Even more care than usual needs to be taken handling information received as there is no way to distinguish information as having come from a potentially trusted Intermediary vs having come from a malicious adversary.</t>
        <t>Downstream Servers logging information from detected smuggled requests need to take care as all information is suspect. It is critical that validation (and fail-out) happens very early in handling the request, such as during the request/response parsing itself. Even logging things from the smuggled request must be handled very carefully.</t>
      </section>
      <section anchor="use-of-keys-negotiated-out-of-band">
        <name>Use of keys negotiated out-of-band</name>
        <t>With the use of TLS Exporters each connection gets a unique pair of <tt>$req_key</tt> and <tt>$resp_key</tt>. If an alternate mechanism is used by proprietary implementations to exchange these keys then they <bcp14>MUST</bcp14> be unique per connection. Otherwise an attacker who can get a request header reflected back from one connection might be able to replay it in another connection.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy considerations</name>
      <t>Due to this protocol primarily being used between Intermediaries and Downstream Servers, information sent by the Intermediary during the TLS handshake for negotiation does not cause privacy issues for end-users. If this protocol were to be extended into end-user User Agents as well, more evaluation of privacy considerations would be warranted.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><em>TODO: Add IANA considerations for the HTTP Headers, for TLS Exporter labels, and for the TLS extension details used for negotiation.</em></t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2104">
          <front>
            <title>HMAC: Keyed-Hashing for Message Authentication</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="M. Bellare" initials="M." surname="Bellare"/>
            <author fullname="R. Canetti" initials="R." surname="Canetti"/>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key. The cryptographic strength of HMAC depends on the properties of the underlying hash function. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2104"/>
          <seriesInfo name="DOI" value="10.17487/RFC2104"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC7627">
          <front>
            <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension</title>
            <author fullname="K. Bhargavan" initials="K." role="editor" surname="Bhargavan"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="A. Pironti" initials="A." surname="Pironti"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Ray" initials="M." surname="Ray"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Transport Layer Security (TLS) master secret is not cryptographically bound to important session parameters such as the server certificate. Consequently, it is possible for an active attacker to set up two sessions, one with a client and another with a server, such that the master secrets on the two sessions are the same. Thereafter, any mechanism that relies on the master secret for authentication, including session resumption, becomes vulnerable to a man-in-the-middle attack, where the attacker can simply forward messages back and forth between the client and server. This specification defines a TLS extension that contextually binds the master secret to a log of the full handshake that computes it, thus preventing such attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7627"/>
          <seriesInfo name="DOI" value="10.17487/RFC7627"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="RFC9261">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC9440">
          <front>
            <title>Client-Cert HTTP Header Field</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document describes HTTP extension header fields that allow a TLS terminating reverse proxy (TTRP) to convey the client certificate information of a mutually authenticated TLS connection to the origin server in a common and predictable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9440"/>
          <seriesInfo name="DOI" value="10.17487/RFC9440"/>
        </reference>
        <reference anchor="I-D.vvv-tls-alps">
          <front>
            <title>TLS Application-Layer Protocol Settings Extension</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="21" month="September" year="2020"/>
            <abstract>
              <t>   This document describes a Transport Layer Security (TLS) extension
   for negotiating application-layer protocol settings (ALPS) within the
   TLS handshake.  Any application-layer protocol operating over TLS can
   use this mechanism to indicate its settings to the peer in parallel
   with the TLS handshake completion.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vvv-tls-alps-01"/>
        </reference>
        <reference anchor="I-D.ietf-tls-tlsflags">
          <front>
            <title>A Flags Extension for TLS 1.3</title>
            <author fullname="Yoav Nir" initials="Y." surname="Nir">
              <organization>Dell Technologies</organization>
            </author>
            <date day="14" month="September" year="2025"/>
            <abstract>
              <t>   A number of extensions are proposed in the TLS working group that
   carry no interesting information except the 1-bit indication that a
   certain optional feature is supported.  Such extensions take 4 octets
   each.  This document defines a flags extension that can provide such
   indications at an average marginal cost of 1 bit each.  More
   precisely, it provides as many flag extensions as needed at 4 + the
   order of the last set bit divided by 8.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-tlsflags-16"/>
        </reference>
        <reference anchor="PROXY" target="https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt">
          <front>
            <title>The PROXY protocol</title>
            <author>
              <organization>HAProxy Technologies</organization>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="HTTPSYNC" target="https://arxiv.org/abs/2510.09952">
          <front>
            <title>HTTP Request Synchronization Defeats Discrepancy Attacks</title>
            <author initials="C." surname="Topcuoglu" fullname="Cem Topcuoglu">
              <organization/>
            </author>
            <author initials="K." surname="Onarlioglu" fullname="Kaan Onarlioglu">
              <organization/>
            </author>
            <author initials="S." surname="Sprecher" fullname="Steven Sprecher">
              <organization/>
            </author>
            <author initials="E." surname="Kirda" fullname="Engin Kirda">
              <organization/>
            </author>
            <author>
              <organization>Northeastern University</organization>
            </author>
            <date year="2025" month="October"/>
          </front>
          <seriesInfo name="arXiv" value="2510.09952"/>
        </reference>
      </references>
    </references>
    <?line 347?>

<section anchor="appendix-alternate-approaches-and-similar-protocols">
      <name>Appendix: Alternate Approaches and Similar Protocols</name>
      <t>TLS Exporters are used in other protocols such as <xref target="RFC9261"/> (Exported Authenticators in TLS). While it is meant as a building block, it requires round-trips for some scenarios which would make it not suitable here.</t>
    </section>
    <section anchor="appendix-bikeshed-topics">
      <name>Appendix: Bikeshed Topics</name>
      <t>Some details to work through include:</t>
      <ul spacing="normal">
        <li>
          <t>Should the starting serial be 1 or 0?</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Kaan Onarlioglu, Rich Salz, Benjamin Kaduk, Uttaran Dutta, and others who have contributed to this proposal.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61c63LbRpb+z6fooVIVKSFpSbbjWBnHI0t2WRXb8lryZlK7
WzFINMkegQAHDYjiaDTPss+yT7bn1o1uEJRj16R2xxSAvp0+5zvX7uFw2NvZ
2elVpsr0keq/vrx8/+BgdKA+6L/X2lbqYlHPZpnJZ+pUT3Vutaot/nVSrpdV
MSuT5dxM1FttbTLT6oXJU3jb7yXjcamvww43PpkklZ4V5fpI2Srt9dJikicL
mENaJtNqmK9npc6H86pajo2lfw8OhiXPajjmTob7+z1bjxfGWlPk1XoJzc9e
Xr7qrWZHSpr2JgXMOre1PVJVWesezOphLyl1cqR+PbvsXen1qijTo54aqtcf
LvCfjbXjw9b8e72kruZFie16Cv6b1lnGC3hZmiv1juZPb4pyluTmH0kFczxS
x1fJIjHqUk/meZEVM6MtfaXhaXakNDT+3uhq+hemwAhabw7x1lzhTOy8WH75
EIsxNfyLvsZ1Tot6NNa9Xl6UC2h/rWFF6sOrk8OD/Uf+58FT+fn4yf5j+fnk
4f6B+/nD4RP5+ePBE9fsx0ePfnA/nz5y3z49ONhvfh4e9Xomn7bGhhcPm5+u
v6eHP/hOHh02Px9Rf2fD09H19fWwyuwwyZbWPUNa0kP4/2mWzOjF+w/nf/3t
iIhSJeVMV8wu9ujBg9VqNZony7K4WSPtH6TFKs+KJAUm/hH+mDygV0P436qY
FNmouqm4H5agy7nm3pX7gt56ZlGb2/X6+D12ublfKUjIkTrcP3gCf6IgXfz2
7qR71kl5Y65pvsnYPjh8fLA/2n/69PFhODWSxYa51/lkXhZuGiTeSWXVqbGT
Ui+TfLJWx1WVTK5sv2MJQ8WceKIX6rJYTupiltWtd78kSa7O86TMTMfbiwoY
MFcXyxLWrcvW25f5zOTqF1OmiX8Tk+1dUVZzndhKl7n6mAP3lNZU64hyh4+H
B/v0xIJgaYus5laQlH81iFANsfq90WjU6w2HQwVUrMpkUvV62wBMJWlqVa5X
CmRpOF4P4R8F80l1qaZGZ/CymicVDKPVJATLJMvWalzUeaqqQgmiWZXA36W2
S0QrOyI+AmiyALc6pU5yQMvKwMJSVdTVsJgOx9hmWhYLGEkTg+DCgSIAbgu1
a+vJXCVWXZtEXb65UC9vlkAyoNIedQ9QHk8XJlaslM7TZWFymBHMLtWVnlQ0
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
C5tko97/A312ugb/XQAA

-->

</rfc>
