首页 网络安全 正文
  • 本文约2389字,阅读需12分钟
  • 16
  • 0

Langflow关键API端点缺少身份验证CVE-2026-21445

摘要

栋科技漏洞库关注到 Langflow 在1.7.0.dev45之前版本中存在安全漏洞,该漏洞现已被追踪为CVE-2026-21445,漏洞CVSS 4.0评分8.8。

Langflow是一个用于构建和部署人工智能驱动的代理和工作流的工具,兼顾开发者代码导出、部署需求,是快速落地 LLM 业务高效工具。

一、基本情况

Langflow 是「LLM 应用开发的可视化脚手架」,核心价值是降低 LangChain 等框架的使用门槛,让非开发人员也能参与 LLM 应用构建。

Langflow关键API端点缺少身份验证CVE-2026-21445

 

Langflow 是开源的低代码/可视化开发工具,专为快速构建、调试和部署基于大语言模型(LLM)应用设计,降低LLM应用开发技术门槛。

栋科技漏洞库关注到 Langflow 在1.7.0.dev45之前版本中存在安全漏洞,该漏洞现已被追踪为CVE-2026-21445,漏洞CVSS 4.0评分8.8。

二、漏洞分析

CVE-2026-21445漏洞是 Langflow受影响版本中存在多个关键API端点缺少身份验证控制的问题,漏洞的评分较高,且POC代码已被公开。

这个问题允许任何未经验证的用户访问敏感的用户对话数据、交易历史记录,并执行破坏性操作,包括消息删除。

这影响了处理个人数据和系统操作的端点,这些操作应该需要适当的授权。

具体来说,该漏洞存在于src/backend/base/langflow/api/v1/monitor.py中的三个API端点中

这些端点缺少所需的依赖项dependencies=[Depends(get_current_active_user)]身份验证依赖项:

受影响的端点:

1、GET /api/v1/monitor/messages (Line 61)

@router.get("/messages")  # ❌ Missing authentication
async def get_messages(
    session: DbSession,
    flow_id: Annotated[UUID | None, Query()] = None,
    session_id: Annotated[str | None, Query()] = None,
    # ... other parameters
) -> list[MessageResponse]:

2、GET /api/v1/monitor/transactions (Line 183)

@router.get("/transactions")  # ❌ Missing authentication
async def get_transactions(
    flow_id: Annotated[UUID, Query()],
    session: DbSession,
    params: Annotated[Params | None, Depends(custom_params)],
) -> Page[TransactionTable]:

3、DELETE /api/v1/monitor/messages/session/{session_id} (Line 165)

@router.delete("/messages/session/{session_id}", status_code=204)  # ❌ Missing authentication
async def delete_messages_session(
    session_id: str,
    session: DbSession,
):

不一致性证据:

同一文件中的其他端点正确实现了身份验证:

@router.get("/messages/sessions", dependencies=[Depends(get_current_active_user)])  # ✅ Properly secured
@router.delete("/messages", status_code=204, dependencies=[Depends(get_current_active_user)])  # ✅ Properly secured

三、POC概念验证

复现完整步骤以展示漏洞:

1、先决条件:

启动一个Langflow服务器实例

确保未提供任何身份验证头或API密钥

管理员已设置登录后刷新可查看

2、预期行为与实际行为:

预期:所有请求都应返回401 Unauthorized(未授权)状态码

实际:所有请求均返回包含敏感数据的成功响应或执行破坏性操作

3、影响

漏洞类型:身份验证和授权失效(OWASP Top 10 - A01:2021)

严重性:高

受影响者:

所有Langflow用户:个人对话数据遭未经授权访问

系统管理员:交易日志已公开

4、具体影响:

数据泄露:未经授权访问包含潜在敏感个人信息的用户对话

隐私侵犯:未经同意即泄露交易历史和用户活动模式

数据销毁:恶意行为者可以在未经授权的情况下删除用户对话历史记录

合规风险:可能违反数据保护法规(如GDPR、CCPA等)

系统智能:攻击者可以收集有关系统使用模式和用户行为的信息

5、攻击场景:

恶意用户访问专有对话数据

恶意用户删除其他用户的对话历史记录

自动抓取所有用户对话以收集数据

进行侦察攻击以了解系统架构和使用模式

6、推荐修复方法:

为所有受影响的端点添加身份验证依赖:

@router.get("/messages", dependencies=[Depends(get_current_active_user)])
@router.get("/transactions", dependencies=[Depends(get_current_active_user)])
@router.delete("/messages/session/{session_id}", dependencies=[Depends(get_current_active_user)])

环境:

Langflow版本:当前主分支

受影响的组件:API v1监控端点

认证系统:使用get_current_active_user实现FastAPI的依赖注入

Langflow关键API端点缺少身份验证CVE-2026-21445

四、影响范围

langflow-base <= 1.7.0.dev45

五、修复建议

langflow-base >= 1.7.1

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接