<?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.17 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc iprnotified="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-t2trg-amplification-attacks-00" category="info" submissionType="IRTF" tocDepth="3" 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-00"/>
    <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="10"/>
    <area/>
    <workgroup/>
    <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>
        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 (t2trg) Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/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/EricssonResearch/coap-actuators"/>.</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-05.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="24" month="October" year="2022"/>
          <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-05"/>
      </reference>
      <reference anchor="I-D.ietf-core-groupcomm-bis" target="https://www.ietf.org/archive/id/draft-ietf-core-groupcomm-bis-07.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="July" year="2022"/>
          <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-07"/>
      </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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
ERRzGFJQAAA=

-->

</rfc>
