ApostropheCMS 修复 @apostrophecms/user 对象对公众可见的权限缺陷(viewRole 未对公众生效)
ApostropheCMS 修复一处权限缺陷:viewRole 虽对访客、贡献者等角色正确生效,却未应用于普通公众,理论上可使 @apostrophecms/user 这类受保护内容类型被访问。
ApostropheCMS 修复一处权限缺陷:viewRole 虽对访客、贡献者等角色正确生效,却未应用于普通公众,理论上可使 @apostrophecms/user 这类受保护内容类型被访问。
GitHub 安全公告指出,@modelcontextprotocol/sdk 1.31.0 及之前所有版本、@modelcontextprotocol/client 2.0.0 至 2.2.0 的 HTTP 客户端传输与 OAuth 请求会跟随任意源的重定向。
为什么值得看:公告说明了跨源重定向会泄露自定义请求头与 OAuth 凭据,并给出受影响版本区间和升级版本,便于使用该 SDK 的开发者核对。
@modelcontextprotocol/sdk 1.24.0 至 1.31.0 的实验性 tasks 功能(taskStore)未校验任务由哪个会话创建,共用同一 InMemoryTaskStore 的客户端可互相列出、读取和取消任务。
launch-editor 的 escapeCmdArgs() 在 Windows 上未转义 `%`,当环境变量含恶意值时可能导致内容被执行。受影响需同时满足:用户使用 Windows、攻击者可放置含 `&` 或 `%` 的恶意文件名,并能注入恶意环境变量或为该文件添加 NTFS 备用数据流。
follow-redirects 1.16.0 为修复 CVE-2026-40895 / GHSA-r4q5-vmmm-2653 引入的 sensitiveHeaders 选项存在正则转义缺陷:escapeRegex 未转义 `^`、`|`、`[`、`{`、`}`,声明含 `^` 或 `|` 的自定义凭据头名时过滤规则无法匹配该头,跨域重定向时凭据被静默转发给攻击者。
follow-redirects 在跟随跨域或协议降级重定向时,本应移除 Authorization、Proxy-Authorization、Cookie 及调用方声明的 sensitiveHeaders。
为什么值得看:公告指出数组形式 headers 会让跨域凭据剥离静默失效,并给出可复现脚本与修复思路,便于使用该库的 Node.js 项目自查。
ApostropheCMS 使用的 sanitize-html 在处理 nonTextTags 时忽略 htmlparser2 传入的 isImplied 标志,从内部闭合仍未关闭的祖先元素会提前结束丢弃区,使本应被丢弃的内容被渲染。问题位于 index.js 的 onclosetag 处理逻辑(:638、:644),修复建议是隐式闭合不得结束丢弃区。
ApostropheCMS 的 @apostrophecms/page 模块 move() 在跨父级移动时才校验目标父级的 create 权限,同父级重排会短路该检查,低权限编辑者可重排受限父级下其他子页面的 rank。该缺陷属 CWE-862/CWE-639,仅影响同级排序,不泄露字段内容也不影响可用性,且需管理员预先将可编辑页面置于受限父级下这一非默认树结构。
ApostropheCMS 的 CAPTCHA 验证将用户提供的 widget token 未编码直接拼入服务端验证 URL/body,构造的 token 可向 reCAPTCHA/hCaptcha 验证请求注入查询参数。
GitHub 安全公告 GHSA-hhvr-8m24-qqr3 指出,ApostropheCMS 的跨域会话迁移把一次性会话令牌作为 URL 查询参数 `?aposCrossDomainSessionToken` 下发并存入 Mongo 缓存,任何拿到该令牌的客户端无需凭证即可继承目标用户的完整会话(含 `passport.user`)。
为什么值得看:公告给出可复现的 curl 步骤,说明跨域会话令牌放在 URL 查询参数里如何被无凭证客户端直接接管会话。
ApostropheCMS 的 POST /api/v1/@apostrophecms/rich-text-widget/generate-csv-table 接口在 Multer 写入文件后才校验扩展名,拒收路径不清理临时文件,未认证请求者仅凭普通 CSRF cookie 即可重复上传大文件持续占用临时磁盘空间。
@apostrophecms/ai-helper 的图片接受接口用 req.baseUrl 拼接服务端抓取地址,未配置全局 base URL 时该值来自请求的 Host 头,持有编辑权限的账号可借此让服务器向任意源发起 GET 请求。
GitHub 安全公告披露 ApostropheCMS 核心页面 REST API 存在授权绕过,getOne 与 all=1 树形导出使用 .permission(false),绕过页面类型的 viewRole、visibility: private 和 visibility: loginRequired 检查。
为什么值得看:公告给出了匿名读取私有页面的 curl 复现步骤,并指出 getOne 与 all=1 两处缺少权限校验的代码位置。
ApostropheCMS 4.32.2 的 GET /api/v1/:_id/locales 及页面等价路由未应用其他读路由强制执行的 publicApiCheckAsync 校验,未认证调用者可凭任意文档 _id 确认文档是否存在并枚举其 locale 发布状态。
CVE-2026-53606 的修复不完整:sanitize-html 2.17.7 中,meta http-equiv=refresh 的 content 内嵌 URL 未经过 naughtyHref() 校验,仍可保留 javascript:、data: 及任意 https: 目标。
ApostropheCMS 的 PATCH /api/v1/@apostrophecms/settings/password 改密接口在校验当前密码时未调用登录模块的失败计数、延迟或锁定机制,持有有效认证会话的攻击者可反复猜解当前密码而不被锁定。
ApostropheCMS 的 apos.http.parseQuery() 未过滤 __proto__、constructor、prototype 键,管理界面在每次已登录页面加载时用 window.location.search 调用该函数。
为什么值得看:披露给出可复现的 URL 载荷与 sink 调用栈,并区分了 ApostropheCMS 自身缺陷与 Vue 框架通用 gadget。
GitHub 安全公告披露 @apostrophecms/import-export 的 update-by-key 功能存在 NoSQL 注入:导入文档的 `slug:key` 值被直接用作 MongoDB 查询值,归档经 EJSON 解析后 `{ $ne: null }` 等操作符会成为有效值,从而匹配并覆盖导入者并未指定的既有文档。
为什么值得看:公告说明该模块的 update-key 查询值未经清洗,并给出与 GHSA-79qf-vqgc-7xx3 同类的修复思路,便于开发者对照自查。
Crass 在将结果钳制到 `Float::MAX` 之前,会对 CSS 科学计数法数值执行无界幂运算,解析攻击者可控 CSS 字符串的应用可能因极小输入消耗过多 CPU 与内存,甚至崩溃。该问题已在 Crass 1.0.7 中修复。
klauspost/compress 的 s2 包中,s2.NewDict() 存在有符号整数溢出漏洞,攻击者提供 uvarint 编码的 repeat 值超过 MaxInt64 的字典即可绕过重复索引校验。随后调用 Dict.Encode() 时,负值 repeat 经 unsafe.Pointer 算术导致越界内存访问,进程以 SIGSEGV 崩溃,构成拒绝服务。
markdown-it 在启用 typographer: true 时,大量开引号后接不匹配的闭引号会使 smartquotes 规则反复扫描整个开引号栈,造成二次复杂度处理时间,可被用于对处理不可信输入的应实施 DoS。
GitHub 安全公告指出,Hono 在路由前已解码一次请求路径,serveStatic 解析文件前又解码一次,构造畸形百分号编码序列可让路由匹配编码形式、实际却解析到真实目录,从而绕过挂载在静态前缀上的中间件。文件仍在配置的根目录内解析,并非目录穿越;仅提供公开文件的应用不受影响。
为什么值得看:公告说明了二次解码导致静态路径中间件被绕过的条件,挂载鉴权中间件的应用可据此判断是否受影响。
LoopX 的 serve-status 服务对所有响应(含无需认证的 GET 路由)返回 Access-Control-Allow-Origin: *,任意网站可用 fetch() 在无交互情况下读取控制面状态与 goal 仓库内 .md 文件内容。
Mercury 默认以无 token 方式运行 JupyterLab,黑名单未包含 /api/kernels,未认证客户端可创建内核并通过 websocket 发送 execute_request 执行任意 Python 代码。
为什么值得看:材料在已修复旧通告的 3.2.4 版本上实测复现了免认证 RCE,并附可运行 PoC,说明黑名单思路无法覆盖内核接口。
Graphify 的 Fortran 提取器 `_cpp_preprocess` 中 `-nostdinc -I /dev/null` 加固不完整,无法阻止 `.F`/`.F90`/`.F95`/`.F03`/`.F08` 文件通过绝对路径或路径穿越的 `#include` 读取主机任意文件。
GHSA-953h-535j-jg2v 通告指出,agent-router 的 MCP 代理在会话 ID 中内嵌调用者 JWT 的 sub 声明用于防劫持,但会话恢复路径从不校验该声明,任何拿到会话 ID 的客户端都能恢复该会话并调用 tools/call、resources/read 等方法。
为什么值得看:公告指出会话恢复路径未校验会话 ID 内嵌的 subject,且 Helm 默认种子为公开固定值,可据此判断多租户部署的会话隔离风险。
Mercury 的 mercury_app/block_handler.py 中 BLOCKED_PATTERNS 列表缺少一个逗号,使前两条规则被合并,/api/terminals 不再被拦截,任何无需认证的攻击者都能通过该接口启动 OS shell。
为什么值得看:公告给出完整复现步骤与修复代码,可对照检查自家 Mercury 部署是否暴露 /api/terminals。
Mercury 的 mr.Markdown 组件用 python-markdown 把输入转成 HTML 后未经清洗,直接写入 ipywidgets.HTML 的 innerHTML,应用渲染不可信数据时脚本会在其他查看者浏览器中执行。
russh 的 SSH 服务器在 publickey 认证中从不比对请求声明的算法与签名自带算法,导致请求可声明 rsa-sha2-512 而实际提交 ssh-rsa(SHA-1)签名仍通过验证,影响 0.34.0-beta.1 至 0.63.3 及当前 main 的全部版本。
russh 的 agent 服务端 add_key 对每条 5 字节 SSH_AGENT_CONSTRAIN_LIFETIME 记录都启动一个 tokio 任务,且请求失败时不回滚,攻击者可用少量流量耗尽 agent 进程内存。
aiohttp 被发现存在多处内存占用过度或无上限、以及 CPU 消耗过高的问题,攻击者可通过特制请求触发资源耗尽。该通告未给出 CVE 编号、受影响版本区间与修复版本。
AIOHTTP 的共享 Cookie 未强制 Secure 属性,标记为 Secure 的共享 Cookie 可能通过未加密请求发送。该问题属于 Cookie 安全属性未生效,可能导致敏感 Cookie 在明文传输中暴露。
aiohttp server 的 keepalive 超时未覆盖请求的初始阶段,攻击者可在不发送任何数据的情况下无限期保持空闲连接。官方建议的规避方案是使用带合理 keepalive 限制的反向代理,这也是所有生产部署的推荐做法。
ip-address 10.7.4 之前版本存在拒绝服务漏洞,Address6 构造函数在匹配区域标识符时呈二次时间复杂度,输入中包含大量 % 字符即可耗尽 CPU 并导致应用停滞。该通告已被撤回,因与 GHSA-rxp7-6hxx-x8q5 重复,仅保留以维护外部引用。
GitHub 将 Dependabot 的恶意软件通告从 npm 扩展至 PyPI,并借助 OpenSSF 的 malicious-packages 数据覆盖 npm、PyPI、Maven、RubyGems、NuGet、Go、crates.io 和 PHP Composer 八大生态。