信頼境界をまたぐデータの検証
A 社は,取引先 B 社から受け取る受注データを自社の受注管理システムに取り込む機能を設計している。B 社のシステムが SFTP で CSV ファイルを A 社のファイルサーバに置き,A 社の取込みバッチがそれを読み込んで受注 DB に登録する。脅威モデリングのレビューで,設計者は「B 社とは契約を結んでおり,SFTP は公開鍵認証で B 社だけが接続できるので,CSV の内容は検証せずに登録する」と説明した。このデータフローに対する指摘として,最も適切なものはどれか。
- アSFTP の通信は暗号化されていて途中で改ざんされないので,CSV の内容は B 社のシステムが出力したとおりであり,内容の検証は不要である。
- イ信頼境界はインターネットと社内ネットワークとの境界にだけ設定するものであり,B 社との接続を専用線に変更すれば,このデータフローは信頼境界をまたがなくなる。
- ウ取込み時の検証は省略し,受注データを画面に表示する時点で出力エスケープを行えば,このデータフローに対する対策として十分である。
- エB 社のシステムから取込みバッチへのデータフローは信頼境界をまたぐので,接続元の認証とは別に,受け取った CSV の形式や値を取込みバッチ側で検証する必要がある。
正解と解説を見る
正解 エ
この問題の基礎知識
- 信頼境界は,管理主体や信頼の度合いが異なる要素の間でデータが受け渡される箇所であり,脅威モデリングでは信頼境界をまたぐデータフローに注目して脅威を洗い出す。
- 通信路の暗号化や接続元の認証で保証されるのは,誰が送ったかと途中で改ざんされていないことであり,送られたデータの内容が正しいことは保証されない。
- 入力値の検証には,形式(構文)の検証と,業務上妥当な値かどうか(意味)の検証がある。出力時のエスケープは表示時の XSS などを防ぐ対策であり,入力値の検証とは目的が異なる。
通信路の保護で保証されるのは,B 社のシステムが出力したデータが途中で変わらないことだけである。B 社のシステムの不具合や侵害によって出力された不正な値は,そのまま届く。受け取る側の規則を満たすかどうかは別に検証する必要がある。
信頼境界は,管理主体や信頼の度合いが変わる箇所に設定するものであり,通信回線の種類で決まるものではない。専用線に変えても,B 社の管理下にあるシステムから A 社のシステムにデータが渡ることは変わらない。
出力エスケープは表示時の XSS を防ぐ対策であり,数量や日付が業務上あり得ない値である,必須項目が欠けているといった不正なデータの登録は防げない。取込み時の検証の代わりにはならない。
取引先からのデータや社内の API からのデータであっても,信頼境界をまたいで受け取るものは,受け取る側で形式(構文)と値の妥当性(意味)を検証する。接続元を認証しても,データが受け取る側の規則を満たすことは保証されない。
照合の根拠(4 件)
- エ(正解)・ア(誤り)・イ(誤り): 取引先からのデータも信頼境界をまたぐなら受け取る側で検証する。暗号化された通信路や専用線のような内部の伝送路は,値が受け取る側の規則を満たすことを保証しない
Trusting internal sources: Validate data from internal APIs, partner feeds, queues, and stored records when it crosses a trust boundary. An internal transport does not establish that a value meets the receiving component's rules
OWASP Input Validation Cheat Sheet · Common Pitfalls(新しいタブで開きます) - エ(正解): 形式(構文)と値の妥当性(意味)の両方を検証する
Validate both syntax (the expected type and format) and semantics (whether the value makes sense for the operation).
OWASP Input Validation Cheat Sheet · Input Validation Strategies(新しいタブで開きます) - ウ(誤り): 入力検証は使用前に要件を満たすかを確かめ,不正な形式のデータや不正な業務処理を防ぐもので,表示時の出力エンコーディングでは代わりにならない
Input validation checks whether data meets an application's requirements before the application uses it. It reduces the risk of malformed data, invalid business operations, and excessive resource consumption.
OWASP Input Validation Cheat Sheet · Introduction(新しいタブで開きます) - エ(正解): 信頼境界をまたぐデータは検証によって安全に受け入れる
The purpose of validation logic is to allow data to safely cross the trust boundary - to move from untrusted to trusted.
CWE-501: Trust Boundary Violation · Extended Description(新しいタブで開きます)
イの「信頼境界は通信回線の種類で決まるものではない」は,OWASP Input Validation Cheat Sheet が partner feeds を信頼境界をまたぐデータの例に挙げ,内部の伝送路でも検証が要るとしていることから排除した。