🐿️

WEBサーバ(Apache)が攻撃を受けているとわかったためセキュリティ診断をした簡単な体験談

に公開

はじめに

近年、サイバー攻撃の脅威がますます増加しています。企業や個人にとって、セキュリティ対策はもはや避けて通れない重要な課題です。
この記事では、メンテナンス作業中に発見した不審なログをきっかけ行ったセキュリティ診断の体験を共有したいと思います。
これからのセキュリティ対策に役立てば幸いです。

セキュリティ診断の背景

WEBサーバのアクセスログから攻撃の痕跡を調べるためのツールとして、IPA(情報処理推進機構)が公開しているiLogscannerがあります。

https://www.ipa.go.jp/security/vuln/ilogscanner/index.html

解析結果は以下の画像のような感じで出てきます。


ログからわかる攻撃内容を一部紹介します。
上記画像のように1~2日おきに脆弱性をついて攻撃可能か調べるためのディレクトリトラバーサル攻撃が行われていることがわかりました。

失敗していますが、以下のような攻撃を受けています。

echo(md5("hi"))  # 画面に "hi" と表示

もしこれが成功すると、攻撃者にディレクトリトラバーサル攻撃が成功してしまうという情報を与えることになります。より深刻な攻撃につながる可能性があります。

診断手法

こうした不審なログが検知された経緯から、セキュリティ診断を行いました。
セキュリティ診断としては、IPAの公開しているチェックリストを使用しました。

https://www.ipa.go.jp/security/vuln/websecurity/sitecheck.html

https://www.ipa.go.jp/security/vuln/websecurity/ug65p900000197fc-att/000070296.xlsx

このチェックリストでは、以下の攻撃に対する脆弱性を確認することができます。

  • SQLインジェクション
  • OSコマンド・インジェクション
  • ディレクトリトラバーサル攻撃
  • パス名パラメータの未チェック
  • セッション管理の不備
  • クロスサイト・スクリプティング
  • CSRF(クロスサイト・リクエスト・フォージェリ)
  • HTTPヘッダ・インジェクション
  • メールヘッダ・インジェクション
  • クリックジャッキング
  • バッファオーバーフロー
  • アクセス制御や認可制御の欠落

IPAのサイトに各項目に対する解説ページが用意されているので、そこで詳細を確認することもできます。

診断結果

詳細は記載しませんが、ディレクトリトラバーサル攻撃に対しては脆弱性はないもののSQLインジェクションの対策が特に必要ということがわかりました。修正量は結構多かったです。。
普段からセキュリティを意識した実装が重要であるということがわかります。

また参考として、それぞれの脆弱性に対する対策案を簡単ですが以下に記載します。

No セキュリティ脆弱性要素 対策案
1 SQLインジェクション プレースホルダでSQL文を組み立てる。
2 OSコマンド・インジェクション シェルを起動できる言語機能の利用を避ける。
3 パス名パラメータの未チェック/ディレクトリ・トラバーサル 外部からのパラメータでウェブサーバ内のファイル名を直接指定する実装を避ける。
4 セッション管理の不備 セッションIDを推測が困難なものにする。
5 クロスサイト・スクリプティング ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
6 CSRF(クロスサイト・リクエスト・フォージェリ) 処理を実行する直前のページで再度パスワードの入力を求める。
7 HTTPヘッダ・インジェクション ヘッダの出力を直接行わず、APIを使用する。
8 メールヘッダ・インジェクション メールヘッダを固定値にして、外部からの入力はすべてメール本文に出力する。
9 クリックジャッキング HTTPレスポンスヘッダにX-Frame-Optionsを追加する。
10 バッファオーバーフロー メモリにアクセスできない言語で記述する。
11 アクセス制御や認可制御の欠落 認証機能を設け、認可制御を実装する。

まとめ

今回は、WEBサーバのセキュリティ診断に関する体験談を簡単に紹介しました。
もし長期間ログ解析を行っていない場合は、これを機にセキュリティ診断を実施し、将来的なセキュリティインシデントを未然に防ぐことにつながれば幸いです。

Discussion