GitHub Advisoryadvisory · Packagist
GHSA-f7hx-fqxw-rvvj Insufficient output escaping of attachment names in PHPMailer
HIGH
Official page ↗
- Aliases
- CVE-2020-13625
- Ecosystem
- Packagist
- Packages
- phpmailer/phpmailer
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- Weaknesses
- CWE-116
- Reviewed
- 2020-05-27
Affected packages
• Packagist phpmailer/phpmailer: < 6.1.6 → fixed in 6.1.6
Description
Impact
CWE-116: Incorrect output escaping.
An attachment added like this (note the double quote within the attachment name, which is entirely valid):
$mail->addAttachment('/tmp/attachment.tmp', 'filename.html";.jpg');
Will result in a message containing these headers:
Content-Type: application/octet-stream; name="filename.html";.jpg"
Content-Disposition: attachment; filename="filename.html";.jpg"
The attachment will be named `filename.html`, and the trailing `";.jpg"` will be ignored. Mail filters that reject `.html` attachments but permit `.jpg` attachments may be fooled by this.
Note that the MIME type itself is obtained automatically from the *source filename* (in this case `attachment.tmp`, which maps to a generic `application/octet-stream` type), and not the *name* given to the attachment (though these are the same if a separate name is not provided), though it can be set explicitly in other parameters to attachment methods.
Patches
Patched in PHPMailer 6.1.6 by escaping double quotes within the name using a backslash, as per RFC822 section 3.4.1, resulting in correctly escaped headers like this:
Content-Type: application/octet-stream; name="filename.html\";.jpg"
Content-Disposition: attachment; filename="filename.html\";.jpg"
Workarounds
Reject or filter names and filenames containing double quote (`"`) characters before passing them to attachment functions such as `addAttachment()`.
References
CVE-2020-13625.
PHPMailer 6.1.6 release
For more information
If you have any questions or comments about this advisory:
• Open an issue in the PHPMailer repo
Related
Alias · CVE (1)
- CVE-2020-13625 PHPMailer before 6.1.6 contains an output escaping bug when the name of a file attachment contains a double quote character. vulnerability
Weakness · CWE (1)
- CWE-116 Improper Encoding or Escaping of Output weakness
References
- https://github.com/PHPMailer/PHPMailer/security/advisories/GHSA-f7hx-fqxw-rvvj web
- https://nvd.nist.gov/vuln/detail/CVE-2020-13625 advisory
- https://github.com/PHPMailer/PHPMailer/commit/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3 web
- https://github.com/PHPMailer/PHPMailer package
- https://github.com/PHPMailer/PHPMailer/releases/tag/v6.1.6 web
- https://lists.debian.org/debian-lts-announce/2020/06/msg00014.html web
- https://lists.debian.org/debian-lts-announce/2020/08/msg00004.html web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/EFM3BZABL6RUHTVMXSC7OFMP4CKWMRPJ web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/SMH4TC5XTS3KZVGMSKEPPBZ2XTZCKKCX web
- https://usn.ubuntu.com/4505-1 web
- http://lists.opensuse.org/opensuse-security-announce/2020-07/msg00067.html web
- http://lists.opensuse.org/opensuse-security-announce/2020-07/msg00085.html web