評価・監視・ガードレール

出力バリデーションとは|形の検査を500件すべて通り、89件が業務で落ちた

出力バリデーションとは何をするのか形の検査と何が違うのか何を決まりとして書けばよいのか

金額がマイナス5000円でも、型としては数値です。形の検査は通ります。

形がすべて正しい500件を用意しました。形の検査は500件すべて通り、業務の決まりで89件が落ちました

この記事の要点

  • 形の検査は500件すべて通る
  • 業務の決まりで89件が落ちる
  • 内訳は5種類にほぼ均等
  • 生成物は信用しない前提で受ける

形の検査を500件すべて通り、89件が業務で落ちた

形としては正しい出力だけを用意して測りました。中身の決まりを別に置かないと、そのまま通ります。

出力バリデーションが何を拾うのかを、実際に走らせて測りました。用意したのは形がすべて正しい500件です。

崩したのは中身だけです。金額が上限を超える、金額が負、区分が一覧にない、日数が0、番号の形式が違うの5種類を混ぜました。

javascript
const KUBUN = ['商談', '納品', '研修', '会議'];
const ruleOk = (o) => (
  o.金額 > 0 && o.金額 <= 100000 &&
  KUBUN.includes(o.区分) &&
  o.日数 >= 1 && o.日数 <= 30 &&
  /^A-\d{4}$/.test(o.申請番号)
);
text
検査                    通った件数  落ちた件数
形だけ見る                         500件          0件
形と業務の決まりを見る                   411件         89件

形の検査をすり抜けた中身の内訳

崩れ方                    件数
申請番号の形式が違う                   20件
区分が一覧にない                     19件
日数が0                         19件
金額が上限を超える                    17件
金額が負                         14件

上の表を見てください。形の検査では500件すべてが通りました。落ちたのは0件です。

型としては正しい

落ちなかった理由は単純です。マイナス5000円も数値、打合せという区分も文字列だからです。

型を見る検査では、この違いは分かりません。値そのものを見る決まりを別に置く必要があります。

内訳は偏っていない

89件の内訳は14件から20件までで、5種類にほぼ均等に散らばりました。

つまり1つの決まりを書けば済むわけではありません。5つ書いて初めて89件が拾えます。1つだけなら20件です。

形は全部通る。落ちるのは値を見たときだけ。

形だけ見る通った500落ちた500件形と業務の決まり41189500件−0%(0件)出力500件での実測。落ちた89件の内訳は5種類に14件から20件ずつ散らばった。
図1 ── 検査ごとに落ちた件数
出典OWASP GenAI Security Project「LLM05:2025 Improper Output Handling」2026-08-18 確認
Improper Output Handling refers specifically to insufficient validation, sanitization, and handling of the outputs generated by large language models
原文OWASP GenAI Security Project「LLM05:2025 Improper Output Handling」 この内容の有効期限2027-02-18

出力バリデーションとは何をするのか

生成された内容を、外から来たデータと同じように扱って確かめます。信用してよい相手として扱わないことが前提です。

出力バリデーションは、生成された内容が業務の決まりに合っているかを確かめる仕組みです。

信用しない前提で受ける

生成AIは自社の仕組みの一部に見えますが、出してくる内容は毎回変わります。決まった形で返す保証もありません。

OWASPも、モデルを他の利用者と同じように扱い、何も信用しない立場を取って、モデルからの応答に適切な入力検証を適用することを挙げています。外から来たデータと同じ扱いです。

何を決まりにするか

  1. 数の範囲。金額の上限と下限、件数の上限
  2. 選べる値の一覧。区分や状態は、決めた語のどれか
  3. 形式。番号や日付の書き方
  4. 項目どうしの関係。開始日が終了日より後になっていないか

4番目は形の検査では書けません。項目を1つずつ見ても分からないためです。ここは業務の決まりとして書くことになります。

決まりはどこから持ってくるか

新しく考える必要はありません。いま人が目で確かめている項目が、そのまま決まりになります。

前の節で使った5つも、申請書を見る人が確かめている内容です。機械で判定できるものから書けば足ります

余談 この計測での注意

崩れ方の割合はこちらで置いた値です。実際の割合は、指示の書き方と扱う業務で変わります。形そのものの検査はスキーマ検証の記事で扱っています。この記事の500件は、そちらの検査をすべて通る前提で作りました。

出典OWASP GenAI Security Project「LLM05:2025 Improper Output Handling」2026-08-18 確認
Treat the model as any other user, adopting a zero-trust approach, and apply proper input validation on responses coming from the model
原文OWASP GenAI Security Project「LLM05:2025 Improper Output Handling」 この内容の有効期限2027-02-18

出力バリデーションを飛ばしたときの危なさ

生成物をそのまま次の処理に渡すと、業務のずれだけでなく、実行や表示の問題につながります。

出力バリデーションを置かないと、生成物がそのまま次の処理に流れます。渡す先によって危なさが変わります。

実行に渡す場合

いちばん危ないのは、生成された文字列をそのまま実行する作りです。

OWASPも例として、モデルの出力がシステムのシェルや同様の機能に直接入り、遠隔からのコード実行につながる場合を挙げています。

画面に出す場合

画面に埋め込む場合も同じです。OWASPは、利用者に返すモデルの出力を符号化して、望まないコード実行を抑えることを挙げています。

生成された文章に記法が混ざっていると、表示のつもりが動作になります。表示側での対処はXSSの記事でも扱っています。

影響の広がり

OWASPは、この扱いの不備が突かれた場合の結果としてブラウザでの攻撃に加え、内部への要求の偽造や権限の昇格を挙げています。

前の節の89件は業務のずれでしたが、渡す先が実行や表示なら別の被害になります。同じ検査が両方に効きます。

渡す先によって、飛ばしたときの被害が変わる。

充足 2 / 4値そのものを見る決まりを置いている形の検査は500件すべて通り、89件が業務の決まりで落ちた画面に出す前に符号化している記法が混ざると、表示のつもりが動作になる生成物をそのまま実行に渡しているシェルなどに直接入ると、遠隔からのコード実行につながる形の検査を通れば安全だと考えているマイナス5000円も型としては数値なので通る出力500件での実測にもとづく。形の検査だけでは89件が素通りした。
図2 ── 出力バリデーションの点検項目
出典OWASP GenAI Security Project「LLM05:2025 Improper Output Handling」2026-08-18 確認
Encode model output back to users to mitigate undesired code execution by JavaScript or Markdown.
原文OWASP GenAI Security Project「LLM05:2025 Improper Output Handling」 この内容の有効期限2027-02-18

よくある質問

形の検査だけでは足りないのですか
足りません。この計測では形の検査を500件すべてが通り、そのうち89件が業務の決まりに反していました。
どんな決まりを書けばよいですか
金額の範囲、選べる区分の一覧、日数の下限と上限、番号の形式です。すでに人が目で確かめている内容がそのまま使えます。
落ちたものはどうするのですか
生成し直すか、人に回します。そのまま次の処理に渡さないことが要点です。
画面に出す場合も検査が要りますか
要ります。出力をそのまま埋め込むと、表示側で意図しない動きにつながる場合があります。

まとめ

  • 生成物が業務の決まりに合っているかを確かめる
  • 形の検査は500件すべて通る
  • 業務の決まりで89件が落ちる
  • 生成物は信用しない前提で扱う

今日から始められること

  1. 人が目で確かめている項目を書き出す
  2. そのうち機械で判定できるものを選ぶ
  3. 形の検査の後ろに、その判定を置く
  4. 落ちたものの扱いを決める

実務で組んだ出力バリデーションのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る