当前位置: 首页 > news >正文

Swift-Prometheus 库因指标名称与标签未净化导致的指标劫持漏洞详解

未经净化的指标名称或标签可用于劫持导出的指标 · CVE-2024-28867

漏洞细节


swift / github.com/swift-server/swift-prometheus (Swift)

受影响版本
= 2.0.0-alpha.1

已修复版本
2.0.0-alpha.2

描述

影响
在使用未经净化的字符串值作为指标名称或标签的代码中(如下例所示):

let lang = try? request.query.get(String.self, at: "lang")
Counter(label: "language",dimensions: [("lang", lang ?? "unknown")]
)

攻击者可以利用这一点,发送包含换行符、}或类似字符的 ?lang 查询参数,这可能导致攻击者劫持导出的格式——包括创建无限数量的存储指标、增加服务器内存使用量或导致“虚假”指标。

补丁
用于净化标签的默认策略已移至库的更深处,防止非法字符出现在名称、标签键和值中。
指标名称和标签名称现在根据以下要求进行验证:指标名称需符合 [a-zA-Z_:][a-zA-Z0-9_:]*,指标标签名称需符合 [a-zA-Z_][a-zA-Z0-9_]*。标签值不被验证,因为它们允许包含任何Unicode字符。开发人员必须自行验证标签,不允许恶意输入。
此处采取的方法模仿了Go参考实现中的方法。

讨论
强烈建议不要使用未经净化的用户输入作为名称或标签,因为即使此漏洞已修复,它们仍可能导致指标无限增长,并造成拒绝服务攻击的机会——无论库对输入的净化效果有多好。我们强烈建议仅使用一组经过净化的值作为指标名称和标签。例如,“lang”标签应仅使用一组预期的、可用的值,并忽略其他值——否则,有决心的攻击者可以为每个不同的标签键创建一个指标,导致内存使用量无限增长,因为必须将具有不同值的指标保留在内存中。

验证标签值:
该库不会自动验证和替换作为标签值提供的字符串。
开发人员必须自行验证标签值,强烈建议只接受一组已知的良好值。
可以配置PrometheusSanitizer来应用您认为必要的任何验证:

let mySanitizer = PrometheusSanitizer { metricName, labels in// ... 您的逻辑 ...(metricName, labels)
}let registry = PrometheusCollectorRegistry(sanitizer: mySanitizer)
let factory = PrometheusMetricsFactory(factory: registry)// swift-metrics
MetricsSystem.bootstrap(factory)

变通方案
开发人员在使用用户输入作为指标名称、标签名称或值之前,必须对其进行验证。这遵循了不信任任何未经净化的用户输入的通用做法。

致谢
我们感谢 Jonas Dörr 提醒我们注意此问题。

参考

  • GHSA-x768-cvr2-345r
  • https://nvd.nist.gov/vuln/detail/CVE-2024-28867
  • swift-server/swift-prometheus@bfcd4bb

严重程度
中危

CVSS 总分 5.9 / 10

CVSS v3 基本指标

  • 攻击向量:网络
  • 攻击复杂性:高
  • 所需权限:无
  • 用户交互:无
  • 范围:未更改
  • 机密性:无
  • 完整性:高
  • 可用性:无

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N

EPSS 分数
0.171% (第39百分位)

弱点
CWE-74 - 下游组件输出中特殊元素的不当中和(注入)
产品使用来自上游组件的外部影响输入来构建全部或部分命令、数据结构或记录,但在将其发送到下游组件时,未中和或错误地中和了可能修改其解析或解释方式的特殊元素。

CVE ID
CVE-2024-28867

GHSA ID
GHSA-x768-cvr2-345r

源代码
swift-server/swift-prometheus
glyoVzOLZA9nMhz/bDHDAWzfRfZ0dSZtQUalpUyOmxf9mBFPgkeXEbZBirZppVktc8ooCOHg8n3ROXBaJxcfUg==
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.jsqmd.com/news/73035/

相关文章:

  • 一种融合身份证识别与炫彩活体检测而生的人脸核身技术,实现无感身份强认证
  • c++实验五
  • Linux命令记录
  • useradd、usermod、userdel命令详解
  • PRD太难写?AI生成的产品需求文档,到底能不能用?
  • 无监督通用流数据异常检测新方法SEAD
  • [ROI 2017] 前往大都会 (Day 1)
  • FreeRTOS任务卡死在prvTaskExitError
  • 2025年12月北京GEO服务商推荐 - 品牌2025
  • 2025 最新广州瑜伽馆TOP5 评测!优质瑜伽培训机构年度榜单发布,品牌沉淀+国际认证,传统瑜伽赋能身心平衡新生态 - 全局中转站
  • 《程序员修炼之道:从小工到专家》笔记8
  • 记录生活系统|记录美好|健康管理|基于java+Android+微信小程序的记录生活系统设计与构建(源码+数据库+文档)
  • 2025年12月GEO服务商参考指南:聚焦豆包、DeepSeek,布局AI时代内容触达 - 品牌2025
  • day4 Java基础4
  • 2025最新广州瑜伽团课机构TOP5评测!广州地区优质瑜伽馆年度盘点,权威认证+资深师资+多元课程榜单发布,引领都市身心疗愈新方式 - 全局中转站
  • 从抽象符号到现实应用:图论的奥秘 - 教程
  • 深入解析:动作识别3——mmpose和mmaction2
  • 数论基础学习笔记
  • 红外线桥切机哪家好?2025优质桥切机厂家推荐 - 栗子测评
  • [最优化技术] 3-1 黄金分割法
  • 2025采购指南:PE 自封袋厂家实力榜,江西透明自封袋哪家 - 栗子测评
  • 表格数据滚到底部-自动加载更多
  • 水刀切割机哪家好?2025热门切石机厂家权威排名汇总 - 栗子测评
  • 水刀切割机哪家好?2025热门切石机厂家权威排名汇总 - 栗子测评
  • AI狂飙时代:我们该学什么,未来在哪?
  • 石材抛光机厂家哪家好?2025热门石材切割机厂家口碑推荐 - 栗子测评
  • 矿山机哪家好?2025靠谱矿山开采设备厂家排名推荐 - 栗子测评
  • TVS 保护管工厂哪家好?这些优质厂商值得关注 - 栗子测评
  • 深圳视频推广哪家好?当然选深圳市万创科技有限公司 - 栗子测评
  • 2025温州ip打造推荐:这8家公司助力品牌形象升级 - 栗子测评