Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial threat model to security considerations #2925

Merged
merged 23 commits into from Jan 22, 2020
Merged
Changes from 3 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d3f4e35
Initial threat model appendix
ekinnear Jul 23, 2019
c22e24f
Fix typo
ekinnear Jul 23, 2019
9f3b421
Review comments
ekinnear Sep 3, 2019
3610a78
Move under security considerations
ekinnear Sep 3, 2019
2850205
Remove other "we" instances
ekinnear Sep 3, 2019
0ba5b02
Merge branch 'master' into ek/migration_threat_model
ekinnear Sep 4, 2019
5e14c63
Merge branch 'master' into ek/migration_threat_model
ekinnear Sep 22, 2019
510536d
Update with modified terminology and new text around active and passi…
ekinnear Sep 23, 2019
5f80f8b
Add reference and minor wording update.
ekinnear Sep 23, 2019
cb58100
Merge branch 'master' into ek/migration_threat_model
ekinnear Nov 16, 2019
bda13ed
Update with Gorry's comments
ekinnear Nov 16, 2019
b589f13
First cut at handshake guarantees
ekr Nov 16, 2019
b6ccaba
Text
ekr Nov 16, 2019
3dd7ec9
CID protection
ekr Nov 16, 2019
c2edd6a
Apply suggestions from code review
ekr Nov 16, 2019
a8a9373
Merge pull request #6 from ekr/migration_threat_model_todos
erickinnear Nov 16, 2019
5053e5b
Rewrap and typos
ekinnear Nov 16, 2019
70dac1d
Martin's review comments, starting with editorial nits
ekinnear Nov 16, 2019
e3860d0
Reorganize text, move definitions up, clean up some duplication
ekinnear Nov 16, 2019
8d2ed71
Add reference to handshake
ekinnear Nov 16, 2019
b7191cd
Merge branch 'master' into ek/migration_threat_model
ekinnear Jan 3, 2020
02d0fe8
Apply @MikeBishop's suggestions from code review
erickinnear Jan 3, 2020
5950556
The rest of @MikeBishop's suggestions, rewrapped
ekinnear Jan 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
344 changes: 178 additions & 166 deletions draft-ietf-quic-transport.md
Expand Up @@ -5568,6 +5568,184 @@ SHOULD NOT be used by themselves to make routing decisions. Ideally, routing
decisions are made independently of client-selected values; a Source Connection
ID can be selected to route later packets to the same server.

## Overview of Security Properties {#security-properties}

A complete security analysis of QUIC is outside the scope of this document.
This appendix provides an informal description of the desired security
properties as an aid to implementors and to help guide protocol analysis.

Properties of the handshake, general transport, and migration separately.

### Handshake {#handshake-properties}

TBD.

### Short Headers {#short-headers-properties}

TBD.

### Connection Migration {#migration-properties}

Connection Migration ({{migration}}) provides endpoints with the ability to
transition between IP addresses and ports on multiple paths, using one path at a
time for sending non-probing frames. Path validation helps to establish that a
peer is both willing and able to receive packets sent on a particular path.
This helps reduce the effects of address spoofing, by limiting the number of
packets sent to a spoofed address, unless an attacker is able to also receive
packets sent to that address.

This section describes the intended security properties of connection migration
when under attack by the following attackers. These attackers all mount active
attacks, requiring injection of packets into the network, as described in
{{?RFC3552}}.

#### On-Path Attacker

An on-path attacker is present between the QUIC client and server, and an
endpoint is required to send packets through this attacker to establish
connectivity on a given path.

An on-path attacker can:

- Inspect packets
- Modify IP and UDP packet headers
- Inject new packets
- Delay packets
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
- Drop packets
- Split and merge datagrams along packet boundaries

An on-path attacker cannot:

- Modify authenticated portions of a packet

An on-path attacker has the opportunity to modify the packets that it observes,
however any modifications to an authenticated portion of a packet will cause it
to be dropped by the receiving endpoint as invalid. QUIC payloads are both
authenticated and encrypted.

In the presence of an on-path attacker, QUIC aims to provide the following
properties.
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

1. An on-path attacker can prevent use of a path for a QUIC connection, causing
it to fail if it cannot migrate to a new path that does not contain the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure it's necessary to use the word 'migrate' here. If the handshake hasn't completed, you can't migrate yet. If you take my suggestion, it probably makes sense to update the other bullets.

Suggested change
it to fail if it cannot migrate to a new path that does not contain the
it to fail if it cannot use a different path that does not contain the

attacker. This can be achieved by dropping all packets, modifying them so that
they fail to decrypt, or other methods.

