idnits 2.17.1 draft-ietf-uta-smtp-tlsrpt-10.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 4 instances of too long lines in the document, the longest one being 54 characters in excess of 72. ** The abstract seems to contain references ([RFC6698], [RFC3207]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (September 28, 2017) is 2400 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'TODO' is mentioned on line 148, but not defined == Missing Reference: 'RFC5280' is mentioned on line 341, but not defined == Missing Reference: 'CFWS' is mentioned on line 608, but not defined ** Obsolete normative reference: RFC 2818 (Obsoleted by RFC 9110) ** Obsolete normative reference: RFC 6125 (Obsoleted by RFC 9525) -- Obsolete informational reference (is this intentional?): RFC 3501 (Obsoleted by RFC 9051) -- Obsolete informational reference (is this intentional?): RFC 7231 (Obsoleted by RFC 9110) Summary: 4 errors (**), 0 flaws (~~), 5 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Using TLS in Applications D. Margolis 3 Internet-Draft Google, Inc 4 Intended status: Standards Track A. Brotman 5 Expires: April 1, 2018 Comcast, Inc 6 B. Ramakrishnan 7 Yahoo!, Inc 8 J. Jones 9 Microsoft, Inc 10 M. Risher 11 Google, Inc 12 September 28, 2017 14 SMTP TLS Reporting 15 draft-ietf-uta-smtp-tlsrpt-10 17 Abstract 19 A number of protocols exist for establishing encrypted channels 20 between SMTP Mail Transfer Agents, including STARTTLS [RFC3207], DANE 21 [RFC6698], and MTA-STS (TODO: Add ref). These protocols can fail due 22 to misconfiguration or active attack, leading to undelivered messages 23 or delivery over unencrypted or unauthenticated channels. This 24 document describes a reporting mechanism and format by which sending 25 systems can share statistics and specific information about potential 26 failures with recipient domains. Recipient domains can then use this 27 information to both detect potential attackers and diagnose 28 unintentional misconfigurations. 30 Status of This Memo 32 This Internet-Draft is submitted in full conformance with the 33 provisions of BCP 78 and BCP 79. 35 Internet-Drafts are working documents of the Internet Engineering 36 Task Force (IETF). Note that other groups may also distribute 37 working documents as Internet-Drafts. The list of current Internet- 38 Drafts is at http://datatracker.ietf.org/drafts/current/. 40 Internet-Drafts are draft documents valid for a maximum of six months 41 and may be updated, replaced, or obsoleted by other documents at any 42 time. It is inappropriate to use Internet-Drafts as reference 43 material or to cite them other than as "work in progress." 45 This Internet-Draft will expire on April 1, 2018. 47 Copyright Notice 49 Copyright (c) 2017 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (http://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 65 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 66 2. Related Technologies . . . . . . . . . . . . . . . . . . . . 4 67 3. Reporting Policy . . . . . . . . . . . . . . . . . . . . . . 4 68 3.1. Example Reporting Policy . . . . . . . . . . . . . . . . 6 69 3.1.1. Report using MAILTO . . . . . . . . . . . . . . . . . 6 70 3.1.2. Report using HTTPS . . . . . . . . . . . . . . . . . 6 71 4. Reporting Schema . . . . . . . . . . . . . . . . . . . . . . 6 72 4.1. Report Time-frame . . . . . . . . . . . . . . . . . . . . 7 73 4.2. Delivery Summary . . . . . . . . . . . . . . . . . . . . 7 74 4.2.1. Success Count . . . . . . . . . . . . . . . . . . . . 7 75 4.2.2. Failure Count . . . . . . . . . . . . . . . . . . . . 7 76 4.3. Result Types . . . . . . . . . . . . . . . . . . . . . . 7 77 4.3.1. Negotiation Failures . . . . . . . . . . . . . . . . 8 78 4.3.2. Policy Failures . . . . . . . . . . . . . . . . . . . 8 79 4.3.3. General Failures . . . . . . . . . . . . . . . . . . 9 80 4.3.4. Transient Failures . . . . . . . . . . . . . . . . . 9 81 4.4. JSON Report Schema . . . . . . . . . . . . . . . . . . . 9 82 5. Report Delivery . . . . . . . . . . . . . . . . . . . . . . . 12 83 5.1. Report Filename . . . . . . . . . . . . . . . . . . . . . 12 84 5.2. Compression . . . . . . . . . . . . . . . . . . . . . . . 13 85 5.3. Email Transport . . . . . . . . . . . . . . . . . . . . . 13 86 5.3.1. Example Report . . . . . . . . . . . . . . . . . . . 14 87 5.4. HTTPS Transport . . . . . . . . . . . . . . . . . . . . . 15 88 5.5. Delivery Retry . . . . . . . . . . . . . . . . . . . . . 16 89 5.6. Metadata Variances . . . . . . . . . . . . . . . . . . . 16 90 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 91 6.1. Message headers . . . . . . . . . . . . . . . . . . . . . 16 92 6.2. Report Type . . . . . . . . . . . . . . . . . . . . . . . 16 93 6.3. application/tlsrpt+json Media Type . . . . . . . . . . . 17 94 6.4. application/tlsrpt+gzip Media Type . . . . . . . . . . . 18 95 6.5. STARTTLS Validation Result Types . . . . . . . . . . . . 19 96 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 97 8. Appendix 1: Example Reporting Policy . . . . . . . . . . . . 20 98 8.1. Report using MAILTO . . . . . . . . . . . . . . . . . . . 20 99 8.2. Report using HTTPS . . . . . . . . . . . . . . . . . . . 20 100 9. Appendix 2: Example JSON Report . . . . . . . . . . . . . . . 20 101 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 102 10.1. Normative References . . . . . . . . . . . . . . . . . . 22 103 10.2. Informative References . . . . . . . . . . . . . . . . . 23 104 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 106 1. Introduction 108 The STARTTLS extension to SMTP [RFC3207] allows SMTP clients and 109 hosts to establish secure SMTP sessions over TLS. The protocol 110 design is based on "Opportunistic Security" (OS) [RFC7435], which 111 maintains interoperability with clients that do not support STARTTLS 112 but means that any attacker who can delete parts of the SMTP session 113 (such as the "250 STARTTLS" response) or redirect the entire SMTP 114 session (perhaps by overwriting the resolved MX record of the 115 delivery domain) can perform a downgrade or interception attack. 117 Because such "downgrade attacks" are not necessarily apparent to the 118 receiving MTA, this document defines a mechanism for sending domains 119 to report on failures at multiple stages of the MTA-to-MTA 120 conversation. 122 Recipient domains may also use the mechanisms defined by MTA-STS 123 (TODO: Add ref) or DANE [RFC6698] to publish additional encryption 124 and authentication requirements; this document defines a mechanism 125 for sending domains that are compatible with MTA-STS or DANE to share 126 success and failure statistics with recipient domains. 128 Specifically, this document defines a reporting schema that covers 129 failures in routing, STARTTLS negotiation, and both DANE [RFC6698] 130 and MTA-STS (TODO: Add ref) policy validation errors, and a standard 131 TXT record that recipient domains can use to indicate where reports 132 in this format should be sent. 134 This document is intended as a companion to the specification for 135 SMTP MTA Strict Transport Security (MTA-STS, TODO: Add ref). 137 1.1. Terminology 139 The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, 140 SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this 141 document, are to be interpreted as described in [RFC2119]. 143 We also define the following terms for further use in this document: 145 o MTA-STS Policy: A definition of the expected TLS availability, 146 behavior, and desired actions for a given domain when a sending 147 MTA encounters problems in negotiating a secure channel. MTA-STS 148 is defined in [TODO] 150 o DANE Policy: A mechanism by which administrators can supply a 151 record that can be used to validate the certificate presented by 152 an MTA. DANE is defined in [RFC6698]. 154 o TLSRPT Policy: A policy specifying the endpoint to which sending 155 MTAs should deliver reports. 157 o Policy Domain: The domain against which an MTA-STS or DANE Policy 158 is defined. 160 o Sending MTA: The MTA initiating the delivery of an email message. 162 2. Related Technologies 164 o This document is intended as a companion to the specification for 165 SMTP MTA Strict Transport Security (MTA-STS, TODO: Add RFC ref). 167 o SMTP-TLSRPT defines a mechanism for sending domains that are 168 compatible with MTA-STS or DANE to share success and failure 169 statistics with recipient domains. DANE is defined in [RFC6698] 170 and MTA-STS is defined in [TODO : Add RFC ref] 172 3. Reporting Policy 174 A domain publishes a record to its DNS indicating that it wishes to 175 receive reports. These SMTP TLSRPT policies are distributed via DNS 176 from the Policy Domain's zone, as TXT records (similar to DMARC 177 policies) under the name "_smtp-tlsrpt". For example, for the Policy 178 Domain "example.com", the recipient's TLSRPT policy can be retrieved 179 from "_smtp-tlsrpt.example.com". 181 Policies consist of the following directives: 183 o "v": This value MUST be equal to "TLSRPTv1". 185 o "rua": A URI specifying the endpoint to which aggregate 186 information about policy validation results should be sent (see 187 Section 4, "Reporting Schema", for more information). Two URI 188 schemes are supported: "mailto" and "https". As with DMARC 189 [RFC7489], the policy domain can specify a comma-separated list of 190 URIs. 192 o In the case of "https", reports should be submitted via POST 193 ([RFC2818]) to the specified URI. Report submitters MAY ignore 194 certificate validation errors when submitting reports via https. 196 o In the case of "mailto", reports should be submitted to the 197 specified email address ([RFC6068]). When sending failure reports 198 via SMTP, sending MTAs MUST deliver reports despite any TLS- 199 related failures. This may mean that the reports are delivered in 200 the clear. Additionally, reports sent via SMTP MUST contain a 201 valid DKIM [RFC6376] signature by the reporting domain. Reports 202 lacking such a signature MUST be ignored by the recipient. DKIM 203 signatures must not use the "l=" attribute to limit the body 204 length used in the signature. 206 The formal definition of the "_smtp-tlsrpt" TXT record, defined using 207 [RFC5234] & [RFC7405], is as follows: 209 tlsrpt-record = tlsrpt-version 1*(field-delim tlsrpt-field) 210 [field-delim] 212 field-delim = *WSP ";" *WSP 214 tlsrpt-field = tlsrpt-rua / ; Note that the tlsrpt-rua 215 tlsrpt-extension ; record is required. 217 tlsrpt-version = %s"v=TLSRPTv1" 219 tlsrpt-rua = %s"rua=" 220 tlsrpt-uri *(*WSP "," *WSP tlsrpt-uri) 222 tlsrpt-uri = URI 223 ; "URI" is imported from [@!RFC3986]; commas (ASCII 224 ; 0x2C) and exclamation points (ASCII 0x21) 225 ; MUST be encoded 227 tlsrpt-extension = tlsrpt-ext-name "=" tlsrpt-ext-value 229 tlsrpt-ext-name = (ALPHA / DIGIT) *31(ALPHA / DIGIT / "_" / "-" / ".") 231 tlsrpt-ext-value = 1*(%x21-3A / %x3C / %x3E-7E) ; chars excluding 232 ; "=", ";", SP, and 233 ; control chars 235 If multiple TXT records for "_smtp-tlsrpt" are returned by the 236 resolver, records which do not begin with "v=TLSRPTv1;" are 237 discarded. If the number of resulting records is not one, senders 238 MUST assume the recipient domain does not implement TLSRPT. If the 239 resulting TXT record contains multiple strings, then the record MUST 240 be treated as if those strings are concatenated together without 241 adding spaces. 243 Parsers MUST accept TXT records which are syntactically valid (i.e. 244 valid key-value pairs separated by semi-colons) and implementing a 245 superset of this specification, in which case unknown fields SHALL be 246 ignored. 248 3.1. Example Reporting Policy 250 3.1.1. Report using MAILTO 252 _smtp-tlsrpt.example.com. IN TXT \ 253 "v=TLSRPTv1;rua=mailto:reports@example.com" 255 3.1.2. Report using HTTPS 257 _smtp-tlsrpt.example.com. IN TXT \ 258 "v=TLSRPTv1; \ 259 rua=https://reporting.example.com/v1/tlsrpt" 261 4. Reporting Schema 263 The report is composed as a plain text file encoded in the I-JSON 264 format ([RFC7493]). 266 Aggregate reports contain the following fields: 268 o Report metadata: 270 * The organization responsible for the report 272 * Contact information for one or more responsible parties for the 273 contents of the report 275 * A unique identifier for the report 277 * The reporting date range for the report 279 o Policy, consisting of: 281 * One of the following policy types: (1) The MTA-STS policy 282 applied (as a string) (2) The DANE TLSA record applied (as a 283 string, with each RR entry of the RRset listed and separated by 284 a semicolon) (3) The literal string "no-policy-found", if 285 neither a DANE nor MTA-STS policy could be found. 287 * The domain for which the policy is applied 288 * The MX host 290 * An identifier for the policy (where applicable) 292 o Aggregate counts, comprising result type, sending MTA IP, 293 receiving MTA hostname, session count, and an optional additional 294 information field containing a URI for recipients to review 295 further information on a failure type. 297 Note that the failure types are non-exclusive; an aggregate report 298 may contain overlapping "counts" of failure types when a single send 299 attempt encountered multiple errors. 301 4.1. Report Time-frame 303 The report SHOULD cover a full day, from 0000-2400 UTC. This should 304 allow for easier correlation of failure events. To avoid a Denial of 305 Service against the system processing the reports, the reports should 306 be delivered after some delay, perhaps several hours. 308 4.2. Delivery Summary 310 4.2.1. Success Count 312 o "success-count": This indicates that the sending MTA was able to 313 successfully negotiate a policy-compliant TLS connection, and 314 serves to provide a "heartbeat" to receiving domains that 315 reporting is functional and tabulating correctly. This field 316 contains an aggregate count of successful connections for the 317 reporting system. 319 4.2.2. Failure Count 321 o "failure-count": This indicates that the sending MTA was unable to 322 successfully establish a connection with the receiving platform. 323 Section 4.3, "Result Types", will elaborate on the failed 324 negotiation attempts. This field contains an aggregate count of 325 failed connections. 327 4.3. Result Types 329 The list of result types will start with the minimal set below, and 330 is expected to grow over time based on real-world experience. The 331 initial set is: 333 4.3.1. Negotiation Failures 335 o "starttls-not-supported": This indicates that the recipient MX did 336 not support STARTTLS. 338 o "certificate-host-mismatch": This indicates that the certificate 339 presented did not adhere to the constraints specified in the MTA- 340 STS or DANE policy, e.g. if the MX does not match any identities 341 listed in the Subject Alternate Name (SAN) [RFC5280]. 343 o "certificate-expired": This indicates that the certificate has 344 expired. 346 o "certificate-not-trusted": This a label that covers multiple 347 certificate related failures that include, but not limited to 348 errors such as untrusted/unknown CAs, certificate name 349 constraints, certificate chain errors etc. When using this 350 declaration, the reporting MTA SHOULD utilize the "failure-reason" 351 to provide more information to the receiving entity. 353 o "validation-failure": This indicates a general failure for a 354 reason not matching a category above. When using this 355 declaration, the reporting MTA SHOULD utilize the "failure-reason" 356 to provide more information to the receiving entity. 358 4.3.2. Policy Failures 360 4.3.2.1. DANE-specific Policy Failures 362 o "tlsa-invalid": This indicates a validation error in the TLSA 363 record associated with a DANE policy. None of the records in the 364 RRset were found to be valid. 366 o "dnssec-invalid": This would indicate that no valid records were 367 returned from the recursive resolver. The request returned with 368 SERVFAIL for the requested TLSA record. It should be noted that 369 if the reporter's systems are having problems resolving 370 destination DNS records due to DNSSEC failures, it's possible they 371 will also be unable to resolve the TLSRPT record, therefore these 372 types of reports may be rare. 374 4.3.2.2. MTA-STS-specific Policy Failures 376 o "sts-policy-invalid": This indicates a validation error for the 377 overall MTA-STS policy. 379 o "sts-webpki-invalid": This indicates that the MTA-STS policy could 380 not be authenticated using PKIX validation. 382 4.3.3. General Failures 384 When a negotiation failure can not be categorized into one of the 385 "Negotiation Failures" stated above, the reporter SHOULD use the 386 "validation-failure" category. As TLS grows and becomes more 387 complex, new mechanisms may not be easily categorized. This allows 388 for a generic feedback category. When this category is used, the 389 reporter SHOULD also use the "failure-reason-code" to give some 390 feedback to the receiving entity. This is intended to be a short 391 text field, and the contents of the field should be an error code or 392 error text, such as "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION". 394 4.3.4. Transient Failures 396 Transient errors due to too-busy network, TCP timeouts, etc. are not 397 required to be reported. 399 4.4. JSON Report Schema 401 The JSON schema is derived from the HPKP JSON schema [RFC7469] (cf. 402 Section 3) 403 { 404 "organization-name": organization-name, 405 "date-range": { 406 "start-datetime": date-time, 407 "end-datetime": date-time 408 }, 409 "contact-info": email-address, 410 "report-id": report-id, 411 "policy": { 412 "policy-type": policy-type, 413 "policy-string": policy-string, 414 "policy-domain": domain, 415 "mx-host": mx-host-pattern 416 }, 417 "summary": { 418 "total-successful-session-count": total-successful-session-count, 419 "total-failure-session-count:" total-failure-session-count 420 } 421 "failure-details": [ 422 { 423 "result-type": result-type, 424 "sending-mta-ip": ip-address, 425 "receiving-mx-hostname": receiving-mx-hostname, 426 "receiving-mx-helo": receiving-mx-helo, 427 "failed-session-count": failed-session-count, 428 "additional-information": additional-info-uri, 429 "failure-reason-code": "failure-reason-code" 430 } 431 ] 432 } 434 JSON Report Format 436 o "organization-name": The name of the organization responsible for 437 the report. It is provided as a string. 439 o "date-time": The date-time indicates the start- and end-times for 440 the report range. It is provided as a string formatted according 441 to Section 5.6, "Internet Date/Time Format", of [RFC3339]. The 442 report should be for a full UTC day, 0000-2400. 444 o "email-address": The contact information for a responsible party 445 of the report. It is provided as a string formatted according to 446 Section 3.4.1, "Addr-Spec", of [RFC5321]. 448 o "report-id": A unique identifier for the report. Report authors 449 may use whatever scheme they prefer to generate a unique 450 identifier. It is provided as a string. 452 o "policy-type": The type of policy that was applied by the sending 453 domain. Presently, the only three valid choices are "tlsa", 454 "sts", and the literal string "no-policy-found". It is provided 455 as a string. 457 o "policy-string": A string representation of the policy, whether 458 TLSA record ([RFC6698] section 2.3) or MTA-STS policy. Examples: 459 TLSA: ""_25._tcp.mx.example.com. IN TLSA ( 3 0 1 \ 460 1F850A337E6DB9C609C522D136A475638CC43E1ED424F8EEC8513D7 47D1D085D 461 )"" MTA-STS: ""version: STSv1\nmode: report\nmx: 462 mx1.example.com\nmx: \ mx2.example.com\nmx: mx.backup- 463 example.com\nmax_age: 12345678"" 465 o "domain": The Policy Domain is the domain against which the MTA- 466 STS or DANE policy is defined. In the case of Internationalized 467 Domain Names ([RFC5891]), the domain is the Punycode-encoded 468 A-label ([RFC3492]) and not the U-label. 470 o "mx-host-pattern": The pattern of MX hostnames from the applied 471 policy. It is provided as a string, and is interpreted in the 472 same manner as the "Checking of Wildcard Certificates" rules in 473 Section 6.4.3 of [RFC6125]. In the case of Internationalized 474 Domain Names ([RFC5891]), the domain is the Punycode-encoded 475 A-label ([RFC3492]) and not the U-label. 477 o "result-type": A value from Section 4.3, "Result Types", above. 479 o "ip-address": The IP address of the sending MTA that attempted the 480 STARTTLS connection. It is provided as a string representation of 481 an IPv4 (see below) or IPv6 ([RFC5952]) address in dot-decimal or 482 colon-hexadecimal notation. 484 o "receiving-mx-hostname": The hostname of the receiving MTA MX 485 record with which the sending MTA attempted to negotiate a 486 STARTTLS connection. 488 o "receiving-mx-helo": (optional) The HELO or EHLO string from the 489 banner announced during the reported session. 491 o "total-successful-session-count": The aggregate number (integer) 492 of successfully negotiated TLS-enabled connections to the 493 receiving site. 495 o "total-failure-session-count": The aggregate number (integer) of 496 failures to negotiate an TLS-enabled connection to the receiving 497 site. 499 o "failed-session-count": The number of (attempted) sessions that 500 match the relevant "result-type" for this section. 502 o "additional-info-uri": An optional URI [RFC3986] pointing to 503 additional information around the relevant "result-type". For 504 example, this URI might host the complete certificate chain 505 presented during an attempted STARTTLS session. 507 o "failure-reason-code": A text field to include an TLS-related 508 error code or error message. 510 For report purposes, an IPv4 Address is defined as: IPv4address = 511 dec-octet "." dec-octet "." dec-octet "." dec-octet 512 dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 513 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 515 5. Report Delivery 517 Reports can be delivered either as an email message via SMTP or via 518 HTTP POST. 520 5.1. Report Filename 522 The filename is RECOMMENDED to be constructed using the following 523 ABNF: 525 filename = sender "!" policy-domain "!" begin-timestamp 526 "!" end-timestamp [ "!" unique-id ] "." extension 528 unique-id = 1*(ALPHA / DIGIT) 530 sender = domain ; From the [@!RFC5321] that is used 531 ; as the domain for the `contact-info` 532 ; address in the report body 534 policy-domain = domain 536 begin-timestamp = 1*DIGIT 537 ; seconds since 00:00:00 UTC January 1, 1970 538 ; indicating start of the time range contained 539 ; in the report 541 end-timestamp = 1*DIGIT 542 ; seconds since 00:00:00 UTC January 1, 1970 543 ; indicating end of the time range contained 544 ; in the report 546 extension = "json" / "json.gz" 548 The extension MUST be "json" for a plain JSON file, or "json.gz" for 549 a JSON file compressed using GZIP. 551 "unique-id" allows an optional unique ID generated by the Sending MTA 552 to distinguish among multiple reports generated simultaneously by 553 different sources within the same Policy Domain. For example, this 554 is a possible filename for the gzip file of a report to the Policy 555 Domain "example.net" from the Sending MTA "mail.sender.example.com": 557 `mail.sender.example.com!example.net!1470013207!1470186007!001.json.gz` 559 5.2. Compression 561 The report SHOULD be subjected to GZIP compression for both email and 562 HTTPS transport. Declining to apply compression can cause the report 563 to be too large for a receiver to process (a commonly observed 564 receiver limit is ten megabytes); compressing the file increases the 565 chances of acceptance of the report at some compute cost. 567 5.3. Email Transport 569 The report MAY be delivered by email. To make the reports machine- 570 parsable for the receivers, we define a top-level media type 571 "multipart/report" with a new parameter "report-type="tlsrpt"". 572 Inside it, there are two parts: The first part is human readable, 573 typically "text/plain", and the second part is machine readable with 574 a new media type defined called "application/tlsrpt+json". If 575 compressed, the report should use the media type "application/ 576 tlsrpt+gzip". 578 In addition, the following two new top level message header fields 579 are defined: 581 TLS-Report-Domain: Receiver-Domain 582 TLS-Report-Submitter: Sender-Domain 584 The "TLS-Report-Submitter" value MUST match the value found in the 585 filename and the [RFC5321] domain from the "contact-info" from the 586 report body. These message headers MUST be included and should allow 587 for easy searching for all reports submitted by a report domain or a 588 particular submitter, for example in IMAP [RFC3501]: 590 "s SEARCH HEADER "TLS-Report-Domain" "example.com"" 592 It is presumed that the aggregate reporting address will be equipped 593 to process new message header fields and extract MIME parts with the 594 prescribed media type and filename, and ignore the rest. These 595 additional headers SHOULD be included in the DKIM [RFC6376] signature 596 for the message. 598 The [RFC5322].Subject field for report submissions SHOULD conform to 599 the following ABNF: 601 tlsrpt-subject = %s"Report" FWS ; "Report" 602 %s"Domain:" FWS ; "Domain:" 603 domain-name FWS ; per RFC6376 604 %s"Submitter:" FWS ; "Submitter:" 605 domain-name FWS ; per RFC6376 606 %s"Report-ID:" FWS ; "Report-ID: 607 "<" id-left "@" id-right ">" ; per RFC5322 608 [CFWS] ; per RFC5322 (as with FWS) 610 The first domain-name indicates the DNS domain name about which the 611 report was generated. The second domain-name indicates the DNS 612 domain name representing the Sending MTA generating the report. The 613 purpose of the Report-ID: portion of the field is to enable the 614 Policy Domain to identify and ignore duplicate reports that might be 615 sent by a Sending MTA. 617 For instance, this is a possible Subject field for a report to the 618 Policy Domain "example.net" from the Sending MTA 619 "mail.sender.example.com". It is line-wrapped as allowed by 620 [RFC5322]: 622 Subject: Report Domain: example.net 623 Submitter: mail.sender.example.com 624 Report-ID: <735ff.e317+bf22029@mailexample.net> 626 5.3.1. Example Report 627 From: tlsrpt@mail.sender.example.com 628 Date: Fri, May 09 2017 16:54:30 -0800 629 To: mts-sts-tlsrpt@example.net 630 Subject: Report Domain: example.net 631 Submitter: mail.sender.example.com 632 Report-ID: <735ff.e317+bf22029@example.net> 633 TLS-Report-Domain: example.net 634 TLS-Report-Submitter: mail.sender.example.com 635 MIME-Version: 1.0 636 Content-Type: multipart/report; report-type="tlsrpt"; 637 boundary="----=_NextPart_000_024E_01CC9B0A.AFE54C00" 638 Content-Language: en-us 640 This is a multipart message in MIME format. 642 ------=_NextPart_000_024E_01CC9B0A.AFE54C00 643 Content-Type: text/plain; charset="us-ascii" 644 Content-Transfer-Encoding: 7bit 646 This is an aggregate TLS report from mail.sender.example.com 648 ------=_NextPart_000_024E_01CC9B0A.AFE54C00 649 Content-Type: application/tlsrpt+gzip 650 Content-Transfer-Encoding: base64 651 Content-Disposition: attachment; 652 filename="mail.sender.example!example.com! 653 1013662812!1013749130.gz" 655 657 ------=_NextPart_000_024E_01CC9B0A.AFE54C00-- 658 ... 660 Note that, when sending failure reports via SMTP, sending MTAs MUST 661 NOT honor MTA-STS or DANE TLSA failures. 663 5.4. HTTPS Transport 665 The report MAY be delivered by POST to HTTPS. If compressed, the 666 report SHOULD use the media type "application/tlsrpt+gzip", and 667 "application/tlsrpt+json" otherwise (see section Section 6, "IANA 668 Considerations"). 670 A reporting entity SHOULD expect a "successful" response from the 671 accepting HTTPS server, typically a 200 or 201 HTTP code [RFC7231]. 672 Other codes could indicate a delivery failure, and may be retried as 673 per local policy. The receiving system is not expected to process 674 reports at receipt time, and MAY store them for processing at a later 675 time. 677 5.5. Delivery Retry 679 In the event of a delivery failure, regardless of the delivery 680 method, a sender SHOULD attempt redelivery for up to 24hrs after the 681 initial attempt. As previously stated the reports are optional, so 682 while it is ideal to attempt redelivery, it is not required. If 683 multiple retries are attempted, ideally they would be on a 684 logarithmic scale. 686 5.6. Metadata Variances 688 As stated above, there are a variable number of ways to declare 689 information about the data therein. If it should be the case that 690 these objects were to disagree, then the report data contained within 691 the JSON body MUST be considered the authoritative source for those 692 data elements. 694 6. IANA Considerations 696 The following are the IANA considerations discussed in this document. 698 6.1. Message headers 700 Below is the Internet Assigned Numbers Authority (IANA) Permanent 701 Message Header Field registration information per [RFC3864]. 703 Header field name: TLS-Report-Domain 704 Applicable protocol: mail 705 Status: standard 706 Author/Change controller: IETF 707 Specification document(s): this one 709 Header field name: TLS-Report-Submitter 710 Applicable protocol: mail 711 Status: standard 712 Author/Change controller: IETF 713 Specification document(s): this one 715 6.2. Report Type 717 This document registers a new parameter "report-type="tlsrpt"" under 718 "multipart/report" top-level media type for use with [RFC6522]. 720 The media type suitable for use as a report-type is defined in the 721 following section. 723 6.3. application/tlsrpt+json Media Type 725 This document registers multiple media types, beginning with Table 1 726 below. 728 +-------------+----------------+-------------+-------------------+ 729 | Type | Subtype | File extn | Specification | 730 +-------------+----------------+-------------+-------------------+ 731 | application | tlsrpt+json | .json | Section 5.3 | 732 +-------------+----------------+-------------+-------------------+ 733 Table 1: SMTP TLS Reporting Media Type 735 Type name: application 737 Subtype name: tlsrpt+json 739 Required parameters: n/a 741 Optional parameters: n/a 743 Encoding considerations: Encoding considerations are identical to 744 those specified for the "application/json" media type. See 745 [RFC7493]. 747 Security considerations: Security considerations relating to SMTP TLS 748 Reporting are discussed in Section 7. 750 Interoperability considerations: This document specifies format of 751 conforming messages and the interpretation thereof. 753 Published specification: Section 5.3 of this document. 755 Applications that use this media type: Mail User Agents (MUA) and 756 Mail Transfer Agents. 758 Additional information: 760 Magic number(s): n/a 762 File extension(s): ".json" 764 Macintosh file type code(s): n/a 766 Person & email address to contact for further information: See 767 Authors' Addresses section. 769 Intended usage: COMMON 771 Restrictions on usage: n/a 773 Author: See Authors' Addresses section. 775 Change controller: Internet Engineering Task Force 776 (mailto:iesg@ietf.org). 778 6.4. application/tlsrpt+gzip Media Type 780 +-------------+----------------+-------------+-------------------+ 781 | Type | Subtype | File extn | Specification | 782 +-------------+----------------+-------------+-------------------+ 783 | application | tlsrpt+gzip | .gz | Section 5.3 | 784 +-------------+----------------+-------------+-------------------+ 785 Table 2: SMTP TLS Reporting Media Type 787 Type name: application 789 Subtype name: tlsrpt+gzip 791 Required parameters: n/a 793 Optional parameters: n/a 795 Encoding considerations: Binary 797 Security considerations: Security considerations relating to SMTP TLS 798 Reporting are discussed in Section 7. 800 Interoperability considerations: This document specifies format of 801 conforming messages and the interpretation thereof. 803 Published specification: Section 5.3 of this document. 805 Applications that use this media type: Mail User Agents (MUA) and 806 Mail Transfer Agents. 808 Additional information: 810 Magic number(s): n/a 812 File extension(s): ".gz" 814 Macintosh file type code(s): n/a 816 Person & email address to contact for further information: See 817 Authors' Addresses section. 819 Intended usage: COMMON 821 Restrictions on usage: n/a 823 Author: See Authors' Addresses section. 825 Change controller: Internet Engineering Task Force 826 (mailto:iesg@ietf.org). 828 6.5. STARTTLS Validation Result Types 830 This document creates a new registry, "STARTTLS Validation Result 831 Types". The initial entries in the registry are: 833 +-------------------------------+ 834 | Result Type | 835 +-------------------------------+ 836 | "starttls-not-supported" | 837 | "certificate-host-mismatch" | 838 | "certificate-expired" | 839 | "tlsa-invalid" | 840 | "dnssec-invalid" | 841 | "sts-policy-invalid" | 842 | "sts-webpki-invalid" | 843 | "validation-failure" | 844 +-------------------------------+ 846 The above entries are described in section Section 4.3, "Result 847 Types." New result types can be added to this registry using "Expert 848 Review" IANA registration policy. 850 7. Security Considerations 852 SMTP TLS Reporting provides transparency into misconfigurations or 853 attempts to intercept or tamper with mail between hosts who support 854 STARTTLS. There are several security risks presented by the 855 existence of this reporting channel: 857 o Flooding of the Aggregate report URI (rua) endpoint: An attacker 858 could flood the endpoint with excessive reporting traffic and 859 prevent the receiving domain from accepting additional reports. 860 This type of Denial-of-Service attack would limit visibility into 861 STARTTLS failures, leaving the receiving domain blind to an 862 ongoing attack. 864 o Untrusted content: An attacker could inject malicious code into 865 the report, opening a vulnerability in the receiving domain. 866 Implementers are advised to take precautions against evaluating 867 the contents of the report. 869 o Report snooping: An attacker could create a bogus TLSRPT record to 870 receive statistics about a domain the attacker does not own. 871 Since an attacker able to poison DNS is already able to receive 872 counts of SMTP connections (and, absent DANE or MTA-STS policies, 873 actual SMTP message payloads), this does not present a significant 874 new vulnerability. 876 o Reports as DDoS: TLSRPT allows specifying destinations for the 877 reports that are outside the authority of the Policy Domain, which 878 allows domains to delegate processing of reports to a partner 879 organization. However, an attacker who controls the Policy Domain 880 DNS could also use this mechanism to direct the reports to an 881 unwitting victim, flooding that victim with excessive reports. 882 DMARC [RFC7489] defines a solution for verifying delegation to 883 avoid such attacks; the need for this is greater with DMARC, 884 however, because DMARC allows an attacker to trigger reports to a 885 target from an innocent third party by sending that third party 886 mail (which triggers a report from the third party to the target). 887 In the case of TLSRPT, the attacker would have to induce the third 888 party to send the attacker mail in order to trigger reports from 889 the third party to the victim; this reduces the risk of such an 890 attack and the need for a verification mechanism. 892 8. Appendix 1: Example Reporting Policy 894 8.1. Report using MAILTO 896 _smtp-tlsrpt.mail.example.com. IN TXT \ 897 "v=TLSRPTv1;rua=mailto:reports@example.com" 899 8.2. Report using HTTPS 901 _smtp-tlsrpt.mail.example.com. IN TXT \ 902 "v=TLSRPTv1; \ 903 rua=https://reporting.example.com/v1/tlsrpt" 905 9. Appendix 2: Example JSON Report 906 { 907 "organization-name": "Company-X", 908 "date-range": { 909 "start-datetime": "2016-04-01T00:00:00Z", 910 "end-datetime": "2016-04-01T23:59:59Z" 911 }, 912 "contact-info": "sts-reporting@company-x.com", 913 "report-id": "5065427c-23d3-47ca-b6e0-946ea0e8c4be", 914 "policy": { 915 "policy-type": "sts", 916 "policy-string": "{ \"version\": \"STSv1\",\"mode\": \"report\", \"mx\": [\".mail.company-y.com\"], \"max_age\": 86400 }", 917 "policy-domain": "company-y.com", 918 "mx-host": ".mail.company-y.com" 919 }, 920 "summary": { 921 "total-successful-session-count": 5326, 922 "total-failure-session-count": 303 923 }, 924 "failure-details": [{ 925 "result-type": "certificate-expired", 926 "sending-mta-ip": "98.136.216.25", 927 "receiving-mx-hostname": "mx1.mail.company-y.com", 928 "failed-session-count": 100 929 }, { 930 "result-type": "starttls-not-supported", 931 "sending-mta-ip": "98.22.33.99", 932 "receiving-mx-hostname": "mx2.mail.company-y.com", 933 "failed-session-count": 200, 934 "additional-information": "hxxps://reports.company-x.com/ 935 report_info?id=5065427c-23d3#StarttlsNotSupported" 936 }, { 937 "result-type": "validation-failure", 938 "sending-mta-ip": "47.97.15.2", 939 "receiving-mx-hostname": "mx-backup.mail.company-y.com", 940 "failed-session-count": 3, 941 "failure-error-code": "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED" 942 }] 943 } 945 Figure: Example JSON report for a messages from Company-X to Company- 946 Y, where 100 sessions were attempted to Company Y servers with an 947 expired certificate and 200 sessions were attempted to Company Y 948 servers that did not successfully respond to the "STARTTLS" command. 949 Additionally 3 sessions failed due to 950 "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED". 952 10. References 954 10.1. Normative References 956 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 957 Requirement Levels", BCP 14, RFC 2119, 958 DOI 10.17487/RFC2119, March 1997, . 961 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, 962 DOI 10.17487/RFC2818, May 2000, . 965 [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: 966 Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, 967 . 969 [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode 970 for Internationalized Domain Names in Applications 971 (IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, 972 . 974 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 975 Resource Identifier (URI): Generic Syntax", STD 66, 976 RFC 3986, DOI 10.17487/RFC3986, January 2005, 977 . 979 [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 980 Specifications: ABNF", STD 68, RFC 5234, 981 DOI 10.17487/RFC5234, January 2008, . 984 [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, 985 DOI 10.17487/RFC5321, October 2008, . 988 [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, 989 DOI 10.17487/RFC5322, October 2008, . 992 [RFC5891] Klensin, J., "Internationalized Domain Names in 993 Applications (IDNA): Protocol", RFC 5891, 994 DOI 10.17487/RFC5891, August 2010, . 997 [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 998 Address Text Representation", RFC 5952, 999 DOI 10.17487/RFC5952, August 2010, . 1002 [RFC6068] Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' 1003 URI Scheme", RFC 6068, DOI 10.17487/RFC6068, October 2010, 1004 . 1006 [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and 1007 Verification of Domain-Based Application Service Identity 1008 within Internet Public Key Infrastructure Using X.509 1009 (PKIX) Certificates in the Context of Transport Layer 1010 Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March 1011 2011, . 1013 [RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., 1014 "DomainKeys Identified Mail (DKIM) Signatures", STD 76, 1015 RFC 6376, DOI 10.17487/RFC6376, September 2011, 1016 . 1018 [RFC6522] Kucherawy, M., Ed., "The Multipart/Report Media Type for 1019 the Reporting of Mail System Administrative Messages", 1020 STD 73, RFC 6522, DOI 10.17487/RFC6522, January 2012, 1021 . 1023 [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication 1024 of Named Entities (DANE) Transport Layer Security (TLS) 1025 Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August 1026 2012, . 1028 [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", 1029 RFC 7405, DOI 10.17487/RFC7405, December 2014, 1030 . 1032 [RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493, 1033 DOI 10.17487/RFC7493, March 2015, . 1036 10.2. Informative References 1038 [RFC3207] Hoffman, P., "SMTP Service Extension for Secure SMTP over 1039 Transport Layer Security", RFC 3207, DOI 10.17487/RFC3207, 1040 February 2002, . 1042 [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 1043 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, 1044 . 1046 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration 1047 Procedures for Message Header Fields", BCP 90, RFC 3864, 1048 DOI 10.17487/RFC3864, September 2004, . 1051 [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer 1052 Protocol (HTTP/1.1): Semantics and Content", RFC 7231, 1053 DOI 10.17487/RFC7231, June 2014, . 1056 [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection 1057 Most of the Time", RFC 7435, DOI 10.17487/RFC7435, 1058 December 2014, . 1060 [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning 1061 Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April 1062 2015, . 1064 [RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based 1065 Message Authentication, Reporting, and Conformance 1066 (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, 1067 . 1069 Authors' Addresses 1071 Daniel Margolis 1072 Google, Inc 1074 Email: dmargolis (at) google.com 1076 Alexander Brotman 1077 Comcast, Inc 1079 Email: alex_brotman (at) comcast.com 1081 Binu Ramakrishnan 1082 Yahoo!, Inc 1084 Email: rbinu (at) yahoo-inc (dot com) 1086 Janet Jones 1087 Microsoft, Inc 1089 Email: janet.jones (at) microsoft (dot com) 1090 Mark Risher 1091 Google, Inc 1093 Email: risher (at) google (dot com)