情報セキュリティ

基本情報技術者試験安全でないデシリアライゼーション」の問題

情報セキュリティ情報セキュリティ難易度:hard
あるWebアプリは、利用者のブラウザに保存させた状態データを、サーバ受信時にそのままオブジェクトへ復元(デシリアライズ)して処理に用いている。攻撃者が復元処理を悪用し、改ざんしたデータでサーバ上の意図しない処理や任意コードの実行を狙う脆弱性が指摘された。根本対策として、最も適切なものはどれか。
そのまま復元せず、改ざんの有無の確認と、想定する型・内容への適合の検証を経てから扱う。
復元したオブジェクトを画面に出すときの文字サイズを大きくし、内容を確認しやすくするようにする。
状態データの保管場所をブラウザからサーバ側のログファイルへ移し、長期間にわたり残すようにする。
復元処理に要する時間を計測し、規定値より遅い場合はその処理を途中で打ち切るようにする。
正解
そのまま復元せず、改ざんの有無の確認と、想定する型・内容への適合の検証を経てから扱う。

脆弱性の原因は、利用者側という信頼できない場所から受け取ったデータを無検証でオブジェクトへ復元している点にある。改ざんされていないこと(署名やMACの検証)を確かめ、復元結果が想定する型・内容に適合することを検証してから扱う、あるいはそもそも信頼境界外のデータをそのまま復元せず安全な形式で受け渡すことで、改ざんデータによる不正処理や任意コード実行を防げる。

?選択肢ごとの解説

ウ ○脆弱性の原因は、利用者側という信頼できない場所から受け取ったデータを無検証でオブジェクトへ復元している点にある。改ざんされていないこと(署名やMACの検証)を確かめ、復元結果が想定する型・内容に適合することを検証してから扱う、あるいはそもそも信頼境界外のデータをそのまま復元せず安全な形式で受け渡すことで、改ざんデータによる不正処理や任意コード実行を防げる。
ア ×表示文字サイズの変更は見やすさの調整に過ぎず、改ざんデータが復元・実行される動作とは無関係である。
イ ×保存先をログへ変えても、受信データを無検証で復元する処理が残る限り脆弱性は解消せず、むしろログ肥大などの別問題を招く。
エ ×復元時間の計測とタイムアウトは性能・可用性の制御であり、改ざんされたデータの内容が悪用される問題を防げない。

くわしく

安全でないデシリアライゼーションは『信頼できないデータを、内部表現へ無検証で復元する』ことが本質である。対策の基本は信頼境界の意識で、外部由来データには完全性検証を施す、復元対象の型を限定する、可能なら復元自体を避けてデータのみをやり取りする設計とすることである。

本番での押さえどころ

試験のコツ

『利用者側のデータを無検証でオブジェクト復元』は安全でないデシリアライゼーション。対策は改ざん検知・型検証、または信頼境界外データをそのまま復元しない。

覚え方

外から来た包みを『中身を確かめず開けて実行』は危険。署名で封を確認し、型を縛ってから開ける。

よくある誤り

表示や保存、性能といった周辺の対策を選びがちだが、論点は『信頼できないデータをそのまま復元している』構造であり、完全性検証や復元の回避が要である。

情報セキュリティの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0103

【基本情報技術者試験】安全でないデシリアライゼーションの問題 — 解答・解説|ukamiru 過去問