#3717·quivr

[安全] 硬码的弗拉斯克秘密密钥允许会议 cookie 伪造

作者: failsafesecurity创建于 2026年9月6日更新于 2026年9月9日

□ 安全查找: 硬码的 Flask 密钥允许会议 cookie 伪造

** 严重性**:高级(CVSS 8.7) ** CWE**:CWE-321 ** 仓库**:Vibe公司/quivr

说明

在'examples/quivr-whiper/app.py'中,'app.secret key ="secret"'是硬码可猜的弗拉斯克会话签名密钥. 由于会话状态('session ['session id]')用于在全球"brains' dict"中查取每个用户的大脑,任何知道密钥的人都可以伪造签名的会话饼干并冒充/劫持其他用户的会话.

影响

复制人:用已知的密钥"",将一个签名的弗拉斯克会话饼干设置"session ["session id"]"到另一个用户的ID来访问"brains [session id]". 允许会话伪造并访问其他用户的大脑.

补救

以 FLASK SECRET KEY 环境变量中加载的值替换硬码的 Flask 密钥, 如果未设置, 启动时会快速失败, 因此应用程序不会使用可猜测的签名密钥运行 。 操作员必须提供一个强而随机的秘密(例如来自一个秘密管理器)并旋转任何先前被曝光的密钥. 这关闭了会话-cookie伪造向量,因为攻击者已经无法知道用于验证会话的签名密钥["会话 id"].

  • 概念证明

{"描述":"用已知的密钥""secret"',将一个签名的弗拉克会话饼干设置'session ["session id"'到另一个用户的ID来访问'brains[session id]'. 允许会话伪造并访问其他用户的大脑"","复制":{"步骤":[{"命令":"D=$(mktemp-d)\猫"$D/poc2.py\从花瓶导入花瓶Flask\n. secretCookie secret: setCookie Interface\nSECRET =" ssecret" session ID =" 受害者 abc123 私人 session" snbrains = {VCTIM SESSION ID:\' 受害者' 脑对象'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' . . . . . . .