教科書一覧へ

セキュア開発(バイデザイン原則と脆弱性対策)

頻出約 16 分情報セキュリティ対策・情報セキュリティ実装技術

概要

本ユニットでは、システムを作る前の設計段階から安全性を組み込む「バイデザイン」の考え方(セキュリティ/プライバシーバイデザイン)と、それを具体化するセキュア実装(XSS対策・SQLインジェクション対策・セキュリティパッチ)を学びます。脆弱性は後から直すほど費用も被害も大きく、開発・保守分野で頻出のテーマです。

用語5

セキュリティバイデザイン

企画・設計の上流段階から安全性を組み込んでおく開発思想。

セキュリティバイデザインは、システムを作り始めた後でセキュリティを後付けするのではなく、企画・設計といった最も上流の段階からあらかじめ安全対策を織り込んでおく考え方です。 脆弱性は完成後に見つかるほど修正の手戻りが大きく、被害も深刻になります。上流で安全を作り込めば、低コストで強固なシステムになります。試験では「後付けではなく初めから」という方針が要点で、次に出てくるプライバシーバイデザインと対(つい)で問われやすい点に注意しましょう。

たとえ家を建てる際、完成後に防犯設備を増設するのではなく、設計図の段階で鍵・窓・配置まで防犯を考えておくようなもの。最初から安全を織り込みます。

記憶フックセキュリティバイデザインといえば設計の上流から安全を組み込む

企画

設計

実装

運用・保守

セキュリティを最初から組み込む

プライバシーバイデザイン

設計の段階から個人情報の保護をあらかじめ組み込む考え方。

プライバシーバイデザインは、セキュリティバイデザインの「プライバシー版」で、システムやサービスを設計する段階から個人情報・プライバシーの保護をあらかじめ組み込んでおく考え方です。 個人データの収集を必要最小限にする、初期設定を保護寄りにするといった配慮を、後付けではなく設計時から行います。試験では、セキュリティバイデザインが「安全全般」を、プライバシーバイデザインが「個人情報保護」を対象とする点の違いを区別できることがポイントです。

たとえ新しいお店を設計するとき、来店者の個人情報をどう守るかを最初の間取りやルール作りの段階で決めておくようなもの。営業を始めてから慌てて対策しません。

記憶フックプライバシーバイデザインといえば設計段階から個人情報保護を組み込む

クロスサイトスクリプティング対策

悪意あるスクリプトをWebページに埋め込まれる攻撃を防ぐ対策。

クロスサイトスクリプティング(XSS)は、掲示板や入力フォームなどに攻撃者が悪意あるスクリプト(プログラム)を仕込み、それを見た利用者のブラウザ上で勝手に実行させる攻撃です。Cookieの盗み取りなどに悪用されます。 対策の中心は、利用者が入力した文字をそのまま表示せず、特別な記号を無害な文字へ置き換える「エスケープ処理(サニタイジング)」です。試験では、次のSQLインジェクションが『データベース』を狙うのに対し、XSSは『閲覧者のブラウザ』を狙う点の違いが問われます。

たとえ伝言板に他人を陥れる仕掛けの書き込みをされないよう、貼り出す前に危険な文言を無害な表現に直してから掲示するようなものです。

記憶フッククロスサイトスクリプティング対策といえばエスケープ処理でスクリプトを無害化

SQLインジェクション対策

入力値で不正なSQL文を実行させる攻撃からDBを守る対策。

SQLインジェクションは、入力欄に悪意あるSQL文の断片を入れ込み、データベースに本来許されない命令を実行させる攻撃です。情報の不正取得や改ざん・削除を招きます。 代表的な対策は、SQL文の骨組みと入力値をあらかじめ分離する「プレースホルダ(バインド機構)」の利用で、入力をSQLの命令として解釈させないようにします。入力値チェック(サニタイジング)も併用します。試験では、XSSが閲覧者を狙うのに対し、SQLインジェクションは『データベース』を狙う攻撃である点の区別が頻出です。

たとえ受付の記入用紙に勝手な命令文を書き足されても、係員が「名前欄は名前」としか扱わず命令として実行しないルールにしておくようなものです。

記憶フックSQLインジェクション対策といえばプレースホルダでSQLと入力を分離

利用者の入力値

プレースホルダで分離

SQL文の骨組み

データベースを保護

セキュリティパッチ

発見された脆弱性を修正するために配布される更新プログラム。

セキュリティパッチは、OSやソフトウェアで見つかった脆弱性(セキュリティ上の欠陥)を修正するために、開発元が配布する更新プログラムです。 脆弱性は運用開始後にも次々と発見されるため、パッチを速やかに適用して穴をふさぐことが、攻撃を防ぐ保守上の基本対策になります。適用を怠ると既知の脆弱性を突かれて被害を受けます。試験では、上流の設計対策(バイデザイン)に対し、セキュリティパッチが『運用・保守段階で脆弱性を継続的に是正する』対策である点が問われます。

たとえ建物に後から見つかった欠陥を、メーカーから届く補修部品で塞ぐようなもの。放っておくとそこから侵入されてしまいます。

記憶フックセキュリティパッチといえば脆弱性を修正する更新プログラム

まとめ

要点

  • セキュア開発は『設計の上流から安全を組み込む』バイデザイン思想と、その具体的なセキュア実装・保守対策の両輪からなる。
  • セキュリティバイデザインは安全全般、プライバシーバイデザインは個人情報保護を、いずれも後付けでなく設計段階から組み込む。
  • XSS対策は閲覧者のブラウザを狙う攻撃をエスケープ処理(サニタイジング)で防ぎ、SQLインジェクション対策はデータベースを狙う攻撃をプレースホルダで防ぐ。
  • XSSとSQLインジェクションは『狙う対象(ブラウザかデータベースか)』の違いで区別するのが試験の頻出ポイント。
  • セキュリティパッチは運用・保守段階で発見された脆弱性を継続的に是正する更新プログラムで、速やかな適用が基本対策。

記憶フック一覧

  • セキュリティバイデザイン: セキュリティバイデザインといえば設計の上流から安全を組み込む
  • プライバシーバイデザイン: プライバシーバイデザインといえば設計段階から個人情報保護を組み込む
  • クロスサイトスクリプティング対策: クロスサイトスクリプティング対策といえばエスケープ処理でスクリプトを無害化
  • SQLインジェクション対策: SQLインジェクション対策といえばプレースホルダでSQLと入力を分離
  • セキュリティパッチ: セキュリティパッチといえば脆弱性を修正する更新プログラム

関連の過去問演習は今後のアップデートで追加予定です。