セキュリティ勉強したいけど、何すればいいの!?という方向けの記事です。
サイトの脆弱性診断などについても書きます。
参考になるもの
IPAのサイト
安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構
ここに載っているものはメジャーなものなので、それぞれの攻撃方法・対策方法を学習していくと良いと思います。
1 SQLインジェクション
2 OSコマンド・インジェクション
3 パス名パラメータの未チェック/ディレクトリ・トラバーサル
4 セッション管理の不備
5 クロスサイト・スクリプティング
6 CSRF(クロスサイト・リクエスト・フォージェリ)
7 HTTPヘッダ・インジェクション
8 メールヘッダ・インジェクション
9 クリックジャッキング
10 バッファオーバーフロー
11 アクセス制御や認可制御の欠落
OWASP TOP 10
OWASP Top 10:2021
影響度や発生率などを考慮して気をつけるべき項目をランキング付されたものです。
2~3年毎ぐらいに発表されていて、現在の最新は2021版です。
1 アクセス制御の不備
2 暗号化の失敗
3 インジェクション
4 安全が確認されない不安な設計
5 セキュリティの設定ミス
6 脆弱で古くなったコンポーネント
7 識別と認証の失敗
8 ソフトウェアとデータの整合性の不具合
9 セキュリティログとモニタリングの失敗
10 サーバーサイド・リクエスト・フォージェリ
セキュリティの本
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践 | 徳丸 浩 | Amazon
通称・徳丸本は分厚いですがタイトルの通り体系立てられていてすごく勉強になるのでおすすめです。
著者の徳丸さんはセキュリティ界の第一人者で、Twitterもやってるのでフォローしておいて損はないと思います。
脆弱性診断
診断ツール
脆弱性診断ツールは有償・無償問わず多くあります。
ここでは例としてOWASP ZAPというOSSを紹介します。
インストールして動的スキャンを実行すると、アラートとして脆弱性のある箇所を教えてくれます。
パラメータ等を設定すればログイン後の画面なども検証してくれます。
ただ、システムにゴミデータを残したりするので本番環境以外で実行することをお勧めします。
IPAのチェックリスト
ツールは便利ですが完全ではないため、手動で検証していくことも大切です。
IPAのサイトのここ(ダウンロードされます)に優秀なチェックリストがあるので、これに沿って検証していくと良いと思います。
おまけ
WAFなど低レイヤーの設定の見直しや、使用ライブラリやフレームワークのバージョンをLTS版にアップデートするだけでもセキュリティ強化になったりすると思います。
ついでにレスポンスヘッダーに追加するだけでセキュリティ強化できる種類の紹介です
・x-frame-options: sameorigin または deny → 外部サイトのiframe内部に表示できなくする
・x-content-type-options: nosniff → MIMEタイプの解釈を厳密にさせる
・x-xss-protection: 1; mode=block → XSSフィルタの設定を強制する
・content-security-policy: よしなに → スクリプトやメディアの読み込み元を限定する
・strict-transport-security: よしなに → HTTPS接続を強制する常時TLS
おわりに
対策方法は調べればわかるんですが、システムごとに構成は違うため手段として具体的にどこにどのように設定するかというのは、仕組みを理解して考えないといけない少し難しいところかなと思います。
知識をつけるのは前提として、ぜひ実務に落とし込んでセキュリティ対策やっていきましょう!
記事に間違いなどありましたら遠慮なくご指摘ください。
おしまい!