情報漏洩を防ぐ!対策を考えよう

デジタル化を知りたい
『インジェクション攻撃』って、よく耳にするんですけど、具体的にどんな攻撃なんですか?

デジタル化研究家
簡単に言うと、ウェブサイトの入力フォームなどから、悪いプログラムを送り込んで、サーバーを不正に操作する攻撃のことだよ。例えば、問い合わせフォームに特殊な文字列を入れることで、データベースの情報が抜き取られたりするんだ。

デジタル化を知りたい
なるほど。悪いプログラムを送り込むんですね。でも、どうしてそんなことができるんですか?

デジタル化研究家
ウェブサイトのプログラムに欠陥があると、入力されたデータがそのままデータベースに送られてしまうことがあるんだ。攻撃者はその欠陥をついて、データベースを操作する命令を紛れ込ませるんだよ。だから、ウェブサイトを作る側は、そうした欠陥がないようにしっかり対策しておくことが大切なんだ。
インジェクション攻撃とは。
コンピューター化に関連した言葉である「注入攻撃」について説明します。これは、サーバーなどへの攻撃方法の一つで、サーバーで使われているデータベースに、不正な命令や小さなプログラムを送りつけて、本来とは異なる動きをさせる攻撃です。命令文による攻撃は、特に「命令文注入攻撃」と呼ばれます。ウェブサイト上のお問い合わせ窓口など、入力された情報をサーバーで処理するサービスで、この攻撃がよく見られます。多くの攻撃は、データベースシステムの弱点を利用したもので、サーバー側であらかじめ対策しておくことが重要です。
不正な命令による攻撃

不正な命令による攻撃、いわゆる「注入攻撃」は、外部からの悪意ある命令を巧みに紛れ込ませ、正規の操作に見せかけてシステムを不正に利用する攻撃手法です。
インターネット上で情報をやり取りする際、利用者は様々な窓口を通して情報を送ります。例えば、会員登録や商品購入の際に利用する入力画面、あるいは検索窓などです。これらの窓口を通して送られた情報は、通常、奥にある情報管理庫のような場所に保管され、必要な時に引き出されて処理されます。
この処理の過程で、送られた情報の内容をきちんと確認せずそのまま利用してしまうと、悪意ある命令が紛れ込んでいても見抜くことができません。これは、ドアの前にある荷物の中身を確認せずに家の中に持ち込んでしまうようなものです。もし荷物の中に危険物が隠されていた場合、大変な事態になってしまいます。
例えば、情報管理庫から特定の情報を引き出すための命令に、悪意ある命令を付け加えて送ることで、本来アクセスできないはずの情報まで盗み出すことが可能になります。また、情報を書き換える命令に不正な命令を紛れ込ませれば、保管されている情報を改ざんすることもできてしまいます。
このような攻撃は、ホームページの書き換えや情報漏えいといった重大な被害につながるため、特に個人情報や企業秘密といった重要な情報を取り扱うホームページでは、不正な命令による攻撃を防ぐための対策が欠かせません。システムを設計する段階から、送られてきた情報を適切に確認し、危険な命令を取り除く仕組みを組み込むことが重要です。まるで、荷物の中身を細かく検査するレントゲン装置のように、外部からの情報に潜む危険を的確に見抜く仕組みが必要なのです。
| 攻撃手法 | 概要 | 危険性 | 対策 |
|---|---|---|---|
| 注入攻撃 | 外部からの悪意ある命令を正規の操作に見せかけてシステムを不正に利用する攻撃手法。送られた情報の内容をきちんと確認せずそのまま利用すると、悪意ある命令が紛れ込んでいても見抜けない。 | ホームページの書き換えや情報漏えいといった重大な被害につながる。 | 送られてきた情報を適切に確認し、危険な命令を取り除く仕組みを組み込む。外部からの情報に潜む危険を的確に見抜く仕組みが必要。 |
データベースへの攻撃

