<?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.6.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-t2trg-amplification-attacks-01" category="info" consensus="true" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="CoAP Amplification Attacks">Amplification Attacks Using the Constrained Application Protocol (CoAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-amplification-attacks-01"/>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization>Energy Harvesting Solutions</organization>
      <address>
        <email>c.amsuess@energyharvesting.at</email>
      </address>
    </author>
    <date year="2023" month="January" day="17"/>
    <area>IRTF</area>
    <workgroup>Thing-to-Thing</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <t>Protecting Internet of Things (IoT) devices against attacks is not enough.
IoT deployments need to make sure that they are not used for
Distributed Denial-of-Service (DDoS) attacks. DDoS attacks are
typically done with compromised devices or with amplification attacks
using a spoofed source address. This document gives examples of different
theoretical amplification attacks using the Constrained Application Protocol
(CoAP). The goal with this document is to raise awareness and
to motivate generic and protocol-specific recommendations on the usage of
CoAP. Some of the discussed attacks can be mitigated by not using
NoSec or by using the Echo option.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://t2trg.github.io/t2trg-amplification-attacks/draft-irtf-t2trg-amplification-attacks.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-irtf-t2trg-amplification-attacks/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Thing-to-Thing Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/search/?email_list=t2trg"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/t2trg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/t2trg/t2trg-amplification-attacks"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>One important protocol used to interact with Internet of Things (IoT)
sensors and actuators is the Constrained Application Protocol (CoAP) <xref target="RFC7252"/>.
CoAP can be used without security in the so called NoSec mode but any
Internet-of-Things (IoT) deployment valuing security and privacy would use a
security protocol such as DTLS <xref target="RFC9147"/>, TLS <xref target="RFC8446"/>, or OSCORE <xref target="RFC8613"/>
to protect CoAP, where the choice of security protocol depends on the transport
protocol and the presence of intermediaries. The use of CoAP over UDP and DTLS is
specified in <xref target="RFC7252"/> and the use of CoAP over TCP and TLS is specified in <xref target="RFC8323"/>.
OSCORE protects CoAP end-to-end with the use of COSE <xref target="RFC8152"/> and the CoAP
Object-Security option <xref target="RFC8613"/> and can therefore be used over any
transport. Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> can be used to
protect CoAP Group Communication <xref target="I-D.ietf-core-groupcomm-bis"/>.</t>
      <t>Protecting Internet of Things (IoT) devices against attacks is not enough.
IoT deployments need to make sure that they are not used for
Distributed Denial-of-Service (DDoS) attacks. DDoS attacks are
typically done with compromised devices or with amplification attacks
using a spoofed source address. DDoS attacks is a huge and
growing problem for services and critical infrastructure <xref target="DDoS-Infra"/>
and mitigations are costly.</t>
      <t>The document gives examples of different theoretical amplification attacks using CoAP.
When transported over UDP, the CoAP NoSec mode is susceptible to source
IP address spoofing and as a single request can result in multiple responses
from multiple servers, CoAP can have very large amplification factors.
The goal with this document is to raise awareness and understanding of amplification
attacks and to motivate mitigations suitable for constrained devices and networks.</t>
      <t>Some of the discussed attacks can be mitigated by not using
NoSec or by using the Echo option <xref target="RFC9175"/>.</t>
    </section>
    <section anchor="dos">
      <name>Amplification Attacks using CoAP</name>
      <t>In a Denial-of-Service (DoS) attack, an attacker sends a large number of requests
or responses to a target endpoint. The denial-of-service might be caused by
the target endpoint receiving a large amount of data, sending a large amount
of data, doing heavy processing, or using too much memory, etc. In a Distributed
Denial-of-Service (DDoS) attack, the request or responses come from a large
number of sources.</t>
      <t>In an amplification attack, the amplification factor is the ratio between the
total size of the data sent to the target and the total size of the data
received from the attacker. Note that in the presence of intermediaries, the
size of the data received by the target might be different than the size of
the data sent to the target and the size of the data received from the
attacker might be different than the size of the data sent from the attacker.</t>
      <t>In the attacks described in this section, the
attacker sends one or more requests, and the target receives one or more
responses. An amplification attack alone can be a denial-of-service attack
on a CoAP server by making it send a large amount of data. But often amplification
attacks are combined with the attacker spoofing the
source IP address of the targeted victim. By requesting as much information
as possible from several servers an attacker can multiply the amount of
traffic and create a distributed denial-of-service attack on the target.
When transported over UDP, the CoAP NoSec
mode is susceptible to source IP address spoofing.</t>
      <t>The amplification factor and the bandwidth depend on the layer in the protocol stack that
is used for the calculation. The amplification factor and bandwidth can e.g., be calculated
using whole IP packets, UPD payloads, or CoAP payloads. The bandwidth decreases and the
amplification factor typically increases higher up in the protocol stack. The bandwidth
should be calculated using the layer that is considered to be under attack.</t>
      <t>The following sections give examples of different theoretical amplification attacks using CoAP.</t>
      <section anchor="simple-amplification-attacks">
        <name>Simple Amplification Attacks</name>
        <t>An amplification attack using a single response is illustrated in <xref target="ampsingle"/>.
If the response is c times larger than the request, the amplification factor is c.</t>
        <figure anchor="ampsingle">
          <name>Amplification attack using a single response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="560" viewBox="0 0 560 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,224" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,104" fill="none" stroke="black"/>
                <path d="M 88,120 L 88,224" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,224" fill="none" stroke="black"/>
                <path d="M 88,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 40,112 L 144,112" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="144,64 132,58.4 132,69.6" fill="black" transform="rotate(0,136,64)"/>
                <polygon class="arrowhead" points="48,112 36,106.4 36,117.6" fill="black" transform="rotate(180,40,112)"/>
                <g class="text">
                  <text x="28" y="36">Victim</text>
                  <text x="88" y="36">Foe</text>
                  <text x="148" y="36">Server</text>
                  <text x="216" y="68">Code:</text>
                  <text x="260" y="68">0.01</text>
                  <text x="304" y="68">(GET)</text>
                  <text x="112" y="84">GET</text>
                  <text x="200" y="84">Uri-Path:</text>
                  <text x="268" y="84">random</text>
                  <text x="320" y="84">quote</text>
                  <text x="216" y="116">Code:</text>
                  <text x="260" y="116">2.05</text>
                  <text x="320" y="116">(Content)</text>
                  <text x="116" y="132">2.05</text>
                  <text x="204" y="132">Payload:</text>
                  <text x="264" y="132">"just</text>
                  <text x="320" y="132">because</text>
                  <text x="368" y="132">you</text>
                  <text x="400" y="132">own</text>
                  <text x="436" y="132">half</text>
                  <text x="472" y="132">the</text>
                  <text x="516" y="132">county</text>
                  <text x="280" y="148">doesn't</text>
                  <text x="332" y="148">mean</text>
                  <text x="372" y="148">that</text>
                  <text x="408" y="148">you</text>
                  <text x="444" y="148">have</text>
                  <text x="480" y="148">the</text>
                  <text x="520" y="148">power</text>
                  <text x="260" y="164">to</text>
                  <text x="288" y="164">run</text>
                  <text x="320" y="164">the</text>
                  <text x="356" y="164">rest</text>
                  <text x="388" y="164">of</text>
                  <text x="416" y="164">us.</text>
                  <text x="448" y="164">For</text>
                  <text x="496" y="164">twenty-</text>
                  <text x="272" y="180">three</text>
                  <text x="324" y="180">years,</text>
                  <text x="372" y="180">I've</text>
                  <text x="412" y="180">been</text>
                  <text x="456" y="180">dying</text>
                  <text x="492" y="180">to</text>
                  <text x="524" y="180">tell</text>
                  <text x="264" y="196">you</text>
                  <text x="300" y="196">what</text>
                  <text x="328" y="196">I</text>
                  <text x="368" y="196">thought</text>
                  <text x="412" y="196">of</text>
                  <text x="444" y="196">you!</text>
                  <text x="480" y="196">And</text>
                  <text x="524" y="196">now...</text>
                  <text x="272" y="212">well,</text>
                  <text x="320" y="212">being</text>
                  <text x="352" y="212">a</text>
                  <text x="400" y="212">Christian</text>
                  <text x="468" y="212">woman,</text>
                  <text x="504" y="212">I</text>
                  <text x="536" y="212">can't</text>
                  <text x="264" y="228">say</text>
                  <text x="300" y="228">it!"</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Victim   Foe   Server
   |      |      |
   |      +----->|      Code: 0.01 (GET)
   |      | GET  |  Uri-Path: random quote
   |      |      |
   |<------------+      Code: 2.05 (Content)
   |      | 2.05 |   Payload: "just because you own half the county
   |      |      |             doesn't mean that you have the power
   |      |      |             to run the rest of us. For twenty-
   |      |      |             three years, I've been dying to tell
   |      |      |             you what I thought of you! And now...
   |      |      |             well, being a Christian woman, I can't
   |      |      |             say it!"
]]></artwork>
          </artset>
        </figure>
        <t>An attacker can increase the bandwidth by sending several GET requests. An attacker can
