脆弱性について勉強したので、ほぼほぼ初心者の私でも理解できるようにまとめました。
私は基本情報技術者試験、応用情報技術者試験程度の座学知識がありますが、実際に体験したことはありません。
各脆弱性の概要
OWASP Top 10 Application Security Risks
Injection
リクエストに含まれるパラメーターにサーバーで動作するコマンドを含め(Injection)、情報漏洩やサイト改竄、DoS状態等に追い込む。
SQL Injection
DBに対して任意のSQLクエリを発行させる
Command Injection
LinuxやWindowsのshellやSMTP、FTPなど各種コマンドを発行させる。
発行できるコマンドに応じて様々なことが可能で SQL以上に自由が効くため影響範囲が大きい
Broken Authentication
セッション管理の不備。 サーバー側でセッションを適切に管理しないために、最終的に第三者にセッションを乗っ取られ、情報漏洩が起きる。 任意のセッションを付与するFixation、ユーザーが使用中のセッションを奪うHijackなどが存在する。
Broken Access Control
適切なアクセス制御がされていないために他人の個人情報やサーバー内部の情報が漏洩する問題。
見えないはずの画面が見えたり、割とよくない。
Sensitive Data Exposure
外部サービス(Githubなど)に開発で使用したSSH秘密鍵やAWSアクセスキー、顧客情報を含む内部情報等がアップされてしまうこと。
XML External Entity
XMLのパーサーの問題によって引き起こされる。外部から受け付けたXMLクエリによって、リモートコード実行や内部ファイル共有などにより、内部ファイルが漏洩する。 IEで最近見つかった脆弱性はこれ。
Security Miss Configuration
Default settings
設定がデフォルトの場合、自サーバーの設定が公開されているようなものである。攻撃してくれと言わんばかりの状態であるため、今すぐサービスを畳んだほうがいい。
Adhoc configuration for debug
開発中に入れていたデバッグ機能が本番でも生きていて、それを利用されて不正操作をされる。ほぼ全てのことが無制限にできるため、絶対確認したい。 circle CIなどで確認できる。
Cross Site Scripting: XSS
ユーザーから受け取ったパラメーターの出力処理の不備が原因で第三者が任意の外部スクリプトを実行することができる脆弱性。
サイトの改竄、不正プログラムの実行、一般ユーザーセッションの奪取によるなりすまし等の被害を受ける可能性がある。
最近、仮想通貨マイニングの流行りから、XSSを利用してクライアントのPC上でひっそりとマイニングスクリプトを走らせる攻撃もある。
Insecure Deserialization
Deserializerのbug -> Remote Code Execution 細工されてserialize化されたリクエストがメモリ上でDeserializeされた時に不正コードが実行される。JavaのCVE-2015-4852やPHPのCVE-2015-6835はリモートから任意のコードが実行される。
Using Components with Known Vulnerabilities
定期的なセキュリティパッチの適用やアップデートを適用しないことでCVEやMSxx-xxxなど各ベンダーから公表されている脆弱性を利用される。 よく狙われるのはadobe flash, apache struts, microsoft internet explorer, microsoft internet information service(iis) など
Insufficient Logging and Monitoring
適切なログの運用を行うことで、万が一サイバー攻撃やセキュリティ侵害を受けた際の調査が容易になる。脆弱性とは違うが、情報システムの運用では欠かせない項目の一つ。ログに出力されるパスワードは不正アクセスにつながり、マイナンバーは漏洩させると刑事罰対象になるため、特に注意する。
Incident Response
サイバー攻撃に対する緊急対応のこと。情報漏洩やサイト改竄等サイバー資産に対する侵害が起きた際に、システムの調査を実施し、原因の特定と対策案の提示を行う。多くの場合第三者企業に依頼することが多く、セキュリティ企業はIRへの即応チームを組織している。
Cross Site Request Forgery: CSRF
ログイン中のユーザーが意図しない処理を実行させられる。具体的には、商品の購入処理、ログインパスワードの変更、該当サービスからの退会など。処理の確定時に「ユーザーが実行しようとしたか」確認が漏れているために発生する。
Open redirect
リダイレクト処理を行う機能において、攻撃者が任意のURLへ遷移させることが可能な脆弱性。