Aim Web API 远程代码执行

admin 2024年3月7日21:44:38评论8 views字数 1748阅读5分49秒阅读模式

摘要

  • 漏洞类型:远程代码执行(RCE)
  • 产品:目标
  • 版本:>= 3.0.0(afaik)
  • 受影响的端点: /api/runs/search/run/
  • 严重性:临界

描述

aim项目中发现了一个关键的远程代码执行漏洞,特别是在/api/runs/search/run/端点中。该漏洞允许攻击者在服务器上执行任意代码,这可能会导致系统完全泄露。

易受弱的代码

该漏洞存在于theaimaim/web/api/runs/views.py文件中的therunrun_search_api函数中。该代码没有正确限制用户对RunView对象的访问,允许通过query参数执行任意代码。

Aim Web API 远程代码执行

开始分析🧐

@runs_router.get('/search/run/', response_model=RunSearchApiOut, responses={400: {'model': QuerySyntaxErrorOut}})
async def run_search_api(q: Optional[str] = '', limit: Optional[int] = 0, offset: Optional[str] = None, ...):
from aim.sdk.sequence_collection import QueryRunSequenceCollection
repo = get_project_repo()
query = checked_query(q)
repo._prepare_runs_cache()
runs = QueryRunSequenceCollection(repo=repo, query=query, paginated=bool(limit), offset=offset, ...)
streamer = run_search_resul
t_streamer(runs, limit, ...)
return StreamingResponse(streamer)

功能呼叫链

  1. 端点处理程序:

    • 端点:/api/runs/search/run/
    • 位置:aim/web/api/runs/views.py
    • 线路:#80

    • 代码:
      streamer = run_search_result_streamer(runs, limit, ...)

  2. 迭代超过运行:

    • 位置aim/web/api/runs/utils.py

    • 线路:#258

    • 功能:run_search_result_streamer
    • 代码:
      for run_trace_collection, progress in runs.iter_runs():
      # ...

  3. QueryRunSequenceCollection.iter_runs()

    • 位置aim/sdk/sequence_collection.py

    • 线路:#249

    • 方法:

    • iter_runs
    • 代码:
      self.query.check(run=run_view)

  1. Query.check():
  2. 位置:aim/storage/query.py

  3. 线路:#190

  4. 方法:check

  5. 代码:
    eval(self._checker, restricted_globals, namespace)

概念验证(PoC)

以下POC演示了RCE漏洞:

run.run.dataframe().query("@run.run.__class__.__init__.__globals__['logging'].os.system('id')")

利用对RunView对象的无限制访问,允许任意代码执行,导致服务器完全泄露,包括网络访问、文件系统、秘密和云元数据。

减轻

为了缓解此漏洞,建议:

  • 限制用户访问:限制用户访问DataFrame等危险对象。

  • 实施适当的输入验证:确保用户输入,特别是查询中使用的输入,经过适当验证和消毒,以防止代码注入。

影响

这种RCE漏洞可能会产生严重的后果,包括但不限于:

  • 网络泄露:攻击者可以执行任意命令,这可能会导致网络泄露。

  • 文件系统访问:对文件系统的完全访问允许攻击者读取、写入和删除文件,从而损害系统完整性和可用性。

  • 访问秘密:访问文件系统内的敏感数据,包括环境变量、秘密和潜在的云元数据。

  • 数据泄露:执行任意代码的能力为攻击者提供了泄露敏感信息的手段。

原文始发于微信公众号(jacky安全):Aim Web API 远程代码执行

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月7日21:44:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Aim Web API 远程代码执行http://cn-sec.com/archives/2557189.html

发表评论

匿名网友 填写信息