---
title: "PyMuPDF CVE-2026-120752（CVSS v3.1 7.5）: add_freetext_annot() の吹き出し線の点数を検証せず、スタックバッファーオーバーフローで落ちるか任意コード実行の恐れ"
url: https://n-t-p.io/worldsecurity/articles/pymupdf-add-freetext-annot-callout-stack-buffer-overflow-cve-2026-120752
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年11月3日
updated: 2026年11月3日
severity: 高
cve: CVE-2026-120752
---

# PyMuPDF CVE-2026-120752（CVSS v3.1 7.5）: add_freetext_annot() の吹き出し線の点数を検証せず、スタックバッファーオーバーフローで落ちるか任意コード実行の恐れ

> **TL;DR:** PyMuPDF 1.25.3 以上 2.0 未満の JM_set_annot_callout_line() が、吹き出し線の点を 3 要素のスタック配列に個数を検証せずコピーし、add_freetext_annot() に 4 点以上を渡すとスタックバッファーオーバーフローが起きる（CVE-2026-120752）。VulnCheck の CVSS v3.1 は 7.5（PR:L・AC:H）。KEV なし、EPSS は未算定。

**要点**
- JM_set_annot_callout_line() が、callout の点を固定長 3 要素のスタック配列に、渡された個数でコピーする（CWE-121）
- Page.add_freetext_annot() に 4 点以上を渡すと、クラッシュ、またはコード実行の恐れ。外部入力を callout に渡す構成が前提
- CVSS v3.1 は 7.5（AV:N/AC:H/PR:L）で high。NVD は Received。修正版は 2.0 とされる
- 1.x 系の修正有無、実際のコード実行の可否、悪用の実態は未確認。KEV なし、EPSS は未算定

PDF 処理ライブラリー PyMuPDF の JM_set_annot_callout_line() に、スタックバッファーオーバーフローの問題 CVE-2026-120752 が公開されました。NVD は 2026-11-02 に登録しました。呼び出し側が渡した吹き出し線（callout）の点を、3 要素の固定長スタック配列にそのままの個数でコピーするため、Page.add_freetext_annot() に 4 点以上を渡すとスタックフレームが上書きされ、プロセスのクラッシュやコード実行につながりうるとされています。NVD の状態は Received（未分析）で、評価は VulnCheck が付与した CVSS v3.1 の 7.5（HIGH）です。

## 概要

| 項目 | 内容 |
|---|---|
| CVE | CVE-2026-120752 |
| 製品 | PyMuPDF（Python 向け PDF 処理ライブラリー）。影響版は 1.25.3 以上 2.0 未満 |
| 問題 | JM_set_annot_callout_line() が、吹き出し線の点を固定長 3 要素のスタック配列に、呼び出し側が渡した個数でコピーする（CWE-121、スタックベースのバッファーオーバーフロー） |
| 攻撃条件 | ネットワーク経由（AV:N）、攻撃の難易度は高い（AC:H）、低い権限が必要（PR:L）、ユーザー操作不要 |
| 結果 | クラッシュ、またはコード実行の恐れ。機密性・完全性・可用性のすべてが High |

- 引き金になるのは、アプリケーションが Page.add_freetext_annot() の callout 引数に、利用者や外部の入力から決まる点の列を渡す場合です。PyMuPDF を呼び出すコードの側が、点の個数を制限していなければ成り立ちます。
- 本ライブラリーを使うだけで直ちに攻撃を受けるわけではなく、アプリケーションが外部入力を callout 引数に渡す構成が前提です。そのような構成がどの程度あるかは未確認です。

## CVSS

| 評価元 | 種別 | 版 | スコア | ベクター |
|---|---|---|---|---|
| VulnCheck | 主（Primary） | v3.1 | 7.5（HIGH） | AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| VulnCheck | 副（Secondary） | v4.0 | 7.7（HIGH） | AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H |

低い権限が必要で、攻撃の難易度も高いため、スコアは 9 未満です。本サイトでは high としています。

## 影響範囲

- PyMuPDF 1.25.3 以上 2.0 未満が影響を受けるとされています（VulnCheck の記載）。
- PDF のフリーテキスト注釈を、外部入力に基づいて自動生成するサービスやスクリプトが、影響を受けうる立場にあります。

## 修正

- 修正版は 2.0 とされています（影響版が「2.0 未満」のため）。上流にはコミット（d4298ead）が公開されています。
- 2.0 を含む各版の変更内容の詳細、および 1.x 系の修正版の有無は未確認です。
- 当面は PyMuPDF を 2.0 以降へ更新する計画を立ててください。

## 当面の対策（一般的なもの）

- add_freetext_annot() の callout 引数に渡す点の個数を、アプリケーション側で 3 点以下に制限する。外部入力をそのまま渡さない。
- PyMuPDF を 2.0 以降へ更新する。
- PDF の処理を、権限を絞った別プロセスやコンテナーで動かす。
- 緩和策が実際に有効かどうかは、利用環境での検証が必要です（未確認）。

## 数値と出典（2026-11-03 時点）

| 項目 | 内容 |
|---|---|
| NVD の状態 | Received |
| CVSS | v3.1 7.5（HIGH）、v4.0 7.7（HIGH）。いずれも VulnCheck |
| EPSS | 未算定（FIRST、2026-11-03 時点） |
| KEV | 掲載なし（CISA のカタログを確認） |
| 出典 | NVD、VulnCheck、PyMuPDF の修正コミットとリリース、FIRST、CISA |

## 未確認の点

- 実際の攻撃での悪用の有無（KEV 掲載なし、EPSS は未算定）。
- 実際にコード実行まで到達できるか（クラッシュ以上の影響は、記載上の「恐れ」の段階）。
- 1.x 系での修正版の有無と、2.0 の変更の詳細。
- 外部入力を callout 引数に渡している実際のアプリケーションの範囲。
- 緩和策が有効に働くかどうか。
- NVD による独自の分析（Received のため）。


## 出典
- [NVD CVE-2026-120752](https://nvd.nist.gov/vuln/detail/CVE-2026-120752) — NIST NVD
- [VulnCheck アドバイザリー](https://www.vulncheck.com/advisories/pymupdf-1.25.3-before-2.0-stack-buffer-overflow-via-add-freetext-annot-callout) — VulnCheck
- [PyMuPDF 修正コミット d4298ead](https://github.com/pymupdf/PyMuPDF/commit/d4298ead84ceeae1c9065c81cd9a275a1b092f5e) — PyMuPDF
- [PyMuPDF 2.0 リリース](https://github.com/pymupdf/PyMuPDF/releases/tag/2.0) — PyMuPDF
- [FIRST EPSS](https://api.first.org/data/v1/epss?cve=CVE-2026-120752) — FIRST
- [CISA KEV カタログ](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) — CISA

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/pymupdf-add-freetext-annot-callout-stack-buffer-overflow-cve-2026-120752