rfc8826v4.txt | rfc8826.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) E. Rescorla | Internet Engineering Task Force (IETF) E. Rescorla | |||
Request for Comments: 8826 RTFM, Inc. | Request for Comments: 8826 Mozilla | |||
Category: Standards Track December 2020 | Category: Standards Track January 2021 | |||
ISSN: 2070-1721 | ISSN: 2070-1721 | |||
Security Considerations for WebRTC | Security Considerations for WebRTC | |||
Abstract | Abstract | |||
WebRTC is a protocol suite for use with real-time applications that | WebRTC is a protocol suite for use with real-time applications that | |||
can be deployed in browsers -- "real-time communication on the Web". | can be deployed in browsers -- "real-time communication on the Web". | |||
This document defines the WebRTC threat model and analyzes the | This document defines the WebRTC threat model and analyzes the | |||
security threats of WebRTC in that model. | security threats of WebRTC in that model. | |||
skipping to change at line 32 ¶ | skipping to change at line 32 ¶ | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc8826. | https://www.rfc-editor.org/info/rfc8826. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at line 115 ¶ | skipping to change at line 115 ¶ | |||
communications are directly controlled by some Web server. A simple | communications are directly controlled by some Web server. A simple | |||
case is shown below. | case is shown below. | |||
+----------------+ | +----------------+ | |||
| | | | | | |||
| Web Server | | | Web Server | | |||
| | | | | | |||
+----------------+ | +----------------+ | |||
^ ^ | ^ ^ | |||
/ \ | / \ | |||
HTTP / \ HTTP | HTTPS / \ HTTPS | |||
or / \ or | or / \ or | |||
WebSockets / \ WebSockets | WebSockets / \ WebSockets | |||
v v | v v | |||
JS API JS API | JS API JS API | |||
+-----------+ +-----------+ | +-----------+ +-----------+ | |||
| | Media | | | | | Media | | | |||
| Browser |<---------->| Browser | | | Browser |<---------->| Browser | | |||
| | | | | | | | | | |||
+-----------+ +-----------+ | +-----------+ +-----------+ | |||
Alice Bob | Alice Bob | |||
skipping to change at line 279 ¶ | skipping to change at line 279 ¶ | |||
response transactions. As with CORS, a WebSockets transaction starts | response transactions. As with CORS, a WebSockets transaction starts | |||
with a consent verification stage to avoid allowing scripts to simply | with a consent verification stage to avoid allowing scripts to simply | |||
send arbitrary data to another origin. | send arbitrary data to another origin. | |||
While consent verification is conceptually simple -- just do a | While consent verification is conceptually simple -- just do a | |||
handshake before you start exchanging the real data -- experience has | handshake before you start exchanging the real data -- experience has | |||
shown that designing a correct consent verification system is | shown that designing a correct consent verification system is | |||
difficult. In particular, Huang et al. [huang-w2sp] have shown | difficult. In particular, Huang et al. [huang-w2sp] have shown | |||
vulnerabilities in the existing Java and Flash consent verification | vulnerabilities in the existing Java and Flash consent verification | |||
techniques and in a simplified version of the WebSockets handshake. | techniques and in a simplified version of the WebSockets handshake. | |||
In particular, it is important to be wary of CROSS-PROTOCOL attacks | It is important to be wary of CROSS-PROTOCOL attacks in which the | |||
in which the attacking script generates traffic which is acceptable | attacking script generates traffic which is acceptable to some non- | |||
to some non-Web protocol state machine. In order to resist this form | Web protocol state machine. In order to resist this form of attack, | |||
of attack, WebSockets incorporates a masking technique intended to | WebSockets incorporates a masking technique intended to randomize the | |||
randomize the bits on the wire, thus making it more difficult to | bits on the wire, thus making it more difficult to generate traffic | |||
generate traffic which resembles a given protocol. | which resembles a given protocol. | |||
4. Security for WebRTC Applications | 4. Security for WebRTC Applications | |||
4.1. Access to Local Devices | 4.1. Access to Local Devices | |||
As discussed in Section 1, allowing arbitrary sites to initiate calls | As discussed in Section 1, allowing arbitrary sites to initiate calls | |||
violates the core Web security guarantee; without some access | violates the core Web security guarantee; without some access | |||
restrictions on local devices, any malicious site could simply bug a | restrictions on local devices, any malicious site could simply bug a | |||
user. At minimum, then, it MUST NOT be possible for arbitrary sites | user. At minimum, then, it MUST NOT be possible for arbitrary sites | |||
to initiate calls to arbitrary locations without user consent. This | to initiate calls to arbitrary locations without user consent. This | |||
skipping to change at line 587 ¶ | skipping to change at line 587 ¶ | |||
There also needs to be some mechanism for the browser to verify that | There also needs to be some mechanism for the browser to verify that | |||
the target of the traffic continues to wish to receive it. Because | the target of the traffic continues to wish to receive it. Because | |||
ICE keepalives are indications, they will not work here. [RFC7675] | ICE keepalives are indications, they will not work here. [RFC7675] | |||
describes the mechanism for providing consent freshness. | describes the mechanism for providing consent freshness. | |||
4.2.2. Masking | 4.2.2. Masking | |||
Once consent is verified, there still is some concern about | Once consent is verified, there still is some concern about | |||
misinterpretation attacks as described by Huang et al. [huang-w2sp]. | misinterpretation attacks as described by Huang et al. [huang-w2sp]. | |||
Where TCP is used, the risk is substantial due to the potential | This does not seem like it is of serious concern with DTLS because | |||
presence of transparent proxies; therefore, if TCP is to be used, | the ICE handshake enforces receiver consent and there is little | |||
then WebSockets-style masking MUST be employed. | evidence of passive DTLS proxies of the type studied by Huang. | |||
However, because RTCWEB can run over TCP there is some concern that | ||||
Since DTLS (with the anti-chosen plaintext mechanisms required by TLS | attackers might control the ciphertext by controlling the plaintext | |||
1.1) does not allow the attacker to generate predictable ciphertext, | input to SCTP. This risk is only partially mitigated by the fact | |||
there is no need for masking of protocols running over DTLS (e.g., | that the SCTP stack controls the framing of the packets. | |||
SCTP over DTLS, UDP over DTLS, etc.). | ||||
Note that in principle an attacker could exert some control over | Note that in principle an attacker could exert some control over | |||
Secure Real-time Transport Protocol (SRTP) packets by using a | Secure Real-time Transport Protocol (SRTP) packets by using a | |||
combination of the WebAudio API and extremely tight timing control. | combination of the WebAudio API and extremely tight timing control. | |||
The primary risk here seems to be carriage of SRTP over Traversal | The primary risk here seems to be carriage of SRTP over Traversal | |||
Using Relays around NAT (TURN) TCP. However, as SRTP packets have an | Using Relays around NAT (TURN) TCP. However, as SRTP packets have an | |||
extremely characteristic packet header it seems unlikely that any but | extremely characteristic packet header it seems unlikely that any but | |||
the most aggressive intermediaries would be confused into thinking | the most aggressive intermediaries would be confused into thinking | |||
that another application-layer protocol was in use. | that another application-layer protocol was in use. | |||
4.2.3. Backward Compatibility | 4.2.3. Backward Compatibility | |||
| Note: The RTCWEB WG ultimately decided to require ICE. This | ||||
| section provides context for that decision. | ||||
A requirement to use ICE limits compatibility with legacy non-ICE | A requirement to use ICE limits compatibility with legacy non-ICE | |||
clients. It seems unsafe to completely remove the requirement for | clients. It seems unsafe to completely remove the requirement for | |||
some check. All proposed checks have the common feature that the | some check. All proposed checks have the common feature that the | |||
browser sends some message to the candidate traffic recipient and | browser sends some message to the candidate traffic recipient and | |||
refuses to send other traffic until that message has been replied to. | refuses to send other traffic until that message has been replied to. | |||
The message/reply pair must be generated in such a way that an | The message/reply pair must be generated in such a way that an | |||
attacker who controls the Web application cannot forge them, | attacker who controls the Web application cannot forge them, | |||
generally by having the message contain some secret value that must | generally by having the message contain some secret value that must | |||
be incorporated (e.g., echoed, hashed into, etc.). Non-ICE | be incorporated (e.g., echoed, hashed into, etc.). Non-ICE | |||
candidates for this role (in cases where the legacy endpoint has a | candidates for this role (in cases where the legacy endpoint has a | |||
skipping to change at line 731 ¶ | skipping to change at line 733 ¶ | |||
The calling service is compromised during the call it wishes to | The calling service is compromised during the call it wishes to | |||
attack (often called an "active attack"). | attack (often called an "active attack"). | |||
Providing security against the former type of attack is practical | Providing security against the former type of attack is practical | |||
using the techniques discussed in Section 4.3.1. However, it is | using the techniques discussed in Section 4.3.1. However, it is | |||
extremely difficult to prevent a trusted but malicious calling | extremely difficult to prevent a trusted but malicious calling | |||
service from actively attacking a user's calls, either by mounting a | service from actively attacking a user's calls, either by mounting a | |||
Man-in-the-Middle (MITM) attack or by diverting them entirely. (Note | Man-in-the-Middle (MITM) attack or by diverting them entirely. (Note | |||
that this attack applies equally to a network attacker if | that this attack applies equally to a network attacker if | |||
communications to the calling service are not secured.) We discuss | communications to the calling service are not secured.) We discuss | |||
some potential approaches and why they are likely to be impractical | some potential approaches in Section 4.3.2. | |||
in Section 4.3.2. | ||||
4.3.1. Protecting Against Retrospective Compromise | 4.3.1. Protecting Against Retrospective Compromise | |||
In a retrospective attack, the calling service was uncompromised | In a retrospective attack, the calling service was uncompromised | |||
during the call, but an attacker subsequently wants to recover the | during the call, but an attacker subsequently wants to recover the | |||
content of the call. We assume that the attacker has access to the | content of the call. We assume that the attacker has access to the | |||
protected media stream as well as full control of the calling | protected media stream as well as full control of the calling | |||
service. | service. | |||
If the calling service has access to the traffic keying material (as | If the calling service has access to the traffic keying material (as | |||
skipping to change at line 824 ¶ | skipping to change at line 825 ¶ | |||
ZRTP [RFC6189] uses a "Short Authentication String" (SAS) which is | ZRTP [RFC6189] uses a "Short Authentication String" (SAS) which is | |||
derived from the key agreement protocol. This SAS is designed to be | derived from the key agreement protocol. This SAS is designed to be | |||
compared by the users (e.g., read aloud over the voice channel or | compared by the users (e.g., read aloud over the voice channel or | |||
transmitted via an out-of-band channel) and if confirmed by both | transmitted via an out-of-band channel) and if confirmed by both | |||
sides precludes MITM attack. The intention is that the SAS is used | sides precludes MITM attack. The intention is that the SAS is used | |||
once and then key continuity (though with a different mechanism from | once and then key continuity (though with a different mechanism from | |||
that discussed above) is used thereafter. | that discussed above) is used thereafter. | |||
Unfortunately, the SAS does not offer a practical solution to the | Unfortunately, the SAS does not offer a practical solution to the | |||
problem of a compromised calling service. "Voice conversion" | problem of a compromised calling service. "Voice cloning" systems, | |||
systems, which modify voice from one speaker to make it sound like | which mimic the voice of a given speaker are an active area of | |||
another, are an active area of research. These systems are already | research [deepfakes-ftc] and are already being used in real-world | |||
good enough to fool both automatic recognition systems | attacks [deepfakes-fraud]. These attacks are likely to improve in | |||
[farrus-conversion] and humans [kain-conversion] in many cases, and | future, especially in an environment where the user just wants to get | |||
are of course likely to improve in future, especially in an | on with the phone call. Thus, even if the SAS is effective today, it | |||
environment where the user just wants to get on with the phone call. | is likely not to be so for much longer. | |||
Thus, even if the SAS is effective today, it is likely not to be so | ||||
for much longer. | ||||
Additionally, it is unclear that users will actually use an SAS. As | Additionally, it is unclear that users will actually use an SAS. As | |||
discussed above, the browser UI constraints preclude requiring the | discussed above, the browser UI constraints preclude requiring the | |||
SAS exchange prior to completing the call and so it must be | SAS exchange prior to completing the call and so it must be | |||
voluntary; at most the browser will provide some UI indicator that | voluntary; at most the browser will provide some UI indicator that | |||
the SAS has not yet been checked. However, it is well known that | the SAS has not yet been checked. However, it is well known that | |||
when faced with optional security mechanisms, many users simply | when faced with optional security mechanisms, many users simply | |||
ignore them [whitten-johnny]. | ignore them [whitten-johnny]. | |||
Once users have checked the SAS once, key continuity is required to | Once users have checked the SAS once, key continuity is required to | |||
skipping to change at line 992 ¶ | skipping to change at line 991 ¶ | |||
prompt.pdf?attredirects=0>. | prompt.pdf?attredirects=0>. | |||
[cranor-wolf] | [cranor-wolf] | |||
Sunshine, J., Egelman, S., Almuhimedi, H., Atri, N., and | Sunshine, J., Egelman, S., Almuhimedi, H., Atri, N., and | |||
L. Cranor, "Crying Wolf: An Empirical Study of SSL Warning | L. Cranor, "Crying Wolf: An Empirical Study of SSL Warning | |||
Effectiveness", Proceedings of the 18th USENIX Security | Effectiveness", Proceedings of the 18th USENIX Security | |||
Symposium, August 2009, | Symposium, August 2009, | |||
<https://www.usenix.org/legacy/event/sec09/tech/ | <https://www.usenix.org/legacy/event/sec09/tech/ | |||
full_papers/sunshine.pdf>. | full_papers/sunshine.pdf>. | |||
[farrus-conversion] | [deepfakes-fraud] | |||
Farrus, M., Erro, D., and J. Hernando, "Speaker | Statt, N., "Thieves are now using AI deepfakes to trick | |||
Recognition Robustness to Voice Conversion", January 2008. | companies into sending them money", September 2019, | |||
<https://www.theverge.com/2019/9/5/20851248/deepfakes-ai- | ||||
fake-audio-phone-calls-thieves-trick-companies-stealing- | ||||
money>. | ||||
[deepfakes-ftc] | ||||
Lyons, K., "FTC says the tech behind audio deepfakes is | ||||
getting better", January 2020, | ||||
<https://www.theverge.com/2020/1/29/21080553/ftc- | ||||
deepfakes-audio-cloning-joe-rogan-phone-scams>. | ||||
[fetch] van Kesteren, A., "Fetch", | [fetch] van Kesteren, A., "Fetch", | |||
<https://fetch.spec.whatwg.org/>. | <https://fetch.spec.whatwg.org/>. | |||
[finer-grained] | [finer-grained] | |||
Jackson, C. and A. Barth, "Beware of Finer-Grained | Jackson, C. and A. Barth, "Beware of Finer-Grained | |||
Origins", Web 2.0 Security and Privacy (W2SP 2008), July | Origins", Web 2.0 Security and Privacy (W2SP 2008), July | |||
2008. | 2008. | |||
[Fingerprinting] | [Fingerprinting] | |||
Doty, N., Ed., "Mitigating Browser Fingerprinting in Web | Doty, N., Ed., "Mitigating Browser Fingerprinting in Web | |||
Specifications", March 2019, | Specifications", March 2019, | |||
<https://www.w3.org/TR/fingerprinting-guidance/>. | <https://www.w3.org/TR/fingerprinting-guidance/>. | |||
[huang-w2sp] | [huang-w2sp] | |||
Huang, L-S., Chen, E.Y., Barth, A., Rescorla, E., and C. | Huang, L-S., Chen, E.Y., Barth, A., Rescorla, E., and C. | |||
Jackson, "Talking to Yourself for Fun and Profit", Web 2.0 | Jackson, "Talking to Yourself for Fun and Profit", Web 2.0 | |||
Security and Privacy (W2SP 2011), May 2011. | Security and Privacy (W2SP 2011), May 2011. | |||
[kain-conversion] | ||||
Kain, A. and M. Macon, "Design and Evaluation of a Voice | ||||
Conversion Algorithm based on Spectral Envelope Mapping | ||||
and Residual Prediction", Proceedings of the 2001 IEEE | ||||
International Conference on Acoustics, Speech, and Signal | ||||
Processing (ICASSP), DOI 10.1109/ICASSP.2001.941039, May | ||||
2001, <https://ieeexplore.ieee.org/document/941039>. | ||||
[OpenID] Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., and | [OpenID] Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., and | |||
C. Mortimore, "OpenID Connect Core 1.0", November 2014, | C. Mortimore, "OpenID Connect Core 1.0", November 2014, | |||
<https://openid.net/specs/openid-connect-core-1_0.html>. | <https://openid.net/specs/openid-connect-core-1_0.html>. | |||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | |||
DOI 10.17487/RFC2818, May 2000, | DOI 10.17487/RFC2818, May 2000, | |||
<https://www.rfc-editor.org/info/rfc2818>. | <https://www.rfc-editor.org/info/rfc2818>. | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
skipping to change at line 1119 ¶ | skipping to change at line 1119 ¶ | |||
October 2015, <https://www.rfc-editor.org/info/rfc7675>. | October 2015, <https://www.rfc-editor.org/info/rfc7675>. | |||
[RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive | [RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive | |||
Connectivity Establishment (ICE): A Protocol for Network | Connectivity Establishment (ICE): A Protocol for Network | |||
Address Translator (NAT) Traversal", RFC 8445, | Address Translator (NAT) Traversal", RFC 8445, | |||
DOI 10.17487/RFC8445, July 2018, | DOI 10.17487/RFC8445, July 2018, | |||
<https://www.rfc-editor.org/info/rfc8445>. | <https://www.rfc-editor.org/info/rfc8445>. | |||
[RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for | [RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for | |||
Browser-Based Applications", RFC 8825, | Browser-Based Applications", RFC 8825, | |||
DOI 10.17487/RFC8825, December 2020, | DOI 10.17487/RFC8825, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8825>. | <https://www.rfc-editor.org/info/rfc8825>. | |||
[RFC8827] Rescorla, E., "WebRTC Security Architecture", RFC 8827, | [RFC8827] Rescorla, E., "WebRTC Security Architecture", RFC 8827, | |||
DOI 10.17487/RFC8827, December 2020, | DOI 10.17487/RFC8827, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8827>. | <https://www.rfc-editor.org/info/rfc8827>. | |||
[RFC8828] Uberti, J., "WebRTC IP Address Handling Requirements", | [RFC8828] Uberti, J. and G. Shieh, "WebRTC IP Address Handling | |||
RFC 8828, DOI 10.17487/RFC8828, December 2020, | Requirements", RFC 8828, DOI 10.17487/RFC8828, January | |||
<https://www.rfc-editor.org/info/rfc8828>. | 2021, <https://www.rfc-editor.org/info/rfc8828>. | |||
[SWF] "SWF File Format Specification Version 19", April 2013, | [SWF] "SWF File Format Specification Version 19", April 2013, | |||
<https://www.adobe.com/content/dam/acom/en/devnet/pdf/swf- | <https://www.adobe.com/content/dam/acom/en/devnet/pdf/swf- | |||
file-format-spec.pdf>. | file-format-spec.pdf>. | |||
[whitten-johnny] | [whitten-johnny] | |||
Whitten, A. and J.D. Tygar, "Why Johnny Can't Encrypt: A | Whitten, A. and J.D. Tygar, "Why Johnny Can't Encrypt: A | |||
Usability Evaluation of PGP 5.0", Proceedings of the 8th | Usability Evaluation of PGP 5.0", Proceedings of the 8th | |||
USENIX Security Symposium, August 1999, | USENIX Security Symposium, August 1999, | |||
<https://www.usenix.org/legacy/publications/library/ | <https://www.usenix.org/legacy/publications/library/ | |||
skipping to change at line 1150 ¶ | skipping to change at line 1150 ¶ | |||
Acknowledgements | Acknowledgements | |||
Bernard Aboba, Harald Alvestrand, Dan Druta, Cullen Jennings, Alan | Bernard Aboba, Harald Alvestrand, Dan Druta, Cullen Jennings, Alan | |||
Johnston, Hadriel Kaplan (Section 4.2.1), Matthew Kaufman, Martin | Johnston, Hadriel Kaplan (Section 4.2.1), Matthew Kaufman, Martin | |||
Thomson, Magnus Westerlund. | Thomson, Magnus Westerlund. | |||
Author's Address | Author's Address | |||
Eric Rescorla | Eric Rescorla | |||
RTFM, Inc. | Mozilla | |||
2064 Edgewood Drive | ||||
Palo Alto, CA 94303 | ||||
United States of America | ||||
Phone: +1 650 678 2350 | ||||
Email: ekr@rtfm.com | Email: ekr@rtfm.com | |||
End of changes. 15 change blocks. | ||||
50 lines changed or deleted | 46 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |