金額がマイナス5000円でも、型としては数値です。形の検査は通ります。
形がすべて正しい500件を用意しました。形の検査は500件すべて通り、業務の決まりで89件が落ちました。
形としては正しい出力だけを用意して測りました。中身の決まりを別に置かないと、そのまま通ります。
出力バリデーションが何を拾うのかを、実際に走らせて測りました。用意したのは形がすべて正しい500件です。
崩したのは中身だけです。金額が上限を超える、金額が負、区分が一覧にない、日数が0、番号の形式が違うの5種類を混ぜました。
const KUBUN = ['商談', '納品', '研修', '会議'];
const ruleOk = (o) => (
o.金額 > 0 && o.金額 <= 100000 &&
KUBUN.includes(o.区分) &&
o.日数 >= 1 && o.日数 <= 30 &&
/^A-\d{4}$/.test(o.申請番号)
);
検査 通った件数 落ちた件数 形だけ見る 500件 0件 形と業務の決まりを見る 411件 89件 形の検査をすり抜けた中身の内訳 崩れ方 件数 申請番号の形式が違う 20件 区分が一覧にない 19件 日数が0 19件 金額が上限を超える 17件 金額が負 14件
上の表を見てください。形の検査では500件すべてが通りました。落ちたのは0件です。
落ちなかった理由は単純です。マイナス5000円も数値、打合せという区分も文字列だからです。
型を見る検査では、この違いは分かりません。値そのものを見る決まりを別に置く必要があります。
89件の内訳は14件から20件までで、5種類にほぼ均等に散らばりました。
つまり1つの決まりを書けば済むわけではありません。5つ書いて初めて89件が拾えます。1つだけなら20件です。
形は全部通る。落ちるのは値を見たときだけ。
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も、モデルを他の利用者と同じように扱い、何も信用しない立場を取って、モデルからの応答に適切な入力検証を適用することを挙げています。外から来たデータと同じ扱いです。
4番目は形の検査では書けません。項目を1つずつ見ても分からないためです。ここは業務の決まりとして書くことになります。
新しく考える必要はありません。いま人が目で確かめている項目が、そのまま決まりになります。
前の節で使った5つも、申請書を見る人が確かめている内容です。機械で判定できるものから書けば足ります。
崩れ方の割合はこちらで置いた値です。実際の割合は、指示の書き方と扱う業務で変わります。形そのものの検査はスキーマ検証の記事で扱っています。この記事の500件は、そちらの検査をすべて通る前提で作りました。
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件は業務のずれでしたが、渡す先が実行や表示なら別の被害になります。同じ検査が両方に効きます。
渡す先によって、飛ばしたときの被害が変わる。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る