本文の内容は、2025年10月2日に Mike Watson & Takao Shimizu が投稿したブログ(https://www.sysdig.com/blog/bringing-web-application-security-to-falco-with-falcoyas-nginx-plugin/ )を元に日本語に翻訳・再構成した内容となっております。
多くの組織は、Linuxホスト、コンテナ、Kubernetes環境全体にわたるランタイムクラウドセキュリティの主要ソリューションとしてFalcoを活用しています。しかしながら、これらのチームはこれまで、WebアプリケーションのセキュリティにはFalcoを使用できませんでした。
そのため、Sysdig オープンソースコミュニティと TK Shimizu は、Falcoya を紹介できることを光栄に思います。Falcoya はオープンソースセキュリティエコシステムへの新たな仲間であり、これまで十分にカバーされてこなかった重要な領域 であるウェブアプリケーションセキュリティ に Falco の機能を拡張するものです。
ウェブアプリケーションセキュリティがランタイムで重要な理由
ランタイム セキュリティのソリューションとして Falco を実行している場合は、次のような振る舞い検知に優れていることはすでにご存知でしょう。
- 権限昇格
- 不正なファイルアクセス
- 疑わしいプロセスの動作
しかし、アプリケーション層での脅威はどうでしょうか?
Nginx などの Web サーバーはインフラストラクチャーのエッジに配置されており、次のような攻撃手法の標的となることがよくあります。
- SQL インジェクション (SQLi):信頼できない入力が SQL クエリに挿入され、攻撃者がバックエンドの SQL コマンドを操作してデータベース データを読み取り、変更、または削除できる Web アプリケーション攻撃。
- クロスサイト スクリプティング (XSS):攻撃者が他のユーザーが閲覧する Web ページに悪意のある JavaScript を挿入し、ユーザーのブラウザでのセッション ハイジャックや改ざんなどの操作を可能にする脆弱性。
- ディレクトリ トラバーサル:ファイル パスの入力を操作して、Web ルート外の制限されたディレクトリやファイルにアクセスし、機密性の高いアプリケーションやシステム データを潜在的に公開する Web ベースの攻撃。
- コマンド インジェクション (CMDi) : サニタイズされていないユーザー入力がシステム シェル コマンドに渡され、攻撃者が Web アプリケーションをホストしているサーバー上で任意のコマンドを実行できるセキュリティ上の欠陥。
しかし、FalcoはHTTPリクエストやWebペイロードをネイティブに検査するために構築されたわけではありません。システムレベルおよびインフラストラクチャーレベルのイベントに焦点を当てて構築されたものです。
ここで登場するのが Falcoya です。
Falcoyaの紹介: FalcoにおけるNginxログ分析
Falcoya (falco-plugin-nginx) は、Web アプリケーションのセキュリティ可視性のギャップを埋めるために設計された、Falco 用の軽量プラグインです。
Falcoya (falco-plugin-nginx) を使用すると、Falco は Nginx アクセスログをリアルタイムで解析し、アプリケーション層への攻撃を発生時に検知できます。Falcoya は、Nginx アクセスログファイルを tail し、新しいエントリを解析して、YAML で定義された検知ルールと照合することで動作します。これは、Falco で既に使用されているルールスタイルと同じです。
仕組み:
- 受信リクエスト → Nginx にヒット
- Nginxアクセスログ → 書き込まれる
/var/log/nginx/access.log
- Falcoyaプラグイン → 新しい行をリアルタイムで解析
- ルールエンジン → 既知の攻撃パターンと照合
- Falcoアラート → メタデータを含む構造化された出力をログに記録
結果はどうでしょう?既存の Falco セットアップを使用して、SQLi、XSS、CMDi などをリアルタイムで検知できるようになりました。
Falcoyaの主な特徴
- リアルタイムの Web 攻撃検出: SQL インジェクション、XSS、コマンド インジェクションなどの Nginx アクセス ログ内の脅威を即座に検知します。
- 超軽量のパフォーマンス: Go で実装されたこのプラグインは、システム オーバーヘッドが最小限に抑えられ、コンテナ化された環境に最適です。
- カスタムルールの作成:FalcoスタイルのYAMLを使用して、独自の検知ロジックを定義できます。アナリストはコードを変更することなく、新しいルールを作成できます。
潜在的なコマンドインジェクションを検出するルールの例を次に示します。
# SQLi: Require both "words + symbols/encoding" to reduce false positives
- rule: NGINX SQLi Attempt
desc: Likely SQL injection attempt detected in URL or query string
enabled: true priority: CRITICAL
source: nginx
condition: >
(not nginx_is_static) and
(nginx_is_readonly or nginx_has_body_method) and
nginx_has_sqli_words and nginx_has_sqli_rawchars
output: >
[NGINX SQLi] ip=%nginx.remote_addr method=%nginx.method path=%nginx.path qs=%nginx.query_string ua=%nginx.user_agent status=%nginx.status
tags: [web, attack, sqli]
Code language: PHP (php)
セキュリティチームにとってのメリット
Falcoya は、単なるプラグイン以上の、現実的なメリットをいくつか提供します。
- 可視性の向上: インフラストラクチャーツールでは検知されないことが多いWeb層攻撃を検知します
- 迅速な対応: 攻撃からアラートまでの時間を最小限に抑える
- コスト効率: サードパーティの WAF コストなしで高性能なオープンソース検知を実現
- 簡単な統合: 既存のFalcoベースの監視ワークフローにシームレスに適合します
Falcoyaを試してみましょう
公式インストール スクリプトを使用して、数分で Falcoya をデプロイします。
$ curl -sSL https://raw.githubusercontent.com/takaosgb3/falco-plugin-nginx/main/install.sh | sudo bash
Code language: JavaScript (javascript)
安全な環境で実際の攻撃をテストします。
$ curl -sSL https://raw.githubusercontent.com/takaosgb3/falco-plugin-nginx/main/install.sh | sudo SETUP_TEST_CONTENT=yes bash
Code language: JavaScript (javascript)
これにより、シミュレートされた攻撃エンドポイント、サンプル ログ、検証ツールを備えたテスト準備済みの環境が起動します。
まとめ: Falcoのランタイム範囲の拡大
Falcoは、ランタイムで異常なシステムの振る舞いを検知するための頼りになるエンジンとして既に利用されています。
Falcoya の Nginx プラグインを使用する組織は、Falco の高速性、透明性、カスタマイズ性を損なうことなく、Falco による保護範囲をウェブアプリケーションのアクティビティにも拡張することができます。
すでに Falco を実行していて、Web セキュリティの範囲を強化したい場合は、今すぐ Falcoya をお試しください。
オープンソースのディスカッションに参加したい場合は、Sysdig オープンソースコミュニティに立ち寄って参加してください。
プロジェクトの詳細: https://falcoya.dev
プラグインの入手: GitHub – falco-plugin-nginx