情報を蓄積する大切な入れ物であるデータベースは、様々な悪い輩の標的となっています。中でも、「注入攻撃」と呼ばれるものは、データベースを扱う言葉である「問い合わせ言語」を不正に利用する巧妙な手口です。具体的に言うと、「問い合わせ言語注入」と呼ばれる攻撃では、例えば、会員登録やログイン画面のような入力欄に、特別な命令文をこっそり紛れ込ませます。
何も知らないまま、利用者がその画面で情報を入力して送信ボタンを押すと、紛れ込んだ命令文がデータベースに送られてしまい、本来見せてはいけない情報が盗み見られてしまうのです。例えば、他人の個人情報や、会社の重要な秘密情報などが、いとも簡単に抜き取られてしまう危険性があります。
もっと悪質な場合、データベースの情報が書き換えられてしまうこともあります。例えば、会員制のサイトで、自分の権限を管理者レベルに勝手に書き換えてしまうこともできてしまいます。そうなると、サイト全体の管理者として振る舞うことができ、大変な被害をもたらす可能性があります。
こうした攻撃は、データベースの仕組みや問い合わせ言語の知識を巧みに利用しているため、非常に高度な技術が必要となる場合もあります。そのため、データベースの管理者は、常に最新の危険情報に気を配り、適切な対策を施すことが求められます。例えば、入力された情報をチェックする仕組みを導入したり、問い合わせ言語を安全に扱う工夫をしたりすることで、攻撃のリスクを減らすことが重要です。
| 攻撃の種類 | 概要 | 被害 | 対策 |
|---|---|---|---|
| 問い合わせ言語注入 | 入力欄に特別な命令文を紛れ込ませ、データベースに不正な問い合わせを実行する。 |
|
|
よくある攻撃の場所

利用者からの情報を集めるための窓口は、時として、システムへの攻撃の入り口となることがあります。これらは、まるで家の玄関や窓のように、外部と内部をつなぐ部分であり、適切に守らないと侵入を許してしまう危険があります。問い合わせの窓口や、会員登録に必要なログイン画面、サイト内を探しやすくするための検索窓などが、その代表的な例です。
これらの窓口は、利用者から様々な情報を受け取るために作られています。しかし、この仕組みを悪用し、不正な命令を紛れ込ませたデータを送信することで、システムを乗っ取ろうとする攻撃があります。これを「不正な命令の注入攻撃」と言います。攻撃者は、まるで偽物の鍵で玄関を開けるかのように、巧みに隠された不正な命令を使ってシステムに侵入を試みます。
もし、システム側で入力されたデータの確認や無害化といった対策が不十分であれば、この不正な命令が実行されてしまい、重要な情報の流出やシステムの機能停止といった深刻な被害につながる可能性があります。家の鍵を壊されないように対策するのと同じく、ウェブサイトの管理者は、これらの窓口をしっかりと守る対策を講じる必要があります。
具体的には、入力された情報の形式や内容を細かくチェックすることで、不正な命令が混入していないかを確認することが重要です。また、特殊な文字などを無害化する処理を行うことで、たとえ不正な命令が紛れ込んでいたとしても、それが実行されないようにする対策も有効です。こうした対策を適切に行うことで、「不正な命令の注入攻撃」による被害を未然に防ぎ、システムの安全性を高めることができます。

システム側の対策