also increase or control the amplification factor by creating or updating resources.
By creating new resources, an attacker can increase the size of /.well-known/core.
An amplification attack where the attacker influences the amplification factor
is illustrated in <xref target="ampmulti_post"/>.</t>
        <figure anchor="ampmulti_post">
          <name>Amplification attack using several requests and a chosen amplification factor</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="392" viewBox="0 0 392 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,112" fill="none" stroke="black"/>
                <path d="M 32,144 L 32,320" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,112" fill="none" stroke="black"/>
                <path d="M 88,144 L 88,200" fill="none" stroke="black"/>
                <path d="M 88,216 L 88,296" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,112" fill="none" stroke="black"/>
                <path d="M 144,144 L 144,320" fill="none" stroke="black"/>
                <path d="M 88,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 88,160 L 136,160" fill="none" stroke="black"/>
                <path d="M 40,208 L 144,208" fill="none" stroke="black"/>
                <path d="M 88,256 L 136,256" fill="none" stroke="black"/>
                <path d="M 40,304 L 144,304" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="144,256 132,250.4 132,261.6" fill="black" transform="rotate(0,136,256)"/>
                <polygon class="arrowhead" points="144,160 132,154.4 132,165.6" fill="black" transform="rotate(0,136,160)"/>
                <polygon class="arrowhead" points="144,64 132,58.4 132,69.6" fill="black" transform="rotate(0,136,64)"/>
                <polygon class="arrowhead" points="48,304 36,298.4 36,309.6" fill="black" transform="rotate(180,40,304)"/>
                <polygon class="arrowhead" points="48,208 36,202.4 36,213.6" fill="black" transform="rotate(180,40,208)"/>
                <g class="text">
                  <text x="28" y="36">Victim</text>
                  <text x="88" y="36">Foe</text>
                  <text x="148" y="36">Server</text>
                  <text x="216" y="68">Code:</text>
                  <text x="260" y="68">0.02</text>
                  <text x="308" y="68">(POST)</text>
                  <text x="116" y="84">POST</text>
                  <text x="200" y="84">Uri-Path:</text>
                  <text x="268" y="84">member</text>
                  <text x="204" y="100">Payload:</text>
                  <text x="316" y="100">hampsterdance.hevc</text>
                  <text x="60" y="132">....</text>
                  <text x="116" y="132">....</text>
                  <text x="216" y="164">Code:</text>
                  <text x="260" y="164">0.02</text>
                  <text x="304" y="164">(GET)</text>
                  <text x="112" y="180">GET</text>
                  <text x="200" y="180">Uri-Path:</text>
                  <text x="268" y="180">member</text>
                  <text x="216" y="212">Code:</text>
                  <text x="260" y="212">2.05</text>
                  <text x="320" y="212">(Content)</text>
                  <text x="116" y="228">2.05</text>
                  <text x="204" y="228">Payload:</text>
                  <text x="316" y="228">hampsterdance.hevc</text>
                  <text x="216" y="260">Code:</text>
                  <text x="260" y="260">0.02</text>
                  <text x="304" y="260">(GET)</text>
                  <text x="112" y="276">GET</text>
                  <text x="200" y="276">Uri-Path:</text>
                  <text x="268" y="276">member</text>
                  <text x="216" y="308">Code:</text>
                  <text x="260" y="308">2.05</text>
                  <text x="320" y="308">(Content)</text>
                  <text x="88" y="324">|</text>
                  <text x="116" y="324">2.05</text>
                  <text x="204" y="324">Payload:</text>
                  <text x="316" y="324">hampsterdance.hevc</text>
                  <text x="60" y="340">....</text>
                  <text x="116" y="340">....</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Victim   Foe   Server
   |      |      |
   |      +----->|      Code: 0.02 (POST)
   |      | POST |  Uri-Path: member
   |      |      |   Payload: hampsterdance.hevc
   |      |      |
     ....   ....
   |      |      |
   |      +----->|      Code: 0.02 (GET)
   |      | GET  |  Uri-Path: member
   |      |      |
   |<------------+      Code: 2.05 (Content)
   |      | 2.05 |   Payload: hampsterdance.hevc
   |      |      |
   |      +----->|      Code: 0.02 (GET)
   |      | GET  |  Uri-Path: member
   |      |      |
   |<------------+      Code: 2.05 (Content)
   |      | 2.05 |   Payload: hampsterdance.hevc
     ....   ....
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="amplification-attacks-using-observe">
        <name>Amplification Attacks using Observe</name>
        <t>Amplification factors can be significantly worse when combined with
observe <xref target="RFC7641"/> and group requests <xref target="I-D.ietf-core-groupcomm-bis"/>. As a single
request can result in multiple responses from multiple servers, the amplification
factors can be very large.</t>
        <t>An amplification attack using observe is illustrated in
