現代のネットセキュリティを3分で理解しよう！【脆弱性について】

# 脆弱性とは？

情報セキュリティが維持できず、何かしらの損失が発生する可能性をリスクと呼ぶ。

リスクを発生させる要因は**脅威**、脅威に対する弱みが**脆弱性**です。

例えば機密情報(皆に見せれないもの)を持ったシステムに不正アクセスがあった場合1つの脅威となります。

そして不正アクセスを許してしまうバグがあればそれが脆弱性となる。

この場合、脆弱性となっているバグを不正アクセスによって利用され機密情報を持ち出されるなどの損害が発生するリスクがあると言えます。要するに弱点です。
![スクリーンショット 2020-12-07 9.43.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/5daaf05b-e141-95d0-4910-4c045cdd965b.png)


# システムの弱点であるセキュリティホール
ソフトウェアの欠陥により、権限がないと本来できないはずの操作が誰でも出来てしまったり、見えるべきではない情報が誰にでも見えてしまう不具合。

企業しか見れない個人情報が誰でも見えてしまうバグとかですね。

セキュリティホールを発見したらすぐに修正する必要があります。

セキュリティホールがバグのことなのに対し、脆弱性は不具合というより外部からの攻撃に対する弱点という意味で違いがあります。

セキュリティホールはプログラミング上の話ですが、脆弱性に関してはコンピューターやネットワークを取り巻く環境全てが脆弱性を生む可能性があります。
![スクリーンショット 2020-12-07 9.46.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/613989d2-017b-aa30-49c2-ecabebd85532.png)



# 悪い奴が使う技1:ゼロデイ攻撃
![スクリーンショット 2020-12-07 9.49.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/a1a02e5b-76b6-c11e-034a-ec21a9dccf22.png)

発見されたセキュリティホールに対する修正を開発する前にセキュリティホールを利用した攻撃。
これにははっきりとした対策がなく開発者からしたら最も対策しにくい攻撃の１つ。



# 悪い奴が使う技2:クロスサイトスクリプティング(XSS)
![スクリーンショット 2020-12-07 10.22.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/7066155e-90b0-f2a0-f405-e72ee8e9fef2.png)

SNSや掲示板のようなユーザーの入力内容を表示するタイプの脆弱性を突く攻撃。

悪い奴が「脆弱性を持つwebサイトに対してクリックするとヤバイ事が起こる」リンクを設置します。

ここでいうヤバイ事とはCookie情報を盗まれパスワードやIDが筒抜けになったり、ウイルスをダウンロードすることが考えられます。

そのリンクをクリックしたユーザーが脆弱性のあるwebページを介して悪いことが起こってしまいます。

ワンクリック詐欺やフィッシング詐欺がこれに当たります。



# 悪い奴が使う技3:クロスサイトリクエストフォージェリ(CSRF)
![スクリーンショット 2020-12-07 10.26.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/168317f8-10c0-c0fc-15bc-238ca8000c1c.png)

XSSと同じ悪い奴が「脆弱性を持つwebサイトに対してクリックすると悪いことが起こる」リンクを設置します。

XSSと違うのは本人になりすましてログインの必要なサイトを操作すること。

攻撃されるだけのXSSに対してCSRFはなりすまして悪いことをします。

SNS運営から見たらログインした張本人に見えてしまうのです。

#悪い奴が使う技4:SQLインジェクション
![スクリーンショット 2020-12-07 22.24.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/d2b4e7c3-2606-7c45-dd09-448cc474333f.png)
悪い奴がSQL（データベース処理のための情報）を入力された場合、サーバーがそれを処理するとSQLが実行されてしまいます。

SQLが実行されれば不正に情報漏えいや情報の改ざんができてしまう危険があるのです。

個人情報やクレジットカード番号といった重要な情報の漏えいや、閲覧するとウェブサイトからウイルスに感染するような仕掛けなどができてしまいます。








#対策1:ファイアーウォール
送受信されるデータを監視して許可・拒否を行うもの。
有名な所だと送受信されるデータのIPアドレス(インターネットの住所)とポート番号(インターネットの窓)をチェックして送信の許可/拒否を判別します。例えば社内で使うためのwebシステムであれば社内のIPアドレスのみ通信できればOKですし。ポート番号にしても
通常のWebシステムであればホームページを見るためのポート番号(窓)であるHTTP(80番)やHTTPS(443番)へのみ通信をOKすればいいです。ネットワークに接続された機器を遠隔操作し、管理するための手段であるSSH(22番)などは拒否すればいいのです。
不特定多数のユーザーが利用する場合はIPアドレス単位の遮断は難しいですが、利用しないポートの通信を遮断するだけで不正アクセスの防止には大きく役に立ちます。ただし、ファイアーウォールで許可したIPアドレスやポート番号を利用した攻撃は防げないので他のセキュリティ対策をしなければいけません
![スクリーンショット 2020-12-08 8.37.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/ba4b6f2d-6bc5-b889-da74-f15d2094334e.png)
![スクリーンショット 2020-12-08 8.38.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/2f41067c-6664-ff65-24a9-007a5d05e846.png)



#対策2:IDS&IPS
ファイアーウォールで防ぎきれない攻撃の1つにIDSやIPSがあります。両者ともネットワーク上で流れる通信を監視し、不正アクセスと見られる通信や普段と異なる異常な通信を検知するものです。
IDSとIPSの違いは不正を感知した時の動作でIDSは異常をメールで通知するだけですが、IPSは即座に該当する通信を遮断します。検知方法は下記の2パターンがあります。

**シグネチャ型**
攻撃手法におけるパターンが事前に登録しておく事。通信を監視して登録された通信がきたら検知します。

**アノマリー型**
普段は発生しないような通信を判別する事。通信内容はアクセス量が爆増するF5攻撃などがあります。




###IDSのイメージ
![スクリーンショット 2020-12-08 9.06.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/8635e127-6be6-521a-817f-0d02a28288ec.png)
ショッピングサイトのような通信が遮断されてしまったら販売チャンスを逃してしまうようなサイトなどでよく採用されます

###IPSのイメージ
![スクリーンショット 2020-12-08 9.06.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/c1848076-6fa1-3708-5120-7be9e24ae1e0.png)
ネットバンキングのような攻撃を受けた時に損害が大きいサイトは疑わしきは排除するスタンスが必要な場合によく採用されます




#対策3:WAF
ファイアーウォールやIDSはデータの中身までチェックしないので攻撃をスルーしてしまいます。
ここで登場するのがWAF。こいつはやり取りするデータの中をチェックして判別してくれます。
高性能でセキュリティ効果は高いですがコストも高いので本当に必要か検討する必要があります。
判別方法は下記の2つがあります。

###ブラックリスト型
![スクリーンショット 2020-12-08 9.32.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/5c9c2a2d-f885-2351-bfd9-2b76f373f763.png)
IDSのシグネチャ型と同様特定のパターンの持つデータを持つ通信を遮断します。
基本的にはWAFの開発元が提供するものを利用します。
新たな攻撃方法が発見された場合はブラックリストに載るまでは対応できません。


###ホワイトリスト型
![スクリーンショット 2020-12-08 9.33.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840696/e40746f1-9864-c631-3683-d2a14f18bcc1.png)

正常なパターン(ホワイトリスト)を登録し、それに適合する通信のみ許可します。
確実に正常と判断できる通信のみを通過させるためセキュリティ効果は高いです。
しかし、誤って通信を遮断しないように全ての通信パターンを登録しておく必要があるのでホワイトリストの作成には専門的な知識が必要です。
そのためコストが高くなりがちです