仕掛けられた悪意のある命令を実行させないためには、提供するシステム側で対策を施すことが重要です。多くの攻撃はシステムの弱点を利用するため、あらかじめシステム側で対策を講じることで、被害を防ぐことができます。具体的には、利用者から受け取った情報の確認、特殊文字の無効化、安全なデータベース操作といった様々な対策方法があります。
利用者から受け取った情報の確認では、入力された情報が正しい形式かどうか、想定外のデータが含まれていないかなどを細かく調べます。例えば、数字を入力する欄に文字が入力されていないか、決められた文字数を超えていないかなどを確認します。これにより、悪意のある命令が紛れ込むのを防ぎます。
特殊文字の無効化は、命令として解釈される可能性のある特殊な記号を無効にする処理です。例えば、データベースを操作する命令文の一部として使われる記号を、ただの記号として扱うように変換することで、悪意のある命令が実行されるのを防ぎます。
安全なデータベース操作では、データベースを操作する命令文と、利用者から受け取ったデータを分けて処理する方法を用います。こうすることで、利用者から受け取ったデータが命令文の一部として解釈されることを防ぎ、データベースへの不正なアクセスを防ぐことができます。
これらの対策を適切に組み合わせることで、仕掛けられた悪意のある命令による攻撃のリスクを大幅に減らすことができます。システム開発者はこれらの対策を理解し、システムの安全性を高めるよう努める必要があります。
| 対策 | 説明 | 例 |
|---|---|---|
| 利用者から受け取った情報の確認 | 入力された情報が正しい形式かどうか、想定外のデータが含まれていないかなどを細かく調べる。 | 数字を入力する欄に文字が入力されていないか、決められた文字数を超えていないかなどを確認する。 |
| 特殊文字の無効化 | 命令として解釈される可能性のある特殊な記号を無効にする処理。 | データベースを操作する命令文の一部として使われる記号を、ただの記号として扱うように変換する。 |
| 安全なデータベース操作 | データベースを操作する命令文と、利用者から受け取ったデータを分けて処理する方法を用いる。 | 利用者から受け取ったデータが命令文の一部として解釈されることを防ぎ、データベースへの不正なアクセスを防ぐ。 |
常に最新の対策を

情報システムを狙った、書き込みによる攻撃、いわゆる注入攻撃のやり口は、とどまることを知りません。新しい攻撃のやり口は次から次へと生み出されています。そのため、一度対策をしたらそれで終わりではなく、常に最新の安全対策の情報に気を配り、システムを最新の状態にしておくことが大切です。安全対策とは、いたちごっこのように終わりがないことを理解し、常に攻撃する者より一歩先を行く対策を心がける必要があります。
具体的には、システムの弱点を修復する安全のための修正プログラムを適用したり、安全対策のためのソフトウェアを最新版に更新したりするなど、定期的な保守を行う必要があります。
システムの保守作業は、例えるならば家の修繕のようなものです。家の雨漏りを修理しても、時間の経過とともにまた別の場所が傷んでくるように、システムも常に点検し、問題があればすぐに対応することが重要です。そして、家の修繕方法が日々進化するように、システムの安全対策も常に最新の技術を取り入れる必要があります。
また、安全に関する情報提供や、情報を得られる場所を確認し、最新の攻撃の傾向を掴むことも大切です。新聞や専門誌を読むこと、業界の会合に参加することなども有効な手段です。例えるならば、近所で泥棒が出たという情報を知ったら、家の戸締りをより厳重にするのと同じです。最新の攻撃の情報を常に把握することで、システムへの攻撃を未然に防ぐことができます。
このように、常に最新の安全対策を行うことで、システムを安全に運用し、大切な情報を守ることができます。安全対策は一度行えば終わりではなく、継続的な努力が必要であることを忘れてはなりません。
| 情報システムへの攻撃 | 対策 | 例え |
|---|---|---|
| 注入攻撃など、常に新しい攻撃手法が生み出される | 常に最新の安全対策の情報に気を配り、システムを最新の状態にしておく 定期的な保守(修正プログラムの適用、ソフトウェアの更新など) 常に攻撃者より一歩先を行く対策を心がける |
家の修繕 家の雨漏りを修理しても、時間の経過とともにまた別の場所が傷んでくる |
| システムの弱点 | システムの弱点 を修復する安全のための修正プログラムを適用したり、安全対策のためのソフトウェアを最新版に更新 問題があればすぐに対応する |
家の修繕のように、システムも常に点検し、問題があればすぐに対応することが重要 |
| 最新の攻撃の傾向 | 安全に関する情報提供や情報収集(新聞、専門誌、業界の会合など) 最新の攻撃の傾向を把握し、未然に攻撃を防ぐ |
近所で泥棒が出たという情報を知ったら、家の戸締りをより厳重にする |
| 継続的な努力 | 継続的な努力が必要 | 家の戸締り |
