はじめに
Loggolはウェブサーバのアクセスログを入力とし、そのログに含まれる攻撃の情報を出力する超シンプルなサービスです。同じスタイルのツールとして、IPAが出しているiLogScannerが存在します。ユーザさんより質問を頂くこともあるため、今回は両者にどのような違いがあるのかについて紹介します。
なお、iLogScannerにはウェブサーバ以外のログを分析する機能もありますが、この記事ではウェブサーバのログに対する分析の部分についてのみ注目します。
価格とサポート
Loggolは商用サービスであり、基本的に有料のサービスです(価格はこちらを参照)。一方でiLogScannerは無料で利用可能です。
Loggolは有料であることに伴いサポートも存在するため、利用にあたって不明な点があれば質問する先があります。一方でiLogScannerには基本的にサポートは期待できないと思いますので(IPAに質問したときにどのくらいの回答がもらえるかは私にもわからないですが)、基本的に困った場合は自己解決する必要があると考える方がよいでしょう。
メンテナンスされているか
Loggolは正式版が2024年にリリースされたばかりの新しいサービスであり、当然ですがメンテナンスは行き届いている状態です。
一方、iLogScannerは2014年以降新しいバージョンがリリースされておらず、既にメンテナンスされていない状態であると言えるでしょう。Log4jに代表されるような比較的最近のウェブの攻撃には対応しておらず、検知することが出来ない状態になってしまっています。
稼働環境
Loggolはクラウドサービス(SaaS)であるため、ユーザはウェブブラウザやAPIクライアントを利用してログの分析を行います。PC環境にLoggol特有のソフトウェアをダウンロードしたりインストールしたりする必要はなく、環境の管理は不要です。
Loggolでは分析対象となるログはクラウドサービスに対してアップロードする必要があります。そのため、組織のポリシーによっては利用できない(外部にログを持ち出せない)ことがあったり、サービス利用のための許可を取り付けるなどの手間がかかったりするかもしれません。
iLogScannerはPC上で動作するので、ダウンロードして自身のPC環境で使う必要があります。このときJavaもインストールする必要があり、これも含めて環境の管理が必要になります。ログファイルはPC上に存在していればよいので、自社の管理下のコンピュータリソース内で利用が完結する点は魅力になるでしょう。
自動化への対応
定期的に(たとえば毎日など)ログを分析するようなケースでは、毎回Loggolにブラウザを使ってログをアップロードしたり、あるいは手元のPCにログを持ってきてiLogScannerを起動したりするのは、人的コストの面でなかなか辛いものがあります。
LoggolにはWebAPIの機能があるため、ウェブサーバなどで生成されたアクセスログをLoggol側にアップロードして分析し、その結果を受け取り、さらにその結果を他のDBに格納したりメールやSlackに通知するなどの処理をすべてAPIの利用により自動化することができます。
一方、iLogScannerはあくまでもデスクトップアプリケーションであるため、このような自動化の仕組みを作るのはかなり難しいです。
Loggol開発者の立場からは、Loggolは最終的にはぜひAPIを使う形に落とし込んで頂き、DevSecOps的な、自動化されたセキュリティログ分析の仕組みの中で使ってほしいと考えています。
検知精度
それほど厳密にはまだ比較していませんが、Loggolでは見つかる攻撃がiLogScannerで見つからないケースをかなり多く把握しています。しかし逆のケース(iLogScannerで検知したがLoggolが検知しない)もあるとユーザさんから指摘頂いたこともあるので、この点については調査し、必要な場合はLoggol側を継続的に改善していく予定です。
私が見つけている具体的なケースでは
- Log4j
- Struts2への攻撃としてよく知られているOGNLインジェクション
- リスト型攻撃(ログイン総当り)
- リコネサンス
- リモートファイルインクルージョン(RFI)
- サーバサイドリクエストフォージェリ(SSRF)
- コードインジェクション
については、iLogScannerでは検知できないようです。また、iLogScannerの検知対象としてドキュメントに載っているコマンドインジェクションやパストラバーサルについても、Loggolでは検知できるが、iLogScannerでは見つからないパターンを多くデータとして確認しています。
False Positive(攻撃でないものを攻撃として検知してしまう)については、まだそれほどきちんと調べられていません。後日、調査できたらまたブログでお知らせしたいと思います。
分析速度
Loggolはクラウド上で比較的高性能のコンピュータリソースを使用しているため分析は速いと考えていますが、一方でiLogScannerもPCのCPUが高性能であれば、結構速いようです。この点はユーザさんの環境に大きく依存します。
攻撃成功の可能性についての言及
iLogScannerにはSQLインジェクションについては「攻撃が成功した可能性が高い件数」という出力をする機能があります。しかしLoggolでは2024年11月時点ではこれは実装していません。iLogScannerは「SQLインジェクションのペイロードが確認され、かつステータスコードが500になっている」という行について、攻撃が成功した可能性が高いと判定しているようです。
このロジック自体はシンプルなのでLoggolでも同じようにすることはもちろん可能なのですが、厳密にはSQLインジェクションは「攻撃が成功して、ステータスコードが200」の場合もありますし、「攻撃が成功して、ステータスコードが500」の場合もあります。そのため500の場合のみを攻撃が成功した確率が高い、とするのは何だか違うのではないか…と考えています。この機能を実装してしまうと、かえって200になっているSQLインジェクションについては「これはたぶん攻撃は成功していないんだな」という誤った安心感を与えてしまう気がしています。
また、ステータスコードが200でも500でも、攻撃が成功していない可能性も、もちろんあります。
一方で、基本的にステータスコードが500になるということ自体が異常なので、SQLインジェクションのペイロードがあるかどうかとは無関係に、そもそもログの中でステータスコードが500になっている行については原因を調査するのがよいと思います。
まとめ
今回はLoggolとiLogScannerを簡単に比較してみました。iLogScannerの最大の魅力は無料で使えるところです。一方で、iLogScannerは見つけられない攻撃が比較的多いという印象です。また、LoggolにはAPIがあるので、ログ分析の一連の処理を自動化できるところが利点となっています。二週間の無料トライアル期間がありますので、ぜひお気軽にご利用ください。