そこで今回は、当作品にも登場した、Webアプリケーションやサービス運営におけるセキュリティ対策について解説したい。
おそるべき責任の大きさ
SQLインジェクション攻撃を受け、個人情報を漏洩してしまうと、経営レベルの問題となる。
こちらの記事では、裁判においてSQLインジェクションのセキュリティホールを突かれたことが重過失としてみなされ、高額の賠償金支払いが命じられた判例について解説されている。
1 被告は,原告に対し,2262万3697円及びこれに対する平成23年10月15日から支払済みまで年6分の割合による金員を支払え。
恐ろしすぎる・・
こんなリスクを負わないために、どんなことが考えられるだろうか。
技術的なセキュリティ対策
まずはこちらをしっかり読もう。
上記を補足する形で技術的な対策を紹介したい。
1.プリペアドステートメントの利用を徹底
特に、SQLインジェクションへの対策については、プリペアドステートメントの利用が効果的だ。
とはいえ、プリペア=セキュリティ対策とは言い切れないことにも注意が必要だ。
プリペア機構は文字列のエスケープなどをやってくれるが、基本的には「処理の高速化・効率化」のために実装されているものであり、必ずしもセキュリティ対策のために用意された機構ではない。
ライブラリやフレームワーク側のプリペア機構にセキュリティホールなどがあることも想定し、十分検証してから使いたい。
2.機械的な文字列チェック
DBに渡す値や、あるいは全てのWebパラメータを、機械的に文字列チェックする対策も考えられる。
例えば、MySQLでは「information_schema」というデータベースで、全データの構造を管理しており、アタッカーはこの「information_schema」を解析しようとしてくることが多い。そこで単純に、パラメータ内に「information_schema」という文字列を検知した場合にプログラムをブレークする、という処理だけでも、効果的な対策になる。
合わせて、Webパラメータの内容について、アタックパターン文字列を検知するロジックを入れ、ブロックおよび通知する機構を入れると、アタックを止められるチャンスが増える。(UNIONや一部のSQL関数などの、アタックでよく使われる文字列を検知するわけだ)
3.Webアプリケーション脆弱性診断
専門業者に診断を依頼する方法が確実だ。
とはいえ、プログラム更新のたびに実施するのはコストがかかりすぎる。
そこで、以下のOWASP ZAPという脆弱性診断ツールを使って、無料で実施することもできる。
OWASP ZAPではじめる2016年のウェブアプリケーションセキュリティ:新春特別企画|gihyo.jp … 技術評論社
技術的ではない部分でのセキュリティ被害への対策
セキュリティ被害の対策は、技術的なものだけではない。
教科書的なセキュリティ対策以外にも、以下のような企業防衛を考慮すべきだと思う。
1.保険への加入
小説『個人情報漏洩させたらこうなった』でも言及しているが、世の中にはサイバーテロに被害に対する保険が存在する。
通常の損害保険ではまかないきれない、個人情報漏洩の賠償などもカバーする保険への加入を検討するのもいい。
進化する「サイバーセキュリティ保険」、中小企業も加入するその理由とは? - さくらのナレッジ
2.契約関連
契約の段階で、契約書における免責事項や責任上限に注意する必要がある。
重過失となるような問題を起こした場合は、契約書を超える責任が発生するが、基本的には契約書の条項が重視されることに変わりはない。
3.セキュリティ対策についての提案
プロジェクト進行において、顧客に対して日頃からセキュリティ問題のリスク喚起を行いたい。
第三者機関によるセキュリティ診断の実施や、セキュリティ対策のためのシステムアップグレードなどを提案していくことで、いざというときに業者側の責任が低減されることがある。
4.クレーム対応の準備
いざセキュリティ被害が起こってしまったとき、クレーム対応が非常に大変だ。
社内で対応するにも回線がパンクするし、スタッフの体がもたいない。
日頃からコールセンターサービスをみつくろっておき、かつ、IP電話での回線増設なども検討しておきたい。
まとめ
今回は、小説『個人情報漏洩させたらこうなった』でも登場した、様々なセキュリティ被害への対策方法について説明した。
参考になりそうなことがあったら、ぜひ検討・実践して頂ければと思う。
この世からサイバーテロがなくなることを祈って・・