WEBアプリにおける『脆弱性』とは??
初めに
皆さん、おつかれさマッチョです🦍
今回は、WEBアプリケーションにおける『脆弱性』とは何かについて、備忘録も兼ねて記事を作成しました。
皆さん、「脆弱性にはどのようなものがありますか?」という問いに対してスムーズに答えることが出来ますでしょうか?
お恥ずかしながら自分は、スムーズに答えることが出来ません....
今回の記事は、そのような『脆弱性について詳細に理解していない』方向けの内容となっております。
是非こちらの記事を参考にしていただき、WEBアプリにおける『脆弱性』の危険性等について学んでいただければと思います。
脆弱性とは?
ではまず、『脆弱性』について簡単にお話ししていこうと思います。
『脆弱性』をそのまま解釈すると「脆くて弱い性質」となりますが、意味としてはこの言葉通りとなります。
WEBアプリケーションにおける脆弱性とは....
『CGIやサーブレットなどクライアントからの要求に対して、動的に応答するプログラムに内在するセキュリティ上の問題』
の事を指します。
つまり、「クライアントからのリクエストに対してサーバーが動的に応答するプログラムにて、特定のセキュリティ問題が存在する」これが、WEBアプリケーションにおける『脆弱性』という事になります。
脆弱性が生まれてしまう原因は?
WEBアプリケーションの開発において脆弱性が生まれてしまう原因は様々だと思います。
が、大きく分けると以下の通りだと思います。
-
アプリケーションの設計ミス
セッションの管理方法の不備・クライアントからの入力を検証するためのロジックが存在しない、などのコード自体に問題があるパターン -
サーバに関する設定ミス・アプリケーションの管理ミス
サーバーに関する設定のミスによる情報の漏洩やアクセス制限の設定ミス・コンテンツ配置ミスなどによって問題が発生するパターン -
既知の脆弱性、パッチの未適用
サードパーティ製品にて発見されたバグに対してパッチの適用漏れによって問題が発生するパターン
1. アプリケーションの設計ミス
Webアプリケーションは複数のプログラムやシステムによって動作しています。Webアプリケーションを構築するプログラム(ロジック)にミスがあることで、不具合が起きる可能性があります。脆弱性が確認されたときに、まず疑うべき箇所の一つです。
2. サーバに関する設定ミス・アプリケーションの管理ミス
プログラム(ロジック)等にミスがなくとも、ネット上に置かれたときに脆弱性が生まれるケースがあります。Webアプリケーションをインストールするサーバーの設定、運営するデータや情報のコンテンツ管理の設定が脆弱性の原因となるケースも少なくありません。
3. 既知の脆弱性、パッチの未適用
Webアプリケーションのインストール時には問題がなくても、時間がたって脆弱性が生まれることもあります。通常は定期的に修正パッチやプログラムが配信されますが、更新作業を怠ることで、既知の脆弱性が放置されたままとなってしまいます。アプリケーション開発者は、使用しているパッケージ等の更新を小まめに行うことが不可欠です。
WEBアプリケーションにおける主要な脆弱性
では、WEBアプリケーションにおける主要な脆弱性について説明していきたいと思います。
1. クロスサイトスクリプティング(XSS)攻撃
クロスサイト・スクリプティング(以下『XSS』)は、掲示板や入力確認画面等で、ユーザが入力した内容をそのまま表示するWebアプリケーションが原因となる脆弱性です。
攻撃者が悪意ある任意のスクリプトをWEBアプリ上に仕込み、そのスクリプトがクライアント側で実行されることで、Cookieの盗難などの被害を起こす攻撃となっています。
攻撃者が用意したWEBサイトとXSS脆弱性のあるWEBサイトをまたがって発生するため、「クロスサイト」という名で呼ばれているみたいです🤔
2. SQLインジェクション
大抵のWEBアプリケーションでは、背後でDB管理システムが稼働しています。
SQLは、DBに接続する際に使用されるデータベース言語です。
SQLインジェクションとは、このSQLをWEBアプリケーション内のHTMLフォームやURLパラメータに挿入することで、WEBブラウザ上からDB内の情報を操作してしまう攻撃のことです。
3. CSRF
クロスサイトリクエストフォージェリ(以下『CSRF』)とは、WEBアプリケーションの「セッション管理」機能に潜む、セキュリティ上の脆弱性を狙った攻撃です。
攻撃者は、WEBアプリケーションにログイン中のユーザーに不正なリンクを踏ませるなどして、あたかもそのユーザーが操作をしたかのように、WEBアプリケーションに不正なリクエストを送信。アプリケーション側は「ログイン中のユーザーから送信されたリクエストだな。」と認識して、不正なリクエストを実行してしまいます。
CSRFの具体的な被害内容として、『ECサイトやオンラインバンキングで身に覚えのない決済をさせられる』『SNSや掲示板で意図しない投稿をされる』などがあります。
ログインした利用者からのリクエストが、「正規のリクエストか?それとも不正なリクエストか?」を識別する仕組みを持たないWEBアプリケーションだと、その脆弱性から攻撃対象になりやすくなってしまいます。
最後に
今回は、WEBアプリケーションにおける脆弱性について主要なものをピックアップして、備忘録としてまとめさせていただきました!
私自身、脆弱性についてある程度分かっていたつもりですが、いざ説明するとなると出来ないというかなりお恥ずかしいレベルでした...💦
今後WEBエンジニアとしてWEBアプリケーションの開発を行っていく上で、脆弱性は必ず理解しておかなければいけない技術の内の一つなので、今後も脆弱性に関する技術記事を都度作成していこうと思います💪🔥
ここまで拝読いただき、ありがとうございました🦍
Discussion