2. An on-path attacker can prevent migration to a new path for which the
attacker is also on-path by causing path validation to fail on the new path.

3. An on-path attacker cannot prevent a client from migrating to a path for
which the attacker is not on-path.

4. An on-path attacker can reduce the throughput of a connection by delaying
packets or dropping them.

5. An on-path attacker cannot cause an endpoint to accept a packet for which it
has modified an authenticated portion of that packet.


#### Off-Path Attacker

An off-path attacker is not directly on the path between the QUIC client and
server, but may be able to obtain copies of some or all packets sent between the
client and the server. It is also able to send copies of those packets to
either endpoint.

An off-path attacker can:

- Inspect packets
- Inject new packets

An off-path attacker cannot:

- Modify any part of a packet
- Delay packets
- Drop packets

An off-path attacker can, however, modify packets that it has observed and
inject them back into the network, potentially with spoofed source and
destination addresses.

For the purposes of this discussion, it is assumed that an off-path attacker has
the ability to observe, modify, and re-inject a packet into the network that
will reach the destination endpoint prior to the arrival of the original packet
observed by the attacker. In other words, an attacker has the ability to
consistently "win" a race with the legitimate packets between the endpoints,
potentially causing the original packet to be ignored by the recipient.

It is also assumed that an attacker has the resources necessary to affect NAT
state, potentially both causing an endpoint to lose its NAT binding, and an
attacker to obtain the same port for use with its traffic.

In the presence of an off-path attacker, QUIC aims to provide the following
properties.

1. An off-path attacker can race packets and attempt to become a "limited"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word race is used a few times in this section, but I don't believe it's defined and I'm not sure it's clear to everyone what it means in this context?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's first use would seem to work well enough to be definitional. I'm happy with this as it is.

on-path attacker.

2. An off-path attacker can cause path validation to succeed for forwarded
packets with the source address listed as the off-path attacker as long as it
can provide improved connectivity between the client and the server.

3. An off-path attacker cannot cause a connection to close.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. An off-path attacker cannot cause a connection to close.
3. An off-path attacker cannot cause a connection to close once the handshake has completed.


4. An off-path attacker cannot cause migration to a new path to fail if it
cannot observe the new path.

5. An off-path attacker can become a limited on-path attacker during migration
to a new path for which it is also an off-path attacker.

6. An off-path attacker can become a limited on-path attacker by affecting
shared NAT state such that it sends packets to the server from the same IP
address and port that the client originally used.


#### Limited On-Path Attacker

A limited on-path attacker is an off-path attacker that has offered improved
routing of packets by duplicating and forwarding original packets between the
server and the client, causing those packets to arrive before the original
copies such that the original packets are dropped by the destination endpoint.

A limited on-path attacker differs from an on-path attacker in that it is not on
the original path between endpoints, and therefore the original packets sent by
an endpoint are still reaching their destination. This means that a future
failure to route copied packets to the destination faster than their original
path will not prevent the original packets from reaching the destination.

A limited on-path attacker can:

- Inspect packets
- Inject new packets
- Modify unencrypted packet headers

A limited on-path attacker cannot:

- Delay packets beyond the original packet duration
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
- Drop packets
- Modify encrypted packet payloads
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

A limited on-path attacker can only delay packets up to the point that the
original packets arrive before the duplicate packets, meaning that it cannot
offer worse routing than the original path, only improved routing. If a limited
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
on-path attacker drops packets, the original copy will still arrive at the
destination endpoint.

In the presence of a limited on-path attacker, QUIC aims to provide the
following properties.
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

1. A limited on-path attacker cannot cause an active connection to close.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. A limited on-path attacker cannot cause an active connection to close.
1. A limited on-path attacker cannot cause an established connection to close.


2. A limited on-path attacker cannot cause an idle connection to close if the
client is first to resume activity.

3. A limited on-path attacker can cause an idle connection to be deemed lost if
the server is the first to resume activity.

Note that these guarantees are the same guarantees provided for any NAT, for the
same reasons.


# IANA Considerations

## QUIC Transport Parameter Registry {#iana-transport-parameters}
Expand Down Expand Up @@ -5753,172 +5931,6 @@ DecodePacketNumber(largest_pn, truncated_pn, pn_nbits):
return candidate_pn
~~~

# Overview of Security Properties {#security-properties}

A complete security analysis of QUIC is outside the scope of this document. In
this appendix, we provide an informal description of the desired security
properties as an aid to implementors and to help guide protocol analysis.

We cover properties of the handshake, general transport, and migration
separately.

## Handshake {#handshake-properties}

TBD.

## Short Headers {#short-headers-properties}

TBD.

