---
title: "Python のエージェント基盤 Agno で、FunctionCall の field_type が eval() に渡されコード実行の恐れ（CVE-2026-35002）: 2.3.24 で修正"
url: https://n-t-p.io/worldsecurity/articles/agno-functioncall-field-type-eval-code-execution-2026-35002
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年10月31日
updated: 2026年10月31日
severity: 緊急
cve: CVE-2026-35002
---

# Python のエージェント基盤 Agno で、FunctionCall の field_type が eval() に渡されコード実行の恐れ（CVE-2026-35002）: 2.3.24 で修正

> **TL;DR:** Agno の 2.3.24 より前で、FunctionCall の入力項目 field_type が eval() に渡され、影響を受けた入力が届くと任意の Python コードが実行され得る不具合（CVE-2026-35002、GitHub は Critical、CVSS v3.1 は 9.8、CWE-95）。修正版は 2.3.24。KEV 掲載なし、EPSS は 0.86%。

**要点**
- FunctionCall の user_input_fields の field_type が eval() に渡されていた。値を攻撃者が左右できるとプロセス内で任意の Python コードが実行される（GitHub: Critical、CVSS v3.1 9.8）
- API・Web 画面・信頼できないツール出力などから影響を受けた入力が届く構成が該当すると勧告は説明している
- 修正版は 2.3.24（PyPI 2026-01-08 UTC）。修正コミット cbf6755 は eval() を固定の型対応表の参照に置き換えた。勧告の公開は 10/27
- 勧告は安全な回避策はないとし、更新を求めている。更新できない場合は信頼できない入力を field_type に届かせない
- NVD は Analyzed（v3.1 9.8）。勧告の本文は 9.3 とあり食い違う。KEV 掲載なし、EPSS 0.86%（10/30）

エージェントを組むための Python ライブラリ Agno に、`FunctionCall` の入力項目 `field_type` が Python の `eval()` にそのまま渡される不具合（CVE-2026-35002）があり、2.3.24 で修正されました。GitHub Advisory（GHSA-m4w4-3r8h-jw98）は 10/27 公開で、深刻度は Critical、CWE-95（動的評価コードの不適切な無害化）です。GitHub の CVSS v3.1 は 9.8（AV:N/AC:L/PR:N/UI:N）です。CISA の KEV には載っていません。EPSS は 0.86%（10/30 時点）です。

## 何が起きるか

- 勧告によると、`FunctionCall` の `user_input_fields` にある `field_type` が文字列のとき、型名の解釈のために `eval()` が呼ばれていました。この値を攻撃者が左右できると、Agno のプロセス内で任意の Python コードを実行させられます。
- 勧告は、API や Web 画面、信頼できないツールの出力などを通じて、利用者の影響を受けた `FunctionCall` の入力が Agno に届く構成が該当するとしています。
- 実行されるのは Agno を動かしているプロセスの権限です。エージェントの基盤は、外部サービスの認証情報や社内システムへのアクセス権を持つことが多いため、侵害されたときの影響は広がり得ます（これは本記事の見立てです）。

## 修正の内容

- 修正コミット cbf6755（2026-01-07 UTC、PR #5912）は、`eval()` を固定の対応表（`str`・`int`・`float`・`bool`・`list`・`dict`）の参照に置き換えています。表にない文字列は `str` として扱い、型オブジェクトはそのまま、それ以外は `str` にします。
- 差分は `models/base.py` の同期・非同期の 2 か所と、`tools/function.py` の `UserInputField.from_dict` の `eval()` で、同じ置き換えが入っています。
- 修正版 2.3.24 は PyPI で 2026-01-08（UTC）に公開されました。勧告の公開（10/27）は、その約 9.5 か月後です。NVD への登録は 2026-04-02 でした。この間の経緯は未確認です。

## 影響を受ける版と条件

- 勧告・NVD ともに、2.3.24 より前の版が対象です。修正版は 2.3.24 で、勧告は現行の 2.6 系にも修正が含まれると書いています。本記事の確認時点の PyPI の最新版は 3.1.12 です。
- 回避策について、勧告は「安全な回避策はない」とし、更新できない場合は信頼できない入力が `field_type` に届かないようにするよう求めています。
- 自社のエージェントで該当するかは、`agno` の版、ユーザー入力を受ける `FunctionCall` の使用（人が入力を補う機能を含む）、ツールやモデルの出力を経由した入力の有無で確かめられます。

## 対応

1. Agno を 2.3.24 以上（できれば現行の版）に更新します。
2. 古い版を固定している環境（ロックファイルやコンテナ）がないか、依存関係を洗い出します。
3. すぐ更新できない場合は、利用者や外部ツールの出力が `field_type` に到達しない構成かを確認します（勧告が示す対処の読み取りです）。
4. エージェントを動かすプロセスは、最小の権限・隔離した環境で動かし、保存された認証情報や外向きの通信を絞ります。
5. 該当版を動かしていたサーバーで、心当たりのないプロセス起動や外向きの通信がなかったかを確認します。

## 未確認の点

- NVD の状態は Analyzed です。NVD 自身の CVSS v3.1 は 9.8、別の登録元（VulnCheck）の CVSS v4.0 は 9.3 です。なお、GitHub の勧告の本文には「CVSS 3.1 score: 9.3」とあり、勧告の構造化データ（9.8）と食い違っています。どちらが正しいかは確認できていません。
- 悪用の報告は見つかっていません（KEV 掲載なし）。EPSS は今後変わり得ます。
- 実際の環境での再現は確認していません。記載は勧告、修正コミット、公開情報に基づきます。


## 出典
- [GitHub Advisory GHSA-m4w4-3r8h-jw98（CVE-2026-35002）](https://github.com/advisories/GHSA-m4w4-3r8h-jw98) — GitHub
- [修正コミット cbf6755](https://github.com/agno-agi/agno/commit/cbf675521d4d2281925a051784a3b94172e56416) — GitHub
- [Agno 修正 PR #5912](https://github.com/agno-agi/agno/pull/5912) — GitHub
- [Agno v2.3.24 リリース](https://github.com/agno-agi/agno/releases/tag/v2.3.24) — GitHub
- [PyPI agno](https://pypi.org/project/agno/) — PyPI
- [NVD CVE-2026-35002](https://nvd.nist.gov/vuln/detail/CVE-2026-35002) — NIST NVD
- [FIRST EPSS API](https://api.first.org/data/v1/epss?cve=CVE-2026-35002) — FIRST
- [CISA Known Exploited Vulnerabilities Catalog（JSON）](https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json) — CISA

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/agno-functioncall-field-type-eval-code-execution-2026-35002