当前位置: 首页 > 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.zskr.cn/news/83549.html

相关文章:

  • c++实验五
  • PRD太难写?AI生成的产品需求文档,到底能不能用?
  • [ROI 2017] 前往大都会 (Day 1)
  • 2025年12月GEO服务商参考指南:聚焦豆包、DeepSeek,布局AI时代内容触达 - 品牌2025
  • 2025最新广州瑜伽团课机构TOP5评测!广州地区优质瑜伽馆年度盘点,权威认证+资深师资+多元课程榜单发布,引领都市身心疗愈新方式 - 全局中转站
  • 记录生活系统|记录美好|健康管理|基于java+Android+微信小程序的记录生活系统设计与构建(源码+数据库+文档)
  • 深入解析:动作识别3——mmpose和mmaction2
  • 水刀切割机哪家好?2025热门切石机厂家权威排名汇总 - 栗子测评
  • 矿山机哪家好?2025靠谱矿山开采设备厂家排名推荐 - 栗子测评
  • 深圳全网营销哪家好?首选深圳市万创科技有限公司 - 栗子测评
  • 深圳建站公司哪家好?推荐深圳市万创科技有限公司 - 栗子测评
  • 深圳抖音推广哪家好?首选推荐深圳市万创科技有限公司 - 栗子测评
  • 推荐一家贴片磁珠工厂?深圳市递百科技术有限公司为首选 - 栗子测评
  • 谷歌优化公司服务商有哪些? - 栗子测评
  • 水质多参数分析仪行业十大品牌/国产国内品牌排行榜/十大国产品牌行业优秀企业行业品牌排名公司推荐榜 - 品牌推荐大师1
  • 2025年重庆全屋定制家具公司口碑榜:推荐的5款木质家具产品 - 讯息观点
  • 2025年锂电池销售厂家有哪些靠谱的选择? - 讯息观点
  • lower_bound和upper_bound
  • [曼奇] 基础班 第62节 73头像4
  • 12.11晚课
  • 12月11日总结 - 作业----
  • 详细介绍:Redis 零基础入门到实战教程(视频教程)
  • 2025内部孔隙率检测公司选哪家?这8家专业机构值得关注 - 栗子测评
  • Claude自动调用Skills解析xlsx文件
  • 对“挑战”的元回应:从“解决难题”到“演化生态”
  • 2025年台式高速离心机/土壤/微型/微孔板/高速冷冻离心机国内知名厂家/有哪些厂家/哪家性价比 - 品牌推荐大师1
  • 2025年如何选择排名前列的泵送剂外加剂品牌厂家? - 讯息观点
  • Meta闭源模型vocado、Google Gemini TTS情绪语音、微软智能体新高度
  • 什么?全面解析机器人流程自动化的定义与核心概念就是RPA
  • 全网热议!2025专业HIFI耳机口碑推荐,甄选5款优质耳机 - 讯息观点