Dart http库0.13.3之前版本存在CRLF头部注入漏洞

本文详细介绍了在Dart的http包0.13.3之前版本中发现的一个安全漏洞(CVE-2020-35669)。该漏洞允许攻击者通过控制HTTP方法并配合Request对象的使用,实现HTTP请求中的CRLF(回车换行)注入,即HTTP头部注入攻击。漏洞已在0.13.3版本中通过验证请求方法得到修复。

CVE-2020-35669:Dart http 包头部注入漏洞分析

漏洞概述

CVE-2020-35669 是一个在 Dart 编程语言的 http 包中被发现的中等严重性安全漏洞。该漏洞影响 0.13.3 之前的所有版本。

漏洞详情

当攻击者能够控制 HTTP 请求方法,并且应用程序直接使用 Request 对象时,就可能通过 HTTP 头部注入实现 CRLF 注入攻击。CRLF(回车换行)是 HTTP 协议中用于分隔头部字段和界定头部与正文的特殊字符。成功利用此漏洞可能导致请求走私、缓存投毒或跨站脚本(XSS)等安全风险。

影响范围

  • 受影响的包http (Pub)
  • 受影响版本:所有 < 0.13.3 的版本
  • 已修复版本0.13.3 及更高版本

技术背景

该漏洞的根本原因在于 http 包在构造 HTTP 请求时,未能对用户提供的输入(特别是 HTTP 方法字段)进行充分的验证和净化。攻击者可以在方法名中嵌入 \r\n(CRLF)字符,随后注入任意 HTTP 头部或修改请求结构。

修复方案

该漏洞已在提交 abb2bb1 中得到修复,修复的核心措施是对请求方法进行严格的验证,确保其中不包含可能用于注入的非法字符(如 CRLF)。

相关链接

  • 国家漏洞数据库(NVD):https://nvd.nist.gov/vuln/detail/CVE-2020-35669

  • 官方变更日志:https://pub.dev/packages/http/changelog#0133

  • 源代码仓库:dart-lang/http

严重性评估

  • CVSS v3.1 评分:6.1(中危)
  • 攻击向量:网络(AV:N)
  • 攻击复杂度:低(AC:L)
  • 所需权限:无(PR:N)
  • 用户交互:需要(UI:R)
  • 影响范围:发生变化(S:C)
  • 影响:对机密性和完整性造成低影响,对可用性无影响(C:L/I:L/A:N)

关联弱点

  • CWE-74:输出到下游组件时对特殊元素中和不当(‘注入’)

建议措施

所有使用 Dart http 包的开发者应立即将包版本升级至 0.13.3 或更高版本,以消除此安全风险。在升级前,应对代码进行审查,检查是否有直接使用 Request 构造函数并传入外部可控 HTTP 方法的情况。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计