pulpul 日本の試験

基本情報技術者 概念書 · セキュリティ

セキュリティ実装技術

要点と定義

セキュリティ実装技術は、通信、Webアプリケーション、データベースなどに対策を組み込み、盗聴、不正接続、情報流出、不正操作などの脅威を抑える技術です。どの対策が必要かは、攻撃の入口と守る対象に応じて判断します。通信を暗号化しても、Webアプリに脆弱性があればデータベースを不正操作されることがあり、対策は複数の層で考えます。

SQLインジェクションは、Webアプリが受け取った入力をSQL文の構文として誤って解釈し、意図しないデータベース操作が行われる脆弱性です。プレースホルダを使うと、SQL文と入力値を分けて扱えます。文字列連結でSQL文を組み立てる場合は、DBMSに応じたエスケープも必要ですが、入力長の制限だけではSQLの構文混入を防げません。攻撃者がWebアプリへの入力を通じてデータベースを不正操作する点が、この攻撃の判断に必要です。

クロスサイトスクリプティング(XSS)は、攻撃者が入力した内容がWebページに出力され、利用者のブラウザでスクリプトとして実行される脆弱性です。出力する値をHTMLなどの文脈に応じてエスケープし、ブラウザが意図しないコードとして扱わないようにします。SQLインジェクション対策の入力値処理とは守る対象が異なります。WAFはWeb通信を検査し、不正な通信を遮断する補助策です。脆弱性そのものへの修正や検査と組み合わせて多層防御にします。脆弱性検査でXSSが見つかった場合に、WAFを追加対策として検討する判断にも関係します。

データベースのアクセスログは、誰がいつどのようなアクセスをしたかを調べる手掛かりです。記録がなければ、事故後に流出の原因や対象範囲を特定しにくくなります。ログは取得するだけでなく、調査に使える内容と方法で保管します。バックアップは障害などからの復旧に役立ちますが、アクセス記録の代わりにはなりません。情報の保管期間は利用目的に照らして定め、期間を過ぎた情報を消去すれば、不要な情報を持ち続けることで生じる流出時の影響を抑えられます。一方、必要な情報まで早く消すと、購入支援や再ログインなど想定した利用ができません。ログ取得、復旧用バックアップ、保管期間の設定は、それぞれ異なる目的の対策です。

パケットフィルタリングは、送信元・宛先のネットワークやポート番号などの条件で通信を許可または遮断する方法です。必要な通信だけを許可するよう、通信の方向も含めて設定します。疎通確認の結果は、実際に試した通信についての証拠です。SSHやpingが成功しても、別のポートを使うリモートデスクトップ通信まで正常とは限りません。また、開発セグメントから事務セグメントのファイルサーバへアクセスさせるには、その宛先方向の通信も許可されているかを確かめます。ルータを冗長化し、セグメントごとに使うルータを分けて負荷を分散する構成は、一方に障害が発生したときに他方を使用できるようにすることで可用性を高めます。

メールの第三者中継とは、自社のメールサーバが外部からの接続を受け、送信者と受信者がどちらも自社外のメールを中継してしまう状態です。ログから判断するときは、接続元IPアドレスに加えて送信者と受信者のドメインを確認します。社外からの接続だけでは第三者中継とは判断できません。

公開鍵暗号でメールを受信者だけが読めるようにする場合、送信者は受信者の公開鍵で暗号化し、受信者は対応する自分の秘密鍵で復号します。送信者確認や改ざん検知を目的とするディジタル署名とは役割が異なります。SPFは、受信側が送信元ドメインの情報とメール送信サーバのIPアドレスを照合し、そのドメインから送信を許可されたサーバかを確認する仕組みです。本文の暗号化やディジタル署名をする仕組みではありません。

適用条件と例

商品番号で検索するWebアプリを考えます。入力値をSQL文に直接連結すると、入力にSQLの構文が含まれた場合に検索条件が変わるおそれがあります。プレースホルダで商品番号を命令文と別の値として渡せば、入力をSQL構文として解釈させにくくできます。入力を数字に限定する検証も有用ですが、それだけをSQLインジェクション対策の根拠にはできません。プレースホルダを使えない実装で文字列連結を避けられないときは、DBMSに応じたエスケープを行います。これらの違いを理解すると、SQLインジェクションの原因と適切な対策を判断できます。

利用者のコメントをページに表示する場合は、出力時にHTMLの文脈に応じてエスケープし、コメント中の記号がタグやスクリプトとして実行されないようにします。これはXSS対策であり、SQL文への入力値の扱いとは別です。WAFは攻撃らしいWeb通信を検出・遮断する補助策ですが、検知漏れや誤検知もあり得ます。安全な実装や脆弱性検査を置き換えるものではありません。検査でXSSが判明した場合は該当箇所を修正し、アプリ全体も調査した上で、WAFのようなシステム側の対策を組み合わせる考え方が有効です。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む