<xref target="ampmulti_nk"/>. If each notification response is c times larger than the registration
request and each request results in n notifications, the amplification factor is c <contact fullname="⋅"/> n.
By registering the same client several times using different Tokens or port numbers,
the bandwidth can be increased. By updating the observed resource, the attacker
may trigger notifications and increase the size of the notifications. By using
conditional attributes <xref target="I-D.ietf-core-conditional-attributes"/> an attacker may increase the frequency of
notifications and therefore the amplification factor. The maximum period attribute pmax
indicates the maximum time, in seconds, between two consecutive notifications (whether or not the
resource state has changed). If it is predictable when notifications
are sent as confirmable and which Message ID are used the acknowledgements may be spoofed.</t>
        <figure anchor="ampmulti_nk">
          <name>Amplification attack using observe, registering the same client several times, and requesting notifications at least 10 times every second</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="640" width="368" viewBox="0 0 368 640" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,240" fill="none" stroke="black"/>
                <path d="M 32,272 L 32,432" fill="none" stroke="black"/>
                <path d="M 32,464 L 32,608" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,240" fill="none" stroke="black"/>
                <path d="M 88,296 L 88,360" fill="none" stroke="black"/>
                <path d="M 88,376 L 88,432" fill="none" stroke="black"/>
                <path d="M 88,488 L 88,552" fill="none" stroke="black"/>
                <path d="M 88,568 L 88,608" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,240" fill="none" stroke="black"/>
                <path d="M 144,272 L 144,432" fill="none" stroke="black"/>
                <path d="M 144,464 L 144,608" fill="none" stroke="black"/>
                <path d="M 88,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 88,160 L 136,160" fill="none" stroke="black"/>
                <path d="M 40,288 L 144,288" fill="none" stroke="black"/>
                <path d="M 40,368 L 144,368" fill="none" stroke="black"/>
                <path d="M 40,480 L 144,480" fill="none" stroke="black"/>
                <path d="M 40,560 L 144,560" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="144,160 132,154.4 132,165.6" fill="black" transform="rotate(0,136,160)"/>
                <polygon class="arrowhead" points="144,64 132,58.4 132,69.6" fill="black" transform="rotate(0,136,64)"/>
                <polygon class="arrowhead" points="48,560 36,554.4 36,565.6" fill="black" transform="rotate(180,40,560)"/>
                <polygon class="arrowhead" points="48,480 36,474.4 36,485.6" fill="black" transform="rotate(180,40,480)"/>
                <polygon class="arrowhead" points="48,368 36,362.4 36,373.6" fill="black" transform="rotate(180,40,368)"/>
                <polygon class="arrowhead" points="48,288 36,282.4 36,293.6" fill="black" transform="rotate(180,40,288)"/>
                <g class="text">
                  <text x="28" y="36">Victim</text>
                  <text x="88" y="36">Foe</text>
                  <text x="148" y="36">Server</text>
                  <text x="224" y="68">Code:</text>
                  <text x="268" y="68">0.01</text>
                  <text x="312" y="68">(GET)</text>
                  <text x="112" y="84">GET</text>
                  <text x="220" y="84">Token:</text>
                  <text x="268" y="84">0x83</text>
                  <text x="212" y="100">Observe:</text>
                  <text x="256" y="100">0</text>
                  <text x="208" y="116">Uri-Path:</text>
                  <text x="296" y="116">temperature</text>
                  <text x="204" y="132">Uri-Query:</text>
                  <text x="292" y="132">pmax="0.1"</text>
                  <text x="224" y="164">Code:</text>
                  <text x="268" y="164">0.01</text>
                  <text x="312" y="164">(GET)</text>
                  <text x="112" y="180">GET</text>
                  <text x="220" y="180">Token:</text>
                  <text x="268" y="180">0x84</text>
                  <text x="212" y="196">Observe:</text>
                  <text x="256" y="196">0</text>
                  <text x="208" y="212">Uri-Path:</text>
                  <text x="296" y="212">temperature</text>
                  <text x="204" y="228">Uri-Query:</text>
                  <text x="292" y="228">pmax="0.1"</text>
                  <text x="60" y="260">....</text>
                  <text x="116" y="260">....</text>
                  <text x="88" y="276">|</text>
                  <text x="224" y="292">Code:</text>
                  <text x="268" y="292">2.05</text>
                  <text x="328" y="292">(Content)</text>
                  <text x="116" y="308">2.05</text>
                  <text x="220" y="308">Token:</text>
                  <text x="268" y="308">0x83</text>
                  <text x="212" y="324">Observe:</text>
                  <text x="276" y="324">217362</text>
                  <text x="212" y="340">Payload:</text>
                  <text x="276" y="340">"299.7</text>
                  <text x="316" y="340">K"</text>
                  <text x="224" y="372">Code:</text>
                  <text x="268" y="372">2.05</text>
                  <text x="328" y="372">(Content)</text>
                  <text x="116" y="388">2.05</text>
                  <text x="220" y="388">Token:</text>
                  <text x="268" y="388">0x84</text>
                  <text x="212" y="404">Observe:</text>
                  <text x="276" y="404">217362</text>
                  <text x="212" y="420">Payload:</text>
                  <text x="276" y="420">"299.7</text>
                  <text x="316" y="420">K"</text>
                  <text x="60" y="452">....</text>
                  <text x="116" y="452">....</text>
                  <text x="88" y="468">|</text>
                  <text x="224" y="484">Code:</text>
                  <text x="268" y="484">2.05</text>
                  <text x="328" y="484">(Content)</text>
                  <text x="116" y="500">2.05</text>
                  <text x="220" y="500">Token:</text>
                  <text x="268" y="500">0x83</text>
                  <text x="212" y="516">Observe:</text>
                  <text x="276" y="516">217363</text>
                  <text x="212" y="532">Payload:</text>
                  <text x="276" y="532">"299.7</text>
                  <text x="316" y="532">K"</text>
                  <text x="224" y="564">Code:</text>
                  <text x="268" y="564">2.05</text>
                  <text x="328" y="564">(Content)</text>
                  <text x="116" y="580">2.05</text>
                  <text x="220" y="580">Token:</text>
                  <text x="268" y="580">0x84</text>
                  <text x="212" y="596">Observe:</text>
                  <text x="276" y="596">217363</text>
                  <text x="212" y="612">Payload:</text>
                  <text x="276" y="612">"299.7</text>
                  <text x="316" y="612">K"</text>
                  <text x="60" y="628">....</text>
                  <text x="116" y="628">....</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Victim   Foe   Server
   |      |      |
   |      +----->|       Code: 0.01 (GET)
   |      | GET  |      Token: 0x83
   |      |      |    Observe: 0
   |      |      |   Uri-Path: temperature
   |      |      |  Uri-Query: pmax="0.1"
   |      |      |
   |      +----->|       Code: 0.01 (GET)
   |      | GET  |      Token: 0x84
   |      |      |    Observe: 0
   |      |      |   Uri-Path: temperature
   |      |      |  Uri-Query: pmax="0.1"
   |      |      |
     ....   ....
   |      |      |
   |<------------+       Code: 2.05 (Content)
   |      | 2.05 |      Token: 0x83
   |      |      |    Observe: 217362
   |      |      |    Payload: "299.7 K"
   |      |      |
   |<------------+       Code: 2.05 (Content)
   |      | 2.05 |      Token: 0x84
   |      |      |    Observe: 217362
   |      |      |    Payload: "299.7 K"
   |      |      |
     ....   ....
   |      |      |
   |<------------+       Code: 2.05 (Content)
   |      | 2.05 |      Token: 0x83
   |      |      |    Observe: 217363
   |      |      |    Payload: "299.7 K"
   |      |      |
   |<------------+       Code: 2.05 (Content)
   |      | 2.05 |      Token: 0x84
   |      |      |    Observe: 217363
   |      |      |    Payload: "299.7 K"
     ....   ....
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="amplification-attacks-using-group-requests">
        <name>Amplification Attacks using Group Requests</name>
        <t>An amplification attack using a group request is illustrated in
<xref target="ampmulti_m"/>. The group request is sent over multicast or broadcast
and in this case a single request results in m responses
from m different servers. If each response is c times larger than the request,
the amplification factor is c <contact fullname="⋅"/> m. Note that the servers usually do not know
the variable m.</t>
        <figure anchor="ampmulti_m">
          <name>Amplification attack using multicast</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="384" viewBox="0 0 384 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,240" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,120" fill="none" stroke="black"/>
                <path d="M 88,136 L 88,184" fill="none" stroke="black"/>
                <path d="M 88,200 L 88,240" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,72" fill="none" stroke="black"/>
                <path d="M 144,88 L 144,184" fill="none" stroke="black"/>
                <path d="M 144,200 L 144,240" fill="none" stroke="black"/>
                <path d="M 168,48 L 168,240" fill="none" stroke="black"/>
                <path d="M 88,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 120,80 L 160,80" fill="none" stroke="black"/>
                <path d="M 40,128 L 144,128" fill="none" stroke="black"/>
                <path d="M 40,192 L 168,192" fill="none" stroke="black"/>
                <path d="M 120,80 C 111.16936,80 104,72.83064 104,64" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="168,80 156,74.4 156,85.6" fill="black" transform="rotate(0,160,80)"/>
                <polygon class="arrowhead" points="144,64 132,58.4 132,69.6" fill="black" transform="rotate(0,136,64)"/>
                <polygon class="arrowhead" points="48,192 36,186.4 36,197.6" fill="black" transform="rotate(180,40,192)"/>
                <polygon class="arrowhead" points="48,128 36,122.4 36,133.6" fill="black" transform="rotate(180,40,128)"/>
                <g class="text">
                  <text x="28" y="36">Victim</text>
                  <text x="88" y="36">Foe</text>
                  <text x="152" y="36">Servers</text>
                  <text x="240" y="68">Code:</text>
                  <text x="284" y="68">0.01</text>
                  <text x="328" y="68">(GET)</text>
                  <text x="236" y="84">Token:</text>
                  <text x="284" y="84">0x69</text>
                  <text x="112" y="100">GET</text>
                  <text x="224" y="100">Uri-Path:</text>
                  <text x="284" y="100">&lt;/c&gt;</text>
                  <text x="240" y="132">Code:</text>
                  <text x="284" y="132">2.05</text>
                  <text x="344" y="132">(Content)</text>
                  <text x="116" y="148">2.05</text>
                  <text x="236" y="148">Token:</text>
                  <text x="284" y="148">0x69</text>
                  <text x="228" y="164">Payload:</text>
                  <text x="272" y="164">{</text>
                  <text x="300" y="164">1721</text>
                  <text x="328" y="164">:</text>
                  <text x="344" y="164">{</text>
                  <text x="368" y="164">...</text>
                  <text x="240" y="196">Code:</text>
                  <text x="284" y="196">2.05</text>
                  <text x="344" y="196">(Content)</text>
                  <text x="116" y="212">2.05</text>
                  <text x="236" y="212">Token:</text>
                  <text x="284" y="212">0x69</text>
                  <text x="228" y="228">Payload:</text>
                  <text x="272" y="228">{</text>
                  <text x="300" y="228">1721</text>
                  <text x="328" y="228">:</text>
                  <text x="344" y="228">{</text>
                  <text x="368" y="228">...</text>
                  <text x="60" y="260">....</text>
                  <text x="116" y="260">....</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Victim   Foe   Servers
   |      |      |  |
   |      +-+--->|  |      Code: 0.01 (GET)
   |      |  '----->|     Token: 0x69
   |      | GET  |  |  Uri-Path: </c>
   |      |      |  |
   |<------------+  |      Code: 2.05 (Content)
   |      | 2.05 |  |     Token: 0x69
   |      |      |  |   Payload: { 1721 : { ...
   |      |      |  |
   |<---------------+      Code: 2.05 (Content)
   |      | 2.05 |  |     Token: 0x69
   |      |      |  |   Payload: { 1721 : { ...
   |      |      |  |
     ....   ....
]]></artwork>
          </artset>
        </figure>
        <t>An amplification attack using a multicast request and observe is
illustrated in <xref target="ampmulti_mn"/>. In this case a single request results
in n responses each from m different servers giving a total of n <contact fullname="⋅"/> m
responses. If each response is c times larger than the request,
the amplification factor is c <contact fullname="⋅"/> n <contact fullname="⋅"/> m.</t>
        <figure anchor="ampmulti_mn">
          <name>Amplification attack using multicast and observe</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="392" viewBox="0 0 392 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,288" fill="none" stroke="black"/>
                <path d="M 32,320 L 32,480" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,136" fill="none" stroke="black"/>
                <path d="M 88,152 L 88,216" fill="none" stroke="black"/>
                <path d="M 88,232 L 88,288" fill="none" stroke="black"/>
                <path d="M 88,344 L 88,408" fill="none" stroke="black"/>
                <path d="M 88,424 L 88,480" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,72" fill="none" stroke="black"/>
                <path d="M 144,88 L 144,216" fill="none" stroke="black"/>
                <path d="M 144,232 L 144,288" fill="none" stroke="black"/>
                <path d="M 144,320 L 144,408" fill="none" stroke="black"/>
                <path d="M 144,424 L 144,480" fill="none" stroke="black"/>
                <path d="M 168,48 L 168,288" fill="none" stroke="black"/>
                <path d="M 168,320 L 168,480" fill="none" stroke="black"/>
                <path d="M 88,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 120,80 L 160,80" fill="none" stroke="black"/>
                <path d="M 40,144 L 144,144" fill="none" stroke="black"/>
                <path d="M 40,224 L 168,224" fill="none" stroke="black"/>
                <path d="M 40,336 L 144,336" fill="none" stroke="black"/>
                <path d="M 40,416 L 168,416" fill="none" stroke="black"/>
                <path d="M 120,80 C 111.16936,80 104,72.83064 104,64" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="168,80 156,74.4 156,85.6" fill="black" transform="rotate(0,160,80)"/>
                <polygon class="arrowhead" points="144,64 132,58.4 132,69.6" fill="black" transform="rotate(0,136,64)"/>
                <polygon class="arrowhead" points="48,416 36,410.4 36,421.6" fill="black" transform="rotate(180,40,416)"/>
                <polygon class="arrowhead" points="48,336 36,330.4 36,341.6" fill="black" transform="rotate(180,40,336)"/>
                <polygon class="arrowhead" points="48,224 36,218.4 36,229.6" fill="black" transform="rotate(180,40,224)"/>
                <polygon class="arrowhead" points="48,144 36,138.4 36,149.6" fill="black" transform="rotate(180,40,144)"/>
                <g class="text">
                  <text x="28" y="36">Victim</text>
                  <text x="88" y="36">Foe</text>
                  <text x="152" y="36">Servers</text>
                  <text x="240" y="68">Code:</text>
                  <text x="284" y="68">0.01</text>
                  <text x="328" y="68">(GET)</text>
                  <text x="236" y="84">Token:</text>
                  <text x="284" y="84">0x44</text>
                  <text x="112" y="100">GET</text>
                  <text x="224" y="100">Uri-Path:</text>
                  <text x="312" y="100">temperature</text>
                  <text x="228" y="116">Uri-Query:</text>
                  <text x="316" y="116">pmax="0.1"</text>
                  <text x="248" y="148">Code:</text>
                  <text x="292" y="148">2.05</text>
                  <text x="352" y="148">(Content)</text>
                  <text x="116" y="164">2.05</text>
                  <text x="244" y="164">Token:</text>
                  <text x="292" y="164">0x44</text>
                  <text x="236" y="180">Observe:</text>
                  <text x="288" y="180">217</text>
                  <text x="236" y="196">Payload:</text>
                  <text x="300" y="196">"301.2</text>
                  <text x="340" y="196">K"</text>
                  <text x="248" y="228">Code:</text>
                  <text x="292" y="228">2.05</text>
                  <text x="352" y="228">(Content)</text>
                  <text x="116" y="244">2.05</text>
                  <text x="244" y="244">Token:</text>
                  <text x="292" y="244">0x44</text>
                  <text x="236" y="260">Observe:</text>
                  <text x="288" y="260">363</text>
                  <text x="236" y="276">Payload:</text>
                  <text x="300" y="276">"293.4</text>
                  <text x="340" y="276">K"</text>
                  <text x="60" y="308">....</text>
                  <text x="116" y="308">....</text>
                  <text x="88" y="324">|</text>
                  <text x="248" y="340">Code:</text>
                  <text x="292" y="340">2.05</text>
                  <text x="352" y="340">(Content)</text>
                  <text x="116" y="356">2.05</text>
                  <text x="244" y="356">Token:</text>
                  <text x="292" y="356">0x44</text>
                  <text x="236" y="372">Observe:</text>
                  <text x="288" y="372">218</text>
                  <text x="236" y="388">Payload:</text>
                  <text x="300" y="388">"301.2</text>
                  <text x="340" y="388">K"</text>
                  <text x="248" y="420">Code:</text>
                  <text x="292" y="420">2.05</text>
                  <text x="352" y="420">(Content)</text>
                  <text x="116" y="436">2.05</text>
                  <text x="244" y="436">Token:</text>
                  <text x="292" y="436">0x44</text>
                  <text x="236" y="452">Observe:</text>
                  <text x="288" y="452">364</text>
                  <text x="236" y="468">Payload:</text>
                  <text x="300" y="468">"293.4</text>
                  <text x="340" y="468">K"</text>
                  <text x="60" y="500">....</text>
                  <text x="116" y="500">....</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Victim   Foe   Servers
   |      |      |  |
   |      +-+--->|  |      Code: 0.01 (GET)
   |      |  '----->|     Token: 0x44
   |      | GET  |  |  Uri-Path: temperature
   |      |      |  |  Uri-Query: pmax="0.1"
   |      |      |  |
   |<------------+  |       Code: 2.05 (Content)
   |      | 2.05 |  |      Token: 0x44
   |      |      |  |    Observe: 217
   |      |      |  |    Payload: "301.2 K"
   |      |      |  |
   |<---------------+       Code: 2.05 (Content)
   |      | 2.05 |  |      Token: 0x44
   |      |      |  |    Observe: 363
   |      |      |  |    Payload: "293.4 K"
   |      |      |  |
     ....   ....
   |      |      |  |
   |<------------+  |       Code: 2.05 (Content)
   |      | 2.05 |  |      Token: 0x44
   |      |      |  |    Observe: 218
   |      |      |  |    Payload: "301.2 K"
   |      |      |  |
   |<---------------+       Code: 2.05 (Content)
   |      | 2.05 |  |      Token: 0x44
   |      |      |  |    Observe: 364
   |      |      |  |    Payload: "293.4 K"
   |      |      |  |
     ....   ....
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="mitm-amplification-attacks">
        <name>MITM Amplification Attacks</name>
        <t>TLS and DTLS without Connection ID <xref target="RFC9146"/><xref target="RFC9147"/> validate the IP address and port of the other peer, binds them to the connection, and do not allow them to change. DTLS with Connection ID allows the IP address and port to change at any time. As the source address is not protected, an MITM attacker can change the address. Note that an MITM attacker is a more capable attacker then an attacker just spoofing the source address. It can be discussed if and how much such an attack is reasonable for DDoS, but DTLS 1.3 states that "This attack is of concern when there is a large asymmetry of request/response message sizes." <xref target="RFC9147"/>.</t>
        <t>DTLS 1.2 with Connection ID <xref target="RFC9146"/> requires that "the receiver MUST NOT replace the address" unless "there is a strategy for ensuring that the new peer address is able to receive and process DTLS records" but does not give more details than that. It seems like the receiver can start using the new peer address and test that it is able to receive and process DTLS records at some later point. DTLS 1.3 with Connection ID <xref target="RFC9147"/> requires that "implementations MUST NOT update the address" unless "they first perform some reachability test" but does not give more details than that. OSCORE <xref target="RFC8613"/> does not discuss address updates, but it can be assumed that most servers send responses to the address it received the request from without any reachability test. A difference between (D)TLS and OSCORE is that in DTLS the updated address is used for all future records, while in OSCORE a new address is only used for responses to a specific request.</t>
        <t>An MITM amplification attack updating the client's source address in an observe registration is illustrated in <xref target="amp_mitm_client"/>. This attack is possible in OSCORE and DTLS with Connection ID. The server will send notifications to the Victim until it at some unspecified point requires an acknowledgement <xref target="RFC7641"/>. In DTLS 1.2 the reachability test might be done at a later point. In OSCORE a reachability test is likely not done.</t>
        <figure anchor="amp_mitm_client">
          <name>MITM Amplification attack by updating the client's source address in a observe registration request</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="416" viewBox="0 0 416 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,160" fill="none" stroke="black"/>
                <path d="M 32,192 L 32,304" fill="none" stroke="black"/>
                <path d="M 88,72 L 88,120" fill="none" stroke="black"/>
                <path d="M 88,192 L 88,304" fill="none" stroke="black"/>
                <path d="M 144,80 L 144,112" fill="none" stroke="black"/>
                <path d="M 144,216 L 144,264" fill="none" stroke="black"/>
                <path d="M 144,280 L 144,304" fill="none" stroke="black"/>
                <path d="M 200,48 L 200,160" fill="none" stroke="black"/>
                <path d="M 200,192 L 200,304" fill="none" stroke="black"/>
                <path d="M 32,64 L 128,64" fill="none" stroke="black"/>
                <path d="M 152,64 L 192,64" fill="none" stroke="black"/>
                <path d="M 40,128 L 136,128" fill="none" stroke="black"/>
                <path d="M 160,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 32,144 L 128,144" fill="none" stroke="black"/>
                <path d="M 152,144 L 192,144" fill="none" stroke="black"/>
                <path d="M 96,208 L 200,208" fill="none" stroke="black"/>
                <path d="M 96,272 L 200,272" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="200,144 188,138.4 188,149.6" fill="black" transform="rotate(0,192,144)"/>
                <polygon class="arrowhead" points="200,64 188,58.4 188,69.6" fill="black" transform="rotate(0,192,64)"/>
                <polygon class="arrowhead" points="168,128 156,122.4 156,133.6" fill="black" transform="rotate(180,160,128)"/>
                <polygon class="arrowhead" points="136,144 124,138.4 124,149.6" fill="black" transform="rotate(0,128,144)"/>
                <polygon class="arrowhead" points="136,64 124,58.4 124,69.6" fill="black" transform="rotate(0,128,64)"/>
                <polygon class="arrowhead" points="104,272 92,266.4 92,277.6" fill="black" transform="rotate(180,96,272)"/>
                <polygon class="arrowhead" points="104,208 92,202.4 92,213.6" fill="black" transform="rotate(180,96,208)"/>
                <polygon class="arrowhead" points="48,128 36,122.4 36,133.6" fill="black" transform="rotate(180,40,128)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="92" y="36">Victim</text>
                  <text x="144" y="36">Foe</text>
                  <text x="204" y="36">Server</text>
                  <text x="88" y="52">|</text>
                  <text x="144" y="52">|</text>
                  <text x="144" y="68">S</text>
                  <text x="272" y="68">Code:</text>
                  <text x="316" y="68">0.01</text>
                  <text x="360" y="68">(GET)</text>
                  <text x="56" y="84">GET</text>
                  <text x="260" y="84">Observe:</text>
                  <text x="304" y="84">0</text>
                  <text x="256" y="100">Uri-Path:</text>
                  <text x="332" y="100">humidity</text>
                  <text x="144" y="132">D</text>
                  <text x="268" y="132">Reachability</text>
                  <text x="340" y="132">test</text>
                  <text x="388" y="132">(DTLS)</text>
                  <text x="144" y="148">S</text>
                  <text x="88" y="164">|</text>
                  <text x="144" y="164">|</text>
                  <text x="60" y="180">....</text>
                  <text x="116" y="180">....</text>
                  <text x="172" y="180">....</text>
                  <text x="144" y="196">|</text>
                  <text x="272" y="212">Code:</text>
                  <text x="316" y="212">2.05</text>
                  <text x="376" y="212">(Content)</text>
                  <text x="172" y="228">2.05</text>
                  <text x="260" y="228">Observe:</text>
                  <text x="324" y="228">263712</text>
                  <text x="260" y="244">Payload:</text>
                  <text x="312" y="244">"68</text>
                  <text x="340" y="244">%"</text>
                  <text x="272" y="276">Code:</text>
                  <text x="316" y="276">2.05</text>
                  <text x="376" y="276">(Content)</text>
                  <text x="172" y="292">2.05</text>
                  <text x="260" y="292">Observe:</text>
                  <text x="324" y="292">263713</text>
                  <text x="260" y="308">Payload:</text>
                  <text x="312" y="308">"69</text>
                  <text x="340" y="308">%"</text>
                  <text x="60" y="324">....</text>
                  <text x="116" y="324">....</text>
                  <text x="172" y="324">....</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Client  Victim  Foe   Server
   |      |      |      |
   +-----------> S----->|      Code: 0.01 (GET)
   | GET  |      |      |   Observe: 0
   |      |      |      |  Uri-Path: humidity
   |      |      |      |
   |<------------D <----+  Reachability test (DTLS)
   +-----------> S----->|
   |      |      |      |
     ....   ....   ....
   |      |      |      |
   |      |<------------+      Code: 2.05 (Content)
   |      |      | 2.05 |   Observe: 263712
   |      |      |      |   Payload: "68 %"
   |      |      |      |
   |      |<------------+      Code: 2.05 (Content)
   |      |      | 2.05 |   Observe: 263713
   |      |      |      |   Payload: "69 %"
     ....   ....   ....
]]></artwork>
          </artset>
        </figure>
        <t>Where 'S' means the MITM attacker is changing the source address of the message and 'D' means the MITM attacker is changing the destination address of the message.</t>
        <t>An MITM amplification attack updating the server's source address is illustrated in <xref target="amp_mitm_server"/>. This attack is possible in DTLS with Connection ID. In DTLS 1.2 the reachability test might be done at a later point.</t>
        <figure anchor="amp_mitm_server">
          <name>MITM Amplification attack by updating the server's source address in a response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="472" viewBox="0 0 472 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,48 L 32,192" fill="none" stroke="black"/>
                <path d="M 32,224 L 32,336" fill="none" stroke="black"/>
                <path d="M 88,72 L 88,96" fill="none" stroke="black"/>
                <path d="M 88,128 L 88,144" fill="none" stroke="black"/>
                <path d="M 88,248 L 88,296" fill="none" stroke="black"/>
                <path d="M 88,312 L 88,336" fill="none" stroke="black"/>
                <path d="M 144,72 L 144,104" fill="none" stroke="black"/>
                <path d="M 144,120 L 144,152" fill="none" stroke="black"/>
                <path d="M 144,224 L 144,336" fill="none" stroke="black"/>
                <path d="M 200,48 L 200,192" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,336" fill="none" stroke="black"/>
                <path d="M 32,64 L 192,64" fill="none" stroke="black"/>
                <path d="M 40,112 L 80,112" fill="none" stroke="black"/>
                <path d="M 104,112 L 192,112" fill="none" stroke="black"/>
                <path d="M 32,160 L 72,160" fill="none" stroke="black"/>
                <path d="M 96,160 L 192,160" fill="none" stroke="black"/>
                <path d="M 40,176 L 80,176" fill="none" stroke="black"/>
                <path d="M 104,176 L 200,176" fill="none" stroke="black"/>
                <path d="M 32,240 L 136,240" fill="none" stroke="black"/>
                <path d="M 32,304 L 136,304" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="200,160 188,154.4 188,165.6" fill="black" transform="rotate(0,192,160)"/>
                <polygon class="arrowhead" points="200,64 188,58.4 188,69.6" fill="black" transform="rotate(0,192,64)"/>
                <polygon class="arrowhead" points="144,304 132,298.4 132,309.6" fill="black" transform="rotate(0,136,304)"/>
                <polygon class="arrowhead" points="144,240 132,234.4 132,245.6" fill="black" transform="rotate(0,136,240)"/>
                <polygon class="arrowhead" points="112,176 100,170.4 100,181.6" fill="black" transform="rotate(180,104,176)"/>
                <polygon class="arrowhead" points="112,112 100,106.4 100,117.6" fill="black" transform="rotate(180,104,112)"/>
                <polygon class="arrowhead" points="80,160 68,154.4 68,165.6" fill="black" transform="rotate(0,72,160)"/>
                <polygon class="arrowhead" points="48,176 36,170.4 36,181.6" fill="black" transform="rotate(180,40,176)"/>
                <polygon class="arrowhead" points="48,112 36,106.4 36,117.6" fill="black" transform="rotate(180,40,112)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Foe</text>
                  <text x="140" y="36">Victim</text>
                  <text x="204" y="36">Server</text>
                  <text x="88" y="52">|</text>
                  <text x="144" y="52">|</text>
                  <text x="272" y="68">Code:</text>
                  <text x="316" y="68">0.01</text>
                  <text x="364" y="68">(POST)</text>
                  <text x="60" y="84">POST</text>
                  <text x="256" y="84">Uri-Path:</text>
                  <text x="320" y="84">video</text>
                  <text x="88" y="116">S</text>
                  <text x="272" y="116">Code:</text>
                  <text x="316" y="116">2.01</text>
                  <text x="376" y="116">(Created)</text>
                  <text x="172" y="132">2.01</text>
                  <text x="88" y="164">D</text>
                  <text x="268" y="164">Reachability</text>
                  <text x="340" y="164">test</text>
                  <text x="388" y="164">(DTLS)</text>
                  <text x="88" y="180">S</text>
                  <text x="88" y="196">|</text>
                  <text x="144" y="196">|</text>
                  <text x="60" y="212">....</text>
                  <text x="116" y="212">....</text>
                  <text x="172" y="212">....</text>
                  <text x="88" y="228">|</text>
                  <text x="272" y="244">Code:</text>
                  <text x="316" y="244">0.01</text>
                  <text x="364" y="244">(POST)</text>
                  <text x="60" y="260">POST</text>
                  <text x="256" y="260">Uri-Path:</text>
                  <text x="320" y="260">video</text>
                  <text x="260" y="276">Payload:</text>
                  <text x="384" y="276">survailance_1139.hevc</text>
                  <text x="272" y="308">Code:</text>
                  <text x="316" y="308">0.01</text>
                  <text x="364" y="308">(POST)</text>
                  <text x="60" y="324">POST</text>
                  <text x="256" y="324">Uri-Path:</text>
                  <text x="320" y="324">video</text>
                  <text x="260" y="340">Payload:</text>
                  <text x="384" y="340">survailance_1140.hevc</text>
                  <text x="60" y="356">....</text>
                  <text x="116" y="356">....</text>
                  <text x="172" y="356">....</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Client   Foe  Victim  Server
   |      |      |      |
   +------------------->|      Code: 0.01 (POST)
   | POST |      |      |  Uri-Path: video
   |      |      |      |
   |<-----S <-----------|      Code: 2.01 (Created)
   |      |      | 2.01 |
   |      |      |      |
   +----> D------------>|  Reachability test (DTLS)
   |<-----S <-----------+
   |      |      |      |
     ....   ....   ....
   |      |      |      |
   +------------>|      |      Code: 0.01 (POST)
   | POST |      |      |  Uri-Path: video
   |      |      |      |   Payload: survailance_1139.hevc
   |      |      |      |
   +------------>|      |      Code: 0.01 (POST)
   | POST |      |      |  Uri-Path: video
   |      |      |      |   Payload: survailance_1140.hevc
     ....   ....   ....
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="summary">
      <name>Summary</name>
      <t>CoAP has always considered amplification attacks, but most of the requirements in
<xref target="RFC7252"/>, <xref target="RFC7641"/>, <xref target="RFC9175"/>, and
<xref target="I-D.ietf-core-groupcomm-bis"/> are "SHOULD" instead of "MUST", it is
undefined what a "large amplification factor" is, <xref target="RFC7641"/> does not specify
how many notifications that can be sent before a potentially spoofable
acknowledgement must be sent, and in several cases the "SHOULD" level is
further softened by "If possible" and "generally". <xref target="I-D.ietf-core-conditional-attributes"/>
does not have any amplification attack considerations.</t>
      <t>QUIC <xref target="RFC9000"/> mandates that "an endpoint MUST limit the amount of data it sends
to the unvalidated address to three times the amount of data received from that
address" without any exceptions. This approach should be seen as current best practice
for non-constrained devices.</t>
      <t>While it is clear when a QUIC implementation violates the requirement in <xref target="RFC9000"/>, it
is not clear when a CoAP implementation violates the requirement in <xref target="RFC7252"/>,
<xref target="RFC7641"/>, <xref target="RFC9175"/>, and <xref target="I-D.ietf-core-groupcomm-bis"/>.</t>
      <t>In CoAP, an address can be validated with a security protocol or by using the Echo Option <xref target="RFC9175"/>. Restricting the bandwidth per server is not enough as the number of servers the attacker can use is typically unknown. For multicast requests, anti-amplification limits and the Echo Option do not really work unless the number of servers sending responses is known. Even if the responses have the same size as the request, the amplification factor from m servers is m, where m is typically unknown. While DoS attacks from CoAP servers accessible over the Internet pose the largest threat, an attacker on a local network (e.g., a compromised node) might use local CoAP servers to attack targets on the Internet or on the local network.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The whole document can be seen as security considerations for CoAP.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no actions for IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
        <front>
          <title>The Constrained Application Protocol (CoAP)</title>
          <author fullname="Z. Shelby" initials="Z." surname="Shelby">
            <organization/>
          </author>
          <author fullname="K. Hartke" initials="K." surname="Hartke">
            <organization/>
          </author>
          <author fullname="C. Bormann" initials="C." surname="Bormann">
            <organization/>
          </author>
          <date month="June" year="2014"/>
          <abstract>
            <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
            <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7252"/>
        <seriesInfo name="DOI" value="10.17487/RFC7252"/>
      </reference>
      <reference anchor="RFC7641" target="https://www.rfc-editor.org/info/rfc7641">
        <front>
          <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
          <author fullname="K. Hartke" initials="K." surname="Hartke">
            <organization/>
          </author>
          <date month="September" year="2015"/>
          <abstract>
            <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks.  The state of a resource on a CoAP server can change over time.  This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time.  The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7641"/>
        <seriesInfo name="DOI" value="10.17487/RFC7641"/>
      </reference>
      <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152">
        <front>
          <title>CBOR Object Signing and Encryption (COSE)</title>
          <author fullname="J. Schaad" initials="J." surname="Schaad">
            <organization/>
          </author>
          <date month="July" year="2017"/>
          <abstract>
            <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8152"/>
        <seriesInfo name="DOI" value="10.17487/RFC8152"/>
      </reference>
      <reference anchor="RFC8323" target="https://www.rfc-editor.org/info/rfc8323">
        <front>
          <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
          <author fullname="C. Bormann" initials="C." surname="Bormann">
            <organization/>
          </author>
          <author fullname="S. Lemay" initials="S." surname="Lemay">
            <organization/>
          </author>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
            <organization/>
          </author>
          <author fullname="K. Hartke" initials="K." surname="Hartke">
            <organization/>
          </author>
          <author fullname="B. Silverajan" initials="B." surname="Silverajan">
            <organization/>
          </author>
          <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor">
            <organization/>
          </author>
          <date month="February" year="2018"/>
          <abstract>
            <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP.  The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
            <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports.  It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8323"/>
        <seriesInfo name="DOI" value="10.17487/RFC8323"/>
      </reference>
      <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla">
            <organization/>
          </author>
          <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="RFC8613" target="https://www.rfc-editor.org/info/rfc8613">
        <front>
          <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
          <author fullname="G. Selander" initials="G." surname="Selander">
            <organization/>
          </author>
          <author fullname="J. Mattsson" initials="J." surname="Mattsson">
            <organization/>
          </author>
          <author fullname="F. Palombini" initials="F." surname="Palombini">
            <organization/>
          </author>
          <author fullname="L. Seitz" initials="L." surname="Seitz">
            <organization/>
          </author>
          <date month="July" year="2019"/>
          <abstract>
            <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
            <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8613"/>
        <seriesInfo name="DOI" value="10.17487/RFC8613"/>
      </reference>
      <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
            <organization/>
          </author>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
            <organization/>
          </author>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="RFC9146" target="https://www.rfc-editor.org/info/rfc9146">
        <front>
          <title>Connection Identifier for DTLS 1.2</title>
          <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla">
            <organization/>
          </author>
          <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig">
            <organization/>
          </author>
          <author fullname="T. Fossati" initials="T." surname="Fossati">
            <organization/>
          </author>
          <author fullname="A. Kraus" initials="A." surname="Kraus">
            <organization/>
          </author>
          <date month="March" year="2022"/>
          <abstract>
            <t>This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.</t>
            <t>A CID is an identifier carried in the record layer header that gives the recipient additional information for selecting the appropriate security association. In "classical" DTLS, selecting a security association of an incoming DTLS record is accomplished with the help of the 5-tuple. If the source IP address and/or source port changes during the lifetime of an ongoing DTLS session, then the receiver will be unable to locate the correct security context.</t>
            <t>The new ciphertext record format with the CID also provides content type encryption and record layer padding.</t>
            <t>This document updates RFC 6347.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9146"/>
        <seriesInfo name="DOI" value="10.17487/RFC9146"/>
      </reference>
      <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147">
        <front>
          <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla">
            <organization/>
          </author>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
            <organization/>
          </author>
          <author fullname="N. Modadugu" initials="N." surname="Modadugu">
            <organization/>
          </author>
          <date month="April" year="2022"/>
          <abstract>
            <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
            <t>This document obsoletes RFC 6347.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9147"/>
        <seriesInfo name="DOI" value="10.17487/RFC9147"/>
      </reference>
      <reference anchor="RFC9175" target="https://www.rfc-editor.org/info/rfc9175">
        <front>
          <title>Constrained Application Protocol (CoAP): Echo, Request-Tag, and Token Processing</title>
          <author fullname="C. Amsüss" initials="C." surname="Amsüss">
            <organization/>
          </author>
          <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson">
            <organization/>
          </author>
          <author fullname="G. Selander" initials="G." surname="Selander">
            <organization/>
          </author>
          <date month="February" year="2022"/>
          <abstract>
            <t>This document specifies enhancements to the Constrained Application Protocol (CoAP) that mitigate security issues in particular use cases. The Echo option enables a CoAP server to verify the freshness of a request or to force a client to demonstrate reachability at its claimed network address. The Request-Tag option allows the CoAP server to match block-wise message fragments belonging to the same request. This document updates RFC 7252 with respect to the following: processing requirements for client Tokens, forbidding non-secure reuse of Tokens to ensure response-to-request binding when CoAP is used with a security protocol, and amplification mitigation (where the use of the Echo option is now recommended).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9175"/>
        <seriesInfo name="DOI" value="10.17487/RFC9175"/>
      </reference>
      <reference anchor="I-D.ietf-core-conditional-attributes" target="https://www.ietf.org/archive/id/draft-ietf-core-conditional-attributes-06.txt">
        <front>
          <title>Conditional Attributes for Constrained RESTful Environments</title>
          <author fullname="Michael Koster" initials="M." surname="Koster">
            <organization>Dogtiger Labs</organization>
          </author>
          <author fullname="Alan Soloway" initials="A." surname="Soloway">
            <organization>Qualcomm Technologies, Inc.</organization>
          </author>
          <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
            <organization>Tampere University</organization>
          </author>
          <date day="14" month="January" year="2023"/>
          <abstract>
            <t>   This specification defines Conditional Notification and Control
   Attributes that work with CoAP Observe (RFC7641).

Editor note

   The git repository for the draft is found at https://github.com/core-
   wg/conditional-attributes/

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-core-conditional-attributes-06"/>
      </reference>
      <reference anchor="I-D.ietf-core-groupcomm-bis" target="https://www.ietf.org/archive/id/draft-ietf-core-groupcomm-bis-08.txt">
        <front>
          <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
          <author fullname="Esko Dijk" initials="E." surname="Dijk">
            <organization>IoTconsultancy.nl</organization>
          </author>
          <author fullname="Chonggang Wang" initials="C." surname="Wang">
            <organization>InterDigital</organization>
          </author>
          <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
            <organization>RISE AB</organization>
          </author>
          <date day="11" month="January" year="2023"/>
          <abstract>
            <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces RFC 7390, while it updates RFC 7252 and RFC 7641.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-08"/>
      </reference>
      <reference anchor="I-D.ietf-core-oscore-groupcomm" target="https://www.ietf.org/archive/id/draft-ietf-core-oscore-groupcomm-17.txt">
        <front>
          <title>Group OSCORE - Secure Group Communication for CoAP</title>
          <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
            <organization>RISE AB</organization>
          </author>
          <author fullname="Göran Selander" initials="G." surname="Selander">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="Francesca Palombini" initials="F." surname="Palombini">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="Jiye Park" initials="J." surname="Park">
            <organization>Universitaet Duisburg-Essen</organization>
          </author>
          <date day="20" month="December" year="2022"/>
          <abstract>
            <t>   This document defines Group Object Security for Constrained RESTful
   Environments (Group OSCORE), providing end-to-end security of CoAP
   messages exchanged between members of a group, e.g., sent over IP
   multicast.  In particular, the described approach defines how OSCORE
   is used in a group communication setting to provide source
   authentication for CoAP group requests, sent by a client to multiple
   servers, and for protection of the corresponding CoAP responses.
   Group OSCORE also defines a pairwise mode where each member of the
   group can efficiently derive a symmetric pairwise key with any other
   member of the group for pairwise OSCORE communication.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-17"/>
      </reference>
      <reference anchor="DDoS-Infra" target="https://www.darkreading.com/attacks-breaches/critical-infrastructure-under-attack-/a/d-id/1340960">
        <front>
          <title>Critical Infrastructure Under Attack</title>
          <author>
            <organization/>
          </author>
          <date year="2021" month="November"/>
        </front>
        <seriesInfo name="Dark Reading" value=""/>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank
<contact fullname="Sultan Alshehri"/>,
<contact fullname="Carsten Bormann"/>,
<contact fullname="Klaus Hartke"/>,
<contact fullname="Jaime Jiménez"/>,
<contact fullname="Ari Keränen"/>,
<contact fullname="Matthias Kovatsch"/>,
<contact fullname="Achim Kraus"/>,
<contact fullname="Sandeep Kumar"/>,
and
<contact fullname="András Méhes"/>
for their valuable comments and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
