セキュリティー担当者でも担当者じゃなくても。誰にでもわかる、はじめての脆弱性診断!
ここはとある中小企業。
今月からECサイトに携わることになった、ひらのちゃん。
WEBの知識はさっぱりな彼女がECサイトのセキュリティーに立ち向かう!ストーリーです。
気合と根性で乗り切れる…のか。
初心者の方でも簡単にわかる、かつ大事なセキュリティー知識をお届けします。
※この話はフィクションです。物語にでてくる会社はColorkrewではありません。
いつもはムカつくすがわらさんの嫌みも、今日は水に流しちゃいます^^
私が初めて担当するプリンのECサイトがそろそろ完成するんですよ♬
後は社内で確認したら、いよいよサイトのオープンです!
だからいつにも増して上機嫌なんですね。
水を差すようで悪いですが、脆弱性診断もとっくに対応していますよね?
サイトの構築が終わったので、エンジニアのみなさんにバグチェックだけしてもらって、オープンしようと思っていました。
その診断って何ですか?もしかして、サイトオープン前には必須ですか??
サイトをオープンさせる前の今、僕に会ったことを感謝するといい。
脆弱性とは、インターネット・ネットワーク分野の場合、主にソフトウェアの欠陥を指す。
主にバグ・ヒューマンエラー・予期せぬ挙動などによって発生し、別名セキュリティーホールとも呼ばれる。
これがプログラム上の抜け道となってしまうことが多く、そこをつかれると攻撃に悪用されることがあるのだ。
では、その攻撃としてどのようなものがあるのかも教えてあげよう。
ウイルス感染・不正アクセスの被害・サイト改ざん・情報漏洩などが考えられ、脆弱性を放って多くと様々な被害を受ける可能性が高くなる!
こんなに苦労して作ったサイトが、脆弱性を放っておくと改ざんされるかもしれない!?
個人情報の漏洩!?
…考えただけで卒倒しちゃいます(:_;)
脆弱性が発生するソフトウェアは、人間が作ったもの。
となると完璧だと思っていても、どうしても穴があって(=脆弱性、=セキュリティー的にもろくなっている部分がある)、それを悪意のある人が見つけてしまうと、悪用されてしまう。
そういう悪用されそうで脆くなっている部分がないかを探すのが脆弱性診断と覚えておきたまえ。
脆弱体診断をしておくことにより、悪意のある攻撃を未然に防ぐことができる。
どこが攻撃されてしまう弱点になるのか、自分の作ったものがセキュリティー上きちんと守られているかを開始前に探しておくべきなのだよ。
脆弱性診断の必要性は十分わかりました。
今すぐやりたいので、その方法を教えてください。私でもできますか?
たとえば、他社から提供されたソフトウェアであれば、開発元から脆弱性の報告を受け修正することも可能だけど、自分たちで開発した場合だと、自分たちで発見するしかない。
それって結構大変なのはわかる?
それに今回サイト構築に関わっているエンジニアの人たちは、既に別のプロジェクトにアサイン予定です…
「あなたが生み出したかもしれない脆弱性を、自分で見つけて今すぐどうにかしてください」なんて、とてもじゃないけど言えません。
今回は時間もないだろうし、脆弱性診断アプリか、診断をしてくれる会社に依頼した方が得策だろう。
餅は餅屋ということで。
ちなみに脆弱性診断は、攻撃者に成り代わり様々な角度から脆弱性を発見する。
WEBサイト・サーバー・アプリなど幅広く網羅しているから、まずは、自分たちがどこまで携わっているのかを考慮して、どの部分に対しての脆弱性診断が必要なのかを考えよう。
具体的に、脆弱性を使った攻撃ってどのようなものがありますか?
- クロスサイトスクリプティング
- クロスサイトリクエストフォージェリ
- ブルートフォース
- SQLインジェクション
- OSコマンドインジェクション
- バッファーオーバーフロー
- パラメータ改ざん
- ディレクトリトラバーサル
ついでに、診断の流れ的についても教えておいてあげよう。
<脆弱性診断の流れ>
1.脆弱性診断をする会社と、どの項目をチェックするか事前に打ち合わせ
2.ツールまたは人が脆弱性診断を実施
3.診断結果をレポートでもらう
4.レポート結果を基に修正する
サービスに携わる人であれば、スケジュールを組むときに、サービスを作った後の脆弱性診断・修正期間も考慮しておくのが当然さ。
どこに頼めば診断していただけますか?
超特急でお願いしなくては…!
何を基準に会社を選べばいいのか、以下の視点で見ることをお勧めしよう。
①なんのセキュリティー診断をしたいのか
先ほどの説明でも言ったけど、下記のように広い範囲での脆弱性が考えられる。
・WEBサイト
・サーバー
・アプリ
何を目的とした脆弱性診断なのかはっきりさせて、それを得意とする会社を選びたいね。
②報告の仕方
脆弱性診断を行う最大の目的は、事前にセキュリティーの穴をふさぐこと。
セキュリティーに対する知識がないエンジニアでも、その報告書をみればどんな危険性があり どのような対応をすればいいのか、わかりやすいレポートを出してくれる会社が望ましいね。
③再診断の可否
通常、診断を受けた結果に基づいて、脆弱性を修正する。
できればそのあと再診断を受けて、本当に問題がないのか確認した方がいいだろう。
再診断の費用がかかるのか、かからないのか。
ここも会社を選ぶ際のチェックポイントにしたらいいと思うよ。
それで、具体的にどのように診断しているんですか?
①人の手作業による診断
セキュリティーに長けたエンジニアが手動で診断を行います。
メリット:ツールでは発見できない脆弱性でも発見可能
複数の脆弱性を組み合わせた攻撃など、総合的な危険性を診断できる
デメリット:コストがかかる
②ツールを使用した診断
セキュリティー診断用のツールを用いて診断を行います。
メリット:比較的安価で早く診断できる
デメリット:ツールでは発見できない脆弱性がある
まず、何を目的とした脆弱性なのかと費用感をみて、どちらを選択するか決めたいと思います。
今日すがわらさんに出会ってよかったです!ありがとうございました。
あ、そうそう。最後に一つ。
脆弱性診断は定期的に実施した方がいいから。
当たり前だけど、脆弱性診断では、診断を受けた時点の脆弱性しか発見できない。
ということは、未知の手法は発見できないから、診断後翌日に発生した新たな脆弱性は見つからず、そのサイトはリスクを持ったままとなる。
常に脆弱性を使った新しい攻撃がうみだされるから、定期的な診断が必要だということだ。
じゃ、時刻表を買いに行かなくてはいけないから、これで失礼するよ。
攻撃手法は日々進化しているので、脆弱性診断をしたからといって100%安全なわけではありません。
しかしながら既知の手法に対しては、攻撃の火種になるかもしれない箇所を事前に把握し、対策をとることができます。
脆弱性診断は定期的に実施しよう!