idnits 2.17.1 draft-ietf-uta-smtp-tlsrpt-12.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (December 4, 2017) is 2335 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: 'CFWS' is mentioned on line 620, but not defined == Outdated reference: A later version (-21) exists of draft-ietf-uta-mta-sts-11 ** Obsolete normative reference: RFC 6125 (Obsoleted by RFC 9525) ** Obsolete normative reference: RFC 7231 (Obsoleted by RFC 9110) -- Obsolete informational reference (is this intentional?): RFC 3501 (Obsoleted by RFC 9051) Summary: 2 errors (**), 0 flaws (~~), 3 warnings (==), 2 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: June 7, 2018 Comcast, Inc 6 B. Ramakrishnan 7 Yahoo!, Inc 8 J. Jones 9 Microsoft, Inc 10 M. Risher 11 Google, Inc 12 December 4, 2017 14 SMTP TLS Reporting 15 draft-ietf-uta-smtp-tlsrpt-12 17 Abstract 19 A number of protocols exist for establishing encrypted channels 20 between SMTP Mail Transfer Agents, including STARTTLS, DANE TLSA, and 21 MTA-STS. These protocols can fail due to misconfiguration or active 22 attack, leading to undelivered messages or delivery over unencrypted 23 or unauthenticated channels. This document describes a reporting 24 mechanism and format by which sending systems can share statistics 25 and specific information about potential failures with recipient 26 domains. Recipient domains can then use this information to both 27 detect potential attackers and diagnose unintentional 28 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 https://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 June 7, 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 (https://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 . . . . . . . . . . . . . . . . . . . . . . 8 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 . . . . . . . . . . . . . . . . . . . 15 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 . . . . . . . . . . . . . . . . . . . . . . . 17 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. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 98 8.1. Normative References . . . . . . . . . . . . . . . . . . 21 99 8.2. Informative References . . . . . . . . . . . . . . . . . 23 100 Appendix A. Example Reporting Policy . . . . . . . . . . . . . . 23 101 A.1. Report using MAILTO . . . . . . . . . . . . . . . . . . . 23 102 A.2. Report using HTTPS . . . . . . . . . . . . . . . . . . . 23 103 Appendix B. Example JSON Report . . . . . . . . . . . . . . . . 23 104 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 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 [I-D.ietf-uta-mta-sts] or DANE [RFC6698] to publish additional 124 encryption and authentication requirements; this document defines a 125 mechanism for sending domains that are compatible with MTA-STS or 126 DANE to share 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 [I-D.ietf-uta-mta-sts] policy validation errors, and a 131 standard TXT record that recipient domains can use to indicate where 132 reports in this format should be sent. 134 This document is intended as a companion to the specification for 135 SMTP MTA Strict Transport Security [I-D.ietf-uta-mta-sts]. 137 1.1. Terminology 139 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 140 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" 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 [I-D.ietf-uta-mta-sts]. 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 [I-D.ietf-uta-mta-sts]. 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 [I-D.ietf-uta-mta-sts]. 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 ([RFC7231]) 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 and SHOULD NOT include this SMTP session in the 200 next report. This may mean that the reports are delivered in the 201 clear. Additionally, reports sent via SMTP MUST contain a valid 202 DKIM [RFC6376] signature by the reporting domain. Reports lacking 203 such a signature MUST be ignored by the recipient. DKIM 204 signatures must not use the "l=" attribute to limit the body 205 length used in the signature. 207 The formal definition of the "_smtp-tlsrpt" TXT record, defined using 208 [RFC5234] & [RFC7405], is as follows: 210 tlsrpt-record = tlsrpt-version 1*(field-delim tlsrpt-field) 211 [field-delim] 213 field-delim = *WSP ";" *WSP 215 tlsrpt-field = tlsrpt-rua / ; Note that the 216 tlsrpt-extension ; tlsrpt-rua record is 217 ; required. 219 tlsrpt-version = %s"v=TLSRPTv1" 221 tlsrpt-rua = %s"rua=" 222 tlsrpt-uri *(*WSP "," *WSP tlsrpt-uri) 224 tlsrpt-uri = URI 225 ; "URI" is imported from [@!RFC3986]; 226 ; commas (ASCII 0x2C) and exclamation 227 ; points (ASCII 0x21) MUST be encoded 229 tlsrpt-extension = tlsrpt-ext-name "=" tlsrpt-ext-value 231 tlsrpt-ext-name = (ALPHA / DIGIT) *31(ALPHA / 232 DIGIT / "_" / "-" / ".") 234 tlsrpt-ext-value = 1*(%x21-3A / %x3C / %x3E-7E) 235 ; chars excluding "=", ";", SP, and control 236 ; chars 238 If multiple TXT records for "_smtp-tlsrpt" are returned by the 239 resolver, records which do not begin with "v=TLSRPTv1;" are 240 discarded. If the number of resulting records is not one, senders 241 MUST assume the recipient domain does not implement TLSRPT. If the 242 resulting TXT record contains multiple strings, then the record MUST 243 be treated as if those strings are concatenated together without 244 adding spaces. 246 Parsers MUST accept TXT records which are syntactically valid (i.e. 247 valid key-value pairs separated by semi-colons) and implementing a 248 superset of this specification, in which case unknown fields SHALL be 249 ignored. 251 3.1. Example Reporting Policy 253 3.1.1. Report using MAILTO 255 _smtp-tlsrpt.example.com. IN TXT \ 256 "v=TLSRPTv1;rua=mailto:reports@example.com" 258 3.1.2. Report using HTTPS 260 _smtp-tlsrpt.example.com. IN TXT \ 261 "v=TLSRPTv1; \ 262 rua=https://reporting.example.com/v1/tlsrpt" 264 4. Reporting Schema 266 The report is composed as a plain text file encoded in the I-JSON 267 format ([RFC7493]). 269 Aggregate reports contain the following fields: 271 o Report metadata: 273 * The organization responsible for the report 275 * Contact information for one or more responsible parties for the 276 contents of the report 278 * A unique identifier for the report 280 * The reporting date range for the report 282 o Policy, consisting of: 284 * One of the following policy types: (1) The MTA-STS policy 285 applied (as a string) (2) The DANE TLSA record applied (as a 286 string, with each RR entry of the RRset listed and separated by 287 a semicolon) (3) The literal string "no-policy-found", if 288 neither a DANE nor MTA-STS policy could be found. 290 * The domain for which the policy is applied 292 * The MX host 294 * An identifier for the policy (where applicable) 296 o Aggregate counts, comprising result type, sending MTA IP, 297 receiving MTA hostname, session count, and an optional additional 298 information field containing a URI for recipients to review 299 further information on a failure type. 301 Note that the failure types are non-exclusive; an aggregate report 302 may contain overlapping "counts" of failure types when a single send 303 attempt encountered multiple errors. Reporters may report multiple 304 applied policies (for example, an MTA-STS policy and a DANE TLSA 305 record for the same domain and MX); even in the case where only a 306 single policy was applied, the "policies" field of the report body 307 MUST be an array and not a singular value. 309 4.1. Report Time-frame 311 The report SHOULD cover a full day, from 0000-2400 UTC. This should 312 allow for easier correlation of failure events. To avoid a Denial of 313 Service against the system processing the reports, the reports should 314 be delivered after some delay, perhaps several hours. 316 4.2. Delivery Summary 318 4.2.1. Success Count 320 o "success-count": This indicates that the sending MTA was able to 321 successfully negotiate a policy-compliant TLS connection, and 322 serves to provide a "heartbeat" to receiving domains that 323 reporting is functional and tabulating correctly. This field 324 contains an aggregate count of successful connections for the 325 reporting system. 327 4.2.2. Failure Count 329 o "failure-count": This indicates that the sending MTA was unable to 330 successfully establish a connection with the receiving platform. 331 Section 4.3, "Result Types", will elaborate on the failed 332 negotiation attempts. This field contains an aggregate count of 333 failed connections. 335 4.3. Result Types 337 The list of result types will start with the minimal set below, and 338 is expected to grow over time based on real-world experience. The 339 initial set is: 341 4.3.1. Negotiation Failures 343 o "starttls-not-supported": This indicates that the recipient MX did 344 not support STARTTLS. 346 o "certificate-host-mismatch": This indicates that the certificate 347 presented did not adhere to the constraints specified in the MTA- 348 STS or DANE policy, e.g. if the MX does not match any identities 349 listed in the Subject Alternate Name (SAN) [RFC5280]. 351 o "certificate-expired": This indicates that the certificate has 352 expired. 354 o "certificate-not-trusted": This a label that covers multiple 355 certificate related failures that include, but not limited to 356 errors such as untrusted/unknown CAs, certificate name 357 constraints, certificate chain errors etc. When using this 358 declaration, the reporting MTA SHOULD utilize the "failure-reason" 359 to provide more information to the receiving entity. 361 o "validation-failure": This indicates a general failure for a 362 reason not matching a category above. When using this 363 declaration, the reporting MTA SHOULD utilize the "failure-reason" 364 to provide more information to the receiving entity. 366 4.3.2. Policy Failures 368 4.3.2.1. DANE-specific Policy Failures 370 o "tlsa-invalid": This indicates a validation error in the TLSA 371 record associated with a DANE policy. None of the records in the 372 RRset were found to be valid. 374 o "dnssec-invalid": This would indicate that no valid records were 375 returned from the recursive resolver. The request returned with 376 SERVFAIL for the requested TLSA record. It should be noted that 377 if the reporter's systems are having problems resolving 378 destination DNS records due to DNSSEC failures, it's possible they 379 will also be unable to resolve the TLSRPT record, therefore these 380 types of reports may be rare. 382 4.3.2.2. MTA-STS-specific Policy Failures 384 o "sts-policy-invalid": This indicates a validation error for the 385 overall MTA-STS policy. 387 o "sts-webpki-invalid": This indicates that the MTA-STS policy could 388 not be authenticated using PKIX validation. 390 4.3.3. General Failures 392 When a negotiation failure can not be categorized into one of the 393 "Negotiation Failures" stated above, the reporter SHOULD use the 394 "validation-failure" category. As TLS grows and becomes more 395 complex, new mechanisms may not be easily categorized. This allows 396 for a generic feedback category. When this category is used, the 397 reporter SHOULD also use the "failure-reason-code" to give some 398 feedback to the receiving entity. This is intended to be a short 399 text field, and the contents of the field should be an error code or 400 error text, such as "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION". 402 4.3.4. Transient Failures 404 Transient errors due to too-busy network, TCP timeouts, etc. are not 405 required to be reported. 407 4.4. JSON Report Schema 409 The JSON schema is derived from the HPKP JSON schema [RFC7469] (cf. 410 Section 3) 412 { 413 "organization-name": organization-name, 414 "date-range": { 415 "start-datetime": date-time, 416 "end-datetime": date-time 417 }, 418 "contact-info": email-address, 419 "report-id": report-id, 420 "policies": [{ 421 "policy": { 422 "policy-type": policy-type, 423 "policy-string": policy-string, 424 "policy-domain": domain, 425 "mx-host": mx-host-pattern 426 }, 427 "summary": { 428 "total-successful-session-count": total-successful-session-count, 429 "total-failure-session-count": total-failure-session-count 430 }, 431 "failure-details": [ 432 { 433 "result-type": result-type, 434 "sending-mta-ip": ip-address, 435 "receiving-mx-hostname": receiving-mx-hostname, 436 "receiving-mx-helo": receiving-mx-helo, 437 "failed-session-count": failed-session-count, 438 "additional-information": additional-info-uri, 439 "failure-reason-code": failure-reason-code 440 } 441 ] 442 } 443 ] 444 } 446 JSON Report Format 448 o "organization-name": The name of the organization responsible for 449 the report. It is provided as a string. 451 o "date-time": The date-time indicates the start- and end-times for 452 the report range. It is provided as a string formatted according 453 to Section 5.6, "Internet Date/Time Format", of [RFC3339]. The 454 report should be for a full UTC day, 0000-2400. 456 o "email-address": The contact information for a responsible party 457 of the report. It is provided as a string formatted according to 458 Section 3.4.1, "Addr-Spec", of [RFC5321]. 460 o "report-id": A unique identifier for the report. Report authors 461 may use whatever scheme they prefer to generate a unique 462 identifier. It is provided as a string. 464 o "policy-type": The type of policy that was applied by the sending 465 domain. Presently, the only three valid choices are "tlsa", 466 "sts", and the literal string "no-policy-found". It is provided 467 as a string. 469 o "policy-string": A string representation of the policy, whether 470 TLSA record ([RFC6698] section 2.3) or MTA-STS policy. Examples: 471 TLSA: ""_25._tcp.mx.example.com. IN TLSA ( 3 0 1 \ 472 1F850A337E6DB9C609C522D136A475638CC43E1ED424F8EEC8513D7 47D1D085D 473 )"" MTA-STS: ""version: STSv1\nmode: report\nmx: 474 mx1.example.com\nmx: \ mx2.example.com\nmx: mx.backup- 475 example.com\nmax_age: 12345678"" 477 o "domain": The Policy Domain is the domain against which the MTA- 478 STS or DANE policy is defined. In the case of Internationalized 479 Domain Names ([RFC5891]), the domain is the Punycode-encoded 480 A-label ([RFC3492]) and not the U-label. 482 o "mx-host-pattern": The pattern of MX hostnames from the applied 483 policy. It is provided as a string, and is interpreted in the 484 same manner as the "Checking of Wildcard Certificates" rules in 485 Section 6.4.3 of [RFC6125]. In the case of Internationalized 486 Domain Names ([RFC5891]), the domain is the Punycode-encoded 487 A-label ([RFC3492]) and not the U-label. 489 o "result-type": A value from Section 4.3, "Result Types", above. 491 o "ip-address": The IP address of the sending MTA that attempted the 492 STARTTLS connection. It is provided as a string representation of 493 an IPv4 (see below) or IPv6 ([RFC5952]) address in dot-decimal or 494 colon-hexadecimal notation. 496 o "receiving-mx-hostname": The hostname of the receiving MTA MX 497 record with which the sending MTA attempted to negotiate a 498 STARTTLS connection. 500 o "receiving-mx-helo": (optional) The HELO or EHLO string from the 501 banner announced during the reported session. 503 o "total-successful-session-count": The aggregate number (integer) 504 of successfully negotiated TLS-enabled connections to the 505 receiving site. 507 o "total-failure-session-count": The aggregate number (integer) of 508 failures to negotiate a TLS-enabled connection to the receiving 509 site. 511 o "failed-session-count": The number of (attempted) sessions that 512 match the relevant "result-type" for this section. 514 o "additional-info-uri": An optional URI [RFC3986] pointing to 515 additional information around the relevant "result-type". For 516 example, this URI might host the complete certificate chain 517 presented during an attempted STARTTLS session. 519 o "failure-reason-code": A text field to include a TLS-related error 520 code or error message. 522 For report purposes, an IPv4 Address is defined as: IPv4address = 523 dec-octet "." dec-octet "." dec-octet "." dec-octet 524 dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 525 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 527 5. Report Delivery 529 Reports can be delivered either as an email message via SMTP or via 530 HTTP POST. 532 5.1. Report Filename 534 The filename is RECOMMENDED to be constructed using the following 535 ABNF: 537 filename = sender "!" policy-domain "!" begin-timestamp 538 "!" end-timestamp [ "!" unique-id ] "." extension 540 unique-id = 1*(ALPHA / DIGIT) 542 sender = domain ; From the [@!RFC5321] that is used 543 ; as the domain for the `contact-info` 544 ; address in the report body 546 policy-domain = domain 548 begin-timestamp = 1*DIGIT 549 ; seconds since 00:00:00 UTC January 1, 1970 550 ; indicating start of the time range contained 551 ; in the report 553 end-timestamp = 1*DIGIT 554 ; seconds since 00:00:00 UTC January 1, 1970 555 ; indicating end of the time range contained 556 ; in the report 558 extension = "json" / "json.gz" 560 The extension MUST be "json" for a plain JSON file, or "json.gz" for 561 a JSON file compressed using GZIP. 563 "unique-id" allows an optional unique ID generated by the Sending MTA 564 to distinguish among multiple reports generated simultaneously by 565 different sources within the same Policy Domain. For example, this 566 is a possible filename for the gzip file of a report to the Policy 567 Domain "example.net" from the Sending MTA "mail.sender.example.com": 569 "mail.sender.example.com!example.net!1470013207!1470186007!001.json.g 570 z" 572 5.2. Compression 574 The report SHOULD be subjected to GZIP compression for both email and 575 HTTPS transport. Declining to apply compression can cause the report 576 to be too large for a receiver to process (a commonly observed 577 receiver limit is ten megabytes); compressing the file increases the 578 chances of acceptance of the report at some compute cost. 580 5.3. Email Transport 582 The report MAY be delivered by email. To make the reports machine- 583 parsable for the receivers, we define a top-level media type 584 "multipart/report" with a new parameter "report-type="tlsrpt"". 586 Inside it, there are two parts: The first part is human readable, 587 typically "text/plain", and the second part is machine readable with 588 a new media type defined called "application/tlsrpt+json". If 589 compressed, the report should use the media type "application/ 590 tlsrpt+gzip". 592 In addition, the following two new top level message header fields 593 are defined: 595 "TLS-Report-Domain: Receiver-Domain TLS-Report-Submitter: Sender- 596 Domain" The "TLS-Report-Submitter" value MUST match the value found 597 in the filename and the [RFC5321] domain from the "contact-info" from 598 the report body. These message headers MUST be included and should 599 allow for easy searching for all reports submitted by a report domain 600 or a particular submitter, for example in IMAP [RFC3501]: 602 "s SEARCH HEADER "TLS-Report-Domain" "example.com"" 604 It is presumed that the aggregate reporting address will be equipped 605 to process new message header fields and extract MIME parts with the 606 prescribed media type and filename, and ignore the rest. These 607 additional headers SHOULD be included in the DKIM [RFC6376] signature 608 for the message. 610 The [RFC5322].Subject field for report submissions SHOULD conform to 611 the following ABNF: 613 tlsrpt-subject = %s"Report" FWS ; "Report" 614 %s"Domain:" FWS ; "Domain:" 615 domain-name FWS ; per RFC6376 616 %s"Submitter:" FWS ; "Submitter:" 617 domain-name FWS ; per RFC6376 618 %s"Report-ID:" FWS ; "Report-ID: 619 "<" id-left "@" id-right ">" ; per RFC5322 620 [CFWS] ; per RFC5322 621 ; (as with FWS) 623 The first domain-name indicates the DNS domain name about which the 624 report was generated. The second domain-name indicates the DNS 625 domain name representing the Sending MTA generating the report. The 626 purpose of the Report-ID: portion of the field is to enable the 627 Policy Domain to identify and ignore duplicate reports that might be 628 sent by a Sending MTA. 630 For instance, this is a possible Subject field for a report to the 631 Policy Domain "example.net" from the Sending MTA 632 "mail.sender.example.com". It is line-wrapped as allowed by 633 Subject: Report Domain: example.net 634 Submitter: mail.sender.example.com 635 Report-ID: <735ff.e317+bf22029@mailexample.net> 637 5.3.1. Example Report 639 From: tlsrpt@mail.sender.example.com 640 Date: Fri, May 09 2017 16:54:30 -0800 641 To: mts-sts-tlsrpt@example.net 642 Subject: Report Domain: example.net 643 Submitter: mail.sender.example.com 644 Report-ID: <735ff.e317+bf22029@example.net> 645 TLS-Report-Domain: example.net 646 TLS-Report-Submitter: mail.sender.example.com 647 MIME-Version: 1.0 648 Content-Type: multipart/report; report-type="tlsrpt"; 649 boundary="----=_NextPart_000_024E_01CC9B0A.AFE54C00" 650 Content-Language: en-us 652 This is a multipart message in MIME format. 654 ------=_NextPart_000_024E_01CC9B0A.AFE54C00 655 Content-Type: text/plain; charset="us-ascii" 656 Content-Transfer-Encoding: 7bit 658 This is an aggregate TLS report from mail.sender.example.com 660 ------=_NextPart_000_024E_01CC9B0A.AFE54C00 661 Content-Type: application/tlsrpt+gzip 662 Content-Transfer-Encoding: base64 663 Content-Disposition: attachment; 664 filename="mail.sender.example!example.com! 665 1013662812!1013749130.gz" 667 669 ------=_NextPart_000_024E_01CC9B0A.AFE54C00-- 670 ... 672 Note that, when sending failure reports via SMTP, sending MTAs MUST 673 NOT honor MTA-STS or DANE TLSA failures. 675 5.4. HTTPS Transport 677 The report MAY be delivered by POST to HTTPS. If compressed, the 678 report SHOULD use the media type "application/tlsrpt+gzip", and 679 "application/tlsrpt+json" otherwise (see section Section 6, "IANA 680 Considerations"). 682 A reporting entity SHOULD expect a "successful" response from the 683 accepting HTTPS server, typically a 200 or 201 HTTP code [RFC7231]. 684 Other codes could indicate a delivery failure, and may be retried as 685 per local policy. The receiving system is not expected to process 686 reports at receipt time, and MAY store them for processing at a later 687 time. 689 5.5. Delivery Retry 691 In the event of a delivery failure, regardless of the delivery 692 method, a sender SHOULD attempt redelivery for up to 24hrs after the 693 initial attempt. As previously stated the reports are optional, so 694 while it is ideal to attempt redelivery, it is not required. If 695 multiple retries are attempted, ideally they would be on a 696 logarithmic scale. 698 5.6. Metadata Variances 700 As stated above, there are a variable number of ways to declare 701 information about the data therein. If it should be the case that 702 these objects were to disagree, then the report data contained within 703 the JSON body MUST be considered the authoritative source for those 704 data elements. 706 6. IANA Considerations 708 The following are the IANA considerations discussed in this document. 710 6.1. Message headers 712 Below is the Internet Assigned Numbers Authority (IANA) Permanent 713 Message Header Field registration information per [RFC3864]. 715 Header field name: TLS-Report-Domain 716 Applicable protocol: mail 717 Status: standard 718 Author/Change controller: IETF 719 Specification document(s): this one 721 Header field name: TLS-Report-Submitter 722 Applicable protocol: mail 723 Status: standard 724 Author/Change controller: IETF 725 Specification document(s): this one 727 6.2. Report Type 729 This document registers a new parameter "report-type="tlsrpt"" under 730 "multipart/report" top-level media type for use with [RFC6522]. 732 The media type suitable for use as a report-type is defined in the 733 following section. 735 6.3. application/tlsrpt+json Media Type 737 This document registers multiple media types, beginning with Table 1 738 below. 740 +-------------+----------------+-------------+-------------------+ 741 | Type | Subtype | File extn | Specification | 742 +-------------+----------------+-------------+-------------------+ 743 | application | tlsrpt+json | .json | Section 5.3 | 744 +-------------+----------------+-------------+-------------------+ 745 Table 1: SMTP TLS Reporting Media Type 747 Type name: application 749 Subtype name: tlsrpt+json 751 Required parameters: n/a 753 Optional parameters: n/a 755 Encoding considerations: Encoding considerations are identical to 756 those specified for the "application/json" media type. See 757 [RFC7493]. 759 Security considerations: Security considerations relating to SMTP TLS 760 Reporting are discussed in Section 7. 762 Interoperability considerations: This document specifies format of 763 conforming messages and the interpretation thereof. 765 Published specification: Section 5.3 of this document. 767 Applications that use this media type: Mail User Agents (MUA) and 768 Mail Transfer Agents. 770 Additional information: 772 Magic number(s): n/a 774 File extension(s): ".json" 776 Macintosh file type code(s): n/a 778 Person & email address to contact for further information: See 779 Authors' Addresses section. 781 Intended usage: COMMON 783 Restrictions on usage: n/a 785 Author: See Authors' Addresses section. 787 Change controller: Internet Engineering Task Force 788 (mailto:iesg@ietf.org). 790 6.4. application/tlsrpt+gzip Media Type 792 +-------------+----------------+-------------+-------------------+ 793 | Type | Subtype | File extn | Specification | 794 +-------------+----------------+-------------+-------------------+ 795 | application | tlsrpt+gzip | .gz | Section 5.3 | 796 +-------------+----------------+-------------+-------------------+ 797 Table 2: SMTP TLS Reporting Media Type 799 Type name: application 801 Subtype name: tlsrpt+gzip 803 Required parameters: n/a 805 Optional parameters: n/a 807 Encoding considerations: Binary 809 Security considerations: Security considerations relating to SMTP TLS 810 Reporting are discussed in Section 7. 812 Interoperability considerations: This document specifies format of 813 conforming messages and the interpretation thereof. 815 Published specification: Section 5.3 of this document. 817 Applications that use this media type: Mail User Agents (MUA) and 818 Mail Transfer Agents. 820 Additional information: 822 Magic number(s): n/a 824 File extension(s): ".gz" 826 Macintosh file type code(s): n/a 828 Person & email address to contact for further information: See 829 Authors' Addresses section. 831 Intended usage: COMMON 833 Restrictions on usage: n/a 835 Author: See Authors' Addresses section. 837 Change controller: Internet Engineering Task Force 838 (mailto:iesg@ietf.org). 840 6.5. STARTTLS Validation Result Types 842 This document creates a new registry, "STARTTLS Validation Result 843 Types". The initial entries in the registry are: 845 +-------------------------------+ 846 | Result Type | 847 +-------------------------------+ 848 | "starttls-not-supported" | 849 | "certificate-host-mismatch" | 850 | "certificate-expired" | 851 | "tlsa-invalid" | 852 | "dnssec-invalid" | 853 | "sts-policy-invalid" | 854 | "sts-webpki-invalid" | 855 | "validation-failure" | 856 +-------------------------------+ 858 The above entries are described in section Section 4.3, "Result 859 Types." New result types can be added to this registry using "Expert 860 Review" IANA registration policy. 862 7. Security Considerations 864 SMTP TLS Reporting provides transparency into misconfigurations or 865 attempts to intercept or tamper with mail between hosts who support 866 STARTTLS. There are several security risks presented by the 867 existence of this reporting channel: 869 o Flooding of the Aggregate report URI (rua) endpoint: An attacker 870 could flood the endpoint with excessive reporting traffic and 871 prevent the receiving domain from accepting additional reports. 872 This type of Denial-of-Service attack would limit visibility into 873 STARTTLS failures, leaving the receiving domain blind to an 874 ongoing attack. 876 o Untrusted content: An attacker could inject malicious code into 877 the report, opening a vulnerability in the receiving domain. 878 Implementers are advised to take precautions against evaluating 879 the contents of the report. 881 o Report snooping: An attacker could create a bogus TLSRPT record to 882 receive statistics about a domain the attacker does not own. 883 Since an attacker able to poison DNS is already able to receive 884 counts of SMTP connections (and, absent DANE or MTA-STS policies, 885 actual SMTP message payloads), this does not present a significant 886 new vulnerability. 888 o Reports as DDoS: TLSRPT allows specifying destinations for the 889 reports that are outside the authority of the Policy Domain, which 890 allows domains to delegate processing of reports to a partner 891 organization. However, an attacker who controls the Policy Domain 892 DNS could also use this mechanism to direct the reports to an 893 unwitting victim, flooding that victim with excessive reports. 894 DMARC [RFC7489] defines a solution for verifying delegation to 895 avoid such attacks; the need for this is greater with DMARC, 896 however, because DMARC allows an attacker to trigger reports to a 897 target from an innocent third party by sending that third party 898 mail (which triggers a report from the third party to the target). 899 In the case of TLSRPT, the attacker would have to induce the third 900 party to send the attacker mail in order to trigger reports from 901 the third party to the victim; this reduces the risk of such an 902 attack and the need for a verification mechanism. 904 Finally, because TLSRPT is intended to help administrators discover 905 man-in-the-middle attacks against transport-layer encryption, 906 including attacks designed to thwart negotiation of encrypted 907 connections (by downgrading opportunistic encryption or, in the case 908 of MTA-STS, preventing discovery of a new MTA-STS policy), we must 909 also consider the risk that an adversary who can induce such a 910 downgrade attack can also prevent discovery of the TLSRPT TXT record 911 (and thus prevent discovery of the successful downgrade attack). 912 Administrators are thus encouraged to deploy TLSRPT TXT records with 913 a large TTL (reducing the window for successful attacks against DNS 914 resolution of the record) or to deploy DNSSEC on the deploying zone. 916 8. References 918 8.1. Normative References 920 [I-D.ietf-uta-mta-sts] 921 Margolis, D., Risher, M., Ramakrishnan, B., Brotman, A., 922 and J. Jones, "SMTP MTA Strict Transport Security (MTA- 923 STS)", draft-ietf-uta-mta-sts-11 (work in progress), 924 November 2017. 926 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 927 Requirement Levels", BCP 14, RFC 2119, 928 DOI 10.17487/RFC2119, March 1997, 929 . 931 [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: 932 Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, 933 . 935 [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode 936 for Internationalized Domain Names in Applications 937 (IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, 938 . 940 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 941 Resource Identifier (URI): Generic Syntax", STD 66, 942 RFC 3986, DOI 10.17487/RFC3986, January 2005, 943 . 945 [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 946 Specifications: ABNF", STD 68, RFC 5234, 947 DOI 10.17487/RFC5234, January 2008, 948 . 950 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., 951 Housley, R., and W. Polk, "Internet X.509 Public Key 952 Infrastructure Certificate and Certificate Revocation List 953 (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, 954 . 956 [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, 957 DOI 10.17487/RFC5321, October 2008, 958 . 960 [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, 961 DOI 10.17487/RFC5322, October 2008, 962 . 964 [RFC5891] Klensin, J., "Internationalized Domain Names in 965 Applications (IDNA): Protocol", RFC 5891, 966 DOI 10.17487/RFC5891, August 2010, 967 . 969 [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 970 Address Text Representation", RFC 5952, 971 DOI 10.17487/RFC5952, August 2010, 972 . 974 [RFC6068] Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' 975 URI Scheme", RFC 6068, DOI 10.17487/RFC6068, October 2010, 976 . 978 [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and 979 Verification of Domain-Based Application Service Identity 980 within Internet Public Key Infrastructure Using X.509 981 (PKIX) Certificates in the Context of Transport Layer 982 Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March 983 2011, . 985 [RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., 986 "DomainKeys Identified Mail (DKIM) Signatures", STD 76, 987 RFC 6376, DOI 10.17487/RFC6376, September 2011, 988 . 990 [RFC6522] Kucherawy, M., Ed., "The Multipart/Report Media Type for 991 the Reporting of Mail System Administrative Messages", 992 STD 73, RFC 6522, DOI 10.17487/RFC6522, January 2012, 993 . 995 [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication 996 of Named Entities (DANE) Transport Layer Security (TLS) 997 Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August 998 2012, . 1000 [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer 1001 Protocol (HTTP/1.1): Semantics and Content", RFC 7231, 1002 DOI 10.17487/RFC7231, June 2014, 1003 . 1005 [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", 1006 RFC 7405, DOI 10.17487/RFC7405, December 2014, 1007 . 1009 [RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493, 1010 DOI 10.17487/RFC7493, March 2015, 1011 . 1013 8.2. Informative References 1015 [RFC3207] Hoffman, P., "SMTP Service Extension for Secure SMTP over 1016 Transport Layer Security", RFC 3207, DOI 10.17487/RFC3207, 1017 February 2002, . 1019 [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 1020 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, 1021 . 1023 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration 1024 Procedures for Message Header Fields", BCP 90, RFC 3864, 1025 DOI 10.17487/RFC3864, September 2004, 1026 . 1028 [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection 1029 Most of the Time", RFC 7435, DOI 10.17487/RFC7435, 1030 December 2014, . 1032 [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning 1033 Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April 1034 2015, . 1036 [RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based 1037 Message Authentication, Reporting, and Conformance 1038 (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, 1039 . 1041 Appendix A. Example Reporting Policy 1043 A.1. Report using MAILTO 1045 _smtp-tlsrpt.mail.example.com. IN TXT \ 1046 "v=TLSRPTv1;rua=mailto:reports@example.com" 1048 A.2. Report using HTTPS 1050 _smtp-tlsrpt.mail.example.com. IN TXT \ 1051 "v=TLSRPTv1; \ 1052 rua=https://reporting.example.com/v1/tlsrpt" 1054 Appendix B. Example JSON Report 1055 { 1056 "organization-name": "Company-X", 1057 "date-range": { 1058 "start-datetime": "2016-04-01T00:00:00Z", 1059 "end-datetime": "2016-04-01T23:59:59Z" 1060 }, 1061 "contact-info": "sts-reporting@company-x.example", 1062 "report-id": "5065427c-23d3-47ca-b6e0-946ea0e8c4be", 1063 "policies": [{ 1064 "policy": { 1065 "policy-type": "sts", 1066 "policy-string": "version: STSv1\r\nmode: report\r\n 1067 mx: .mail.company-y.example\r\nmax_age: 86400", 1068 "policy-domain": "company-y.example", 1069 "mx-host": ".mail.company-y.example" 1070 }, 1071 "summary": { 1072 "total-successful-session-count": 5326, 1073 "total-failure-session-count": 303 1074 }, 1075 "failure-details": [{ 1076 "result-type": "certificate-expired", 1077 "sending-mta-ip": "98.136.216.25", 1078 "receiving-mx-hostname": "mx1.mail.company-y.example", 1079 "failed-session-count": 100 1080 }, { 1081 "result-type": "starttls-not-supported", 1082 "sending-mta-ip": "98.22.33.99", 1083 "receiving-mx-hostname": "mx2.mail.company-y.example", 1084 "failed-session-count": 200, 1085 "additional-information": "https://reports.company-x.example/ 1086 report_info ? id = 5065427 c - 23 d3# StarttlsNotSupported " 1087 }, { 1088 "result-type": "validation-failure", 1089 "sending-mta-ip": "47.97.15.2", 1090 "receiving-mx-hostname": "mx-backup.mail.company-y.example", 1091 "failed-session-count": 3, 1092 "failure-error-code": "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED" 1093 }] 1094 }] 1095 } 1097 Figure: Example JSON report for a messages from Company-X to Company- 1098 Y, where 100 sessions were attempted to Company Y servers with an 1099 expired certificate and 200 sessions were attempted to Company Y 1100 servers that did not successfully respond to the "STARTTLS" command. 1102 Additionally 3 sessions failed due to 1103 "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED". 1105 Authors' Addresses 1107 Daniel Margolis 1108 Google, Inc 1110 Email: dmargolis (at) google (dot com) 1112 Alexander Brotman 1113 Comcast, Inc 1115 Email: alex_brotman (at) comcast (dot com) 1117 Binu Ramakrishnan 1118 Yahoo!, Inc 1120 Email: rbinu (at) yahoo-inc (dot com) 1122 Janet Jones 1123 Microsoft, Inc 1125 Email: janet.jones (at) microsoft (dot com) 1127 Mark Risher 1128 Google, Inc 1130 Email: risher (at) google (dot com)