## Connection Migration {#migration-properties}

Connection Migration ({{migration}}) provides endpoints with the ability to
transition between IP addresses and ports on multiple paths, using one path at a
time for sending non-probing frames. Path validation helps to establish
bidirectional connectivity with the peer over a new path and prevents source
address spoofing from being used in a denial-of-service attack. Migration is
further restricted to be initiated only by QUIC clients.

This section describes the intended security properties of connection migration
when under attack by the following attackers. These attackers all mount active
attacks, requiring injection of packets into the network, as described in
{{?RFC3552}}.

### On-Path Attacker

An on-path attacker is present between the QUIC client and server, and an
endpoint is required to send packets through this attacker to establish
connectivity on a given path.

An on-path attacker can:

- Inspect packets
- Modify unencrypted packet headers
- Inject new packets
- Delay packets
- Drop packets

An on-path attacker cannot:

- Modify encrypted packet payloads

In the presence of an on-path attacker, QUIC aims to provide the following
properties.

1. An on-path attacker can interrupt a QUIC connection, causing it to fail if it
cannot migrate to a new path that does not contain the attacker. This can be
achieved by dropping all packets, modifying them so that they fail to decrypt,
or other methods.

2. An on-path attacker can prevent migration to a new path for which the
attacker is also on-path by causing path validation to fail on the new path.

3. An on-path attacker cannot prevent a client from migrating to a path for
which the attacker is not on-path.

4. An on-path attacker can reduce the throughput of a connection by delaying
packets or dropping them.


### Off-Path Attacker

An off-path attacker is not directly on the path between the QUIC client and
server, but is able to obtain copies of all packets sent between the client and
the server. It is also able to send copies of those packets to either endpoint.

An off-path attacker can:

- Inspect packets
- Inject new packets

An off-path attacker cannot:

- Modify any part of a packet
- Delay packets
- Drop packets

An off-path attacker can, however, modify packets that it has observed and
inject them back into the network, potentially with spoofed source and
destination addresses.

For the purposes of this discussion, we assume that an off-path attacker has the
ability to observe, modify, and re-inject a packet into the network that will
reach the destination endpoint prior to the arrival of the original packet
observed by the attacker. In other words, the attacker has the ability to
consistently "win" a race with the legitimate packets between the endpoints,
potentially causing the original packet to be ignored by the recipient.

We also assume that the attacker has the resources necessary to affect NAT
state, potentially both causing an endpoint to lose its NAT binding, and an
attacker to obtain the same port for use with its traffic.

In the presence of an off-path attacker, QUIC aims to provide the following
properties.

1. An off-path attacker can race packets and attempt to become a "limited"
on-path attacker.

2. An off-path attacker can cause path validation to succeed for forwarded
packets with the source address listed as the off-path attacker as long as it
can provide improved connectivity between the client and the server.

3. An off-path attacker cannot cause a connection to close.

4. An off-path attacker cannot cause migration to a new path to fail if it
cannot observe the new path.

5. An off-path attacker can become a limited on-path attacker during migration
to a new path for which it is also an off-path attacker.

6. An off-path attacker can become a limited on-path attacker by affecting
shared NAT state such that it sends packets to the server from the same IP
address and port that the client originally used.


### Limited On-Path Attacker

A limited on-path attacker is an off-path attacker that has offered improved
routing of packets by duplicating and forwarding original packets between the
server and the client, causing those packets to arrive before the original
copies such that the original packets are dropped by the destination endpoint.

A limited on-path attacker differs from an on-path attacker in that it is not on
the original path between endpoints, and therefore the original packets sent by
an endpoint are still reaching their destination. This means that a future
failure to route copied packets to the destination faster than their original
path will not prevent the original packets from reaching the destination.

A limited on-path attacker can:

- Inspect packets
- Inject new packets
- Modify unencrypted packet headers

A limited on-path attacker cannot:

- Delay packets beyond the original packet duration
- Drop packets
- Modify encrypted packet payloads

A limited on-path attacker can only delay packets up to the point that the
original packets arrive before the duplicate packets, meaning that it cannot
offer worse routing than the original path, only improved routing. If a limited
on-path attacker drops packets, the original copy will still arrive at the
destination endpoint.

In the presence of a limited on-path attacker, QUIC aims to provide the
following properties.

1. A limited on-path attacker cannot cause an active connection to close.

2. A limited on-path attacker cannot cause an idle connection to close if the
client is first to resume activity.

3. A limited on-path attacker can cause an idle connection to be deemed lost if
the server is the first to resume activity.

Note that these guarantees are the same guarantees provided for any NAT, for the
same reasons.

# Change Log

Expand Down