CRLF 对电子邮件生成有何威胁?

信息安全 注射 smtp
2021-08-28 05:14:11

我有一个应用程序,其中代码扫描程序已在与电子邮件生成相关的某些类中识别出 CRLF 注入可能性。

我了解如何在基于 URL 的攻击中使用 CRLF 注入来对付我,但谷歌对来自电子邮件的威胁一直保持沉默。我们是否关心在 SMTP 对话中注入不同的地址,如下所示:

http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_transport_example

?

或者是其他东西?

2个回答

根据您的应用程序如何创建实际的 RAW 电子邮件请求,可以插入换行符来修改收件人、抄送、密件抄送等。

看看这个例子

在这种情况下,目标是能够向其他收件人发送匿名电子邮件。可以在邮件标头中指定许多附加字段(请参阅 [RFC 822])。例如“抄送”(Carbon Copy),它将消息的副本发送到作为参数给出的电子邮件地址。更好的选择是使用“密件抄送”(Blind Carbon Copy),它发送消息的抄送,就像使用“抄送”标头一样,只是作为参数给出的收件人电子邮件地址不会显示给多个收件人的标头. 正如 [RFC 822] 中所指定的,必须为每个标题添加一个换行符。(换行)字符的十六进制值为 0x0A。

  Sender: "sender@anonymous.www%0ACc:recipient@someothersite.xxx%0ABcc:somebloke@grrrr.xxx,someotherbloke@oooops.xxx"

  Subject: ahem
  Message: "My Message"

将导致

 To: recipient@victim.xxx 
 Subject: ahem
 From: sender@anonymous.xxx
 Cc:recipient@someothersite.xxx
 Bcc:somebloke@grrrr.xxx,someotherbloke@oooops.xxx

 My Message...

此外,请查看一些OWASP 指南,以及CWE-93下的一些示例

这是一个容易受到 CRLF 注入攻击的 PHP 邮件生成脚本示例本质上,有问题的代码是:

$email=$_POST['email'];
$headers="From: {$email}\r\nReply-To: {$email}"; //create headers
mail('opps@example.com',$subject,$content,$headers); //mails it

在这种情况下,设计不佳的 PHP API 很难正确使用。因此,如果攻击者发出email参数以CRLFCC: victim@example.net.

我邀请您将您的代码提交给Code Review,在那里我们可以检查您代码的所有方面,包括潜在的安全问题,例如 CRLF 注入。