Gitlab 用に Falco を拡張

By 清水 孝郎 - JANUARY 13, 2025

SHARE:

本文の内容は、2025年1月9日に Nigel Douglas が投稿したブログ(https://sysdig.com/blog/falco-for-gitlab/)を元に日本語に翻訳・再構成した内容となっております。

GitLab が Package Hunter プロジェクトで Falco を活用し、システム コールの監視を通じて脅威を検知する方法については、多くの人が知っています。しかし、監査イベントを GitLab から直接取り込み、Falco 内で実行可能なフィールドに変換する、Falco 用の強力な GitLab プラグインについて知っている人は少ないかもしれません。

GitLab 監査イベントフィールドを統合することで、潜在的な脅威をリアルタイムで検知し、構成された通知チャネルを通じてアラートを送信する Falco ルールを作成できます。GitLab は、リアルタイム監査イベントの詳細な開発ガイドラインを提供しています。

監査イベントストリーミングの構成

GitLab プラグインは Webhook サーバーとして機能し、監査イベントを直接 Falco にストリームすることを可能にします。一度 Audit Event Streaming Destination として設定されると、GitLab はこれらのイベントを Falco に転送し、rules/gitlab.yaml ファイルに定義されたルールに基づいて解析および評価されます。

監査イベントのストリーミング先は、グループレベルまたはインスタンスレベルのいずれかで設定できます。インスタンスレベルで設定する場合、サーバーはすべてのインスタンス監査イベントを Falco に転送し、より広範囲にカバーします。逆に、グループレベル設定では、検知が特定のグループに絞り込まれます。最大限の可視性と脅威検知のために、インスタンスレベルでのストリーミングイベントが推奨されます。

設定プロセス中に、GitLab は検証トークンを発行します。このトークンを falco.yaml 構成ファイルに追加して、Falco が受信イベントを認証および検証できるようにする必要があります。

Falco における IP 位置情報の強化

このプラグインの際立った特徴は、MaxMind GeoLite (無料) または GeoIP2 (商用) データベースを使用して、IP アドレスを地理位置情報データで強化できることです。この強化により、監査イベントに貴重なコンテキストが追加され、チームが地理的な異常に基づいて疑わしいアクティビティを検知できるようになります。

地理位置情報の強化を有効にするには:

  1. MaxMind データベースに登録します。
  2. MaxMind City Database を.mmdbフォーマットでダウンロードします。
  3. データベースを Falco がアクセスできる場所に保存します。
  4. falco.yaml ファイルで maxmindcitydbpath オプションを指定して、データベースパスを設定します。

ルールの作成

プラグインにはさまざまなデフォルトの Falco ルールが付属しており、悪意のあるイベントの検知を効率化します。一例として、なじみのない地理的な場所から管理モードへの不正アクセスの試みを検知することが挙げられます。

- rule: GitLab Admin Mode from unknown country

desc: User failed login by entering wrong password

condition: gitlab.event_type=user_enable_admin_mode and not gitlab.country in (gitlab_known_countries)

output: |

GitLab Admin Mode from unknown country:

-------------------------------------------------------------------------------------------

Event ID: %gitlab.event_id, Event Type: %gitlab.event_type, Created At: %gitlab.created_at

IP Address: %gitlab.ip_address, City: %gitlab.city, Country: %gitlab.country, Country ISO:
%gitlab.countryisocode, Continent: %gitlab.continent

Author ID: %gitlab.author_id, Author Name: %gitlab.author_name, Author Email:
%gitlab.author_email, Author Class: %gitlab.author_class,

Entity ID: %gitlab.entity_id, Entity Type: %gitlab.entity_type, Entity Path:
%gitlab.entity_path

Operation Type: %gitlab.op_type, Operation Item: %gitlab.op_item, Operation Changed From:
%gitlab.op_changed_from, Operation Change To: %gitlab.op_changed_to

Target ID: %gitlab.target_id, Target Type: %gitlab.target_type, Target Details:
%gitlab.target_details

Custom Message: %gitlab.custom_message

Failed Login: %gitlab.failed_login

-------------------------------------------------------------------------------------------

priority: WARNING

source: gitlab

tags: [gitlab, T1098, persistence, privilege-escalation]

検知の出力は、フォレンジックに重要な抽出イベントフィールドを組み込むことで常にカスタマイズできます。上記の Falco 検知ルールでは、GitLab 固有のフィールドから取得したカスタムメッセージが含まれています。私は、GitLab における永続性の維持や権限昇格を目的としたアカウント操作に焦点を当てた MITRE ATT&CK 戦術 T1098 の任意のタグ付けを追加しました。

Falco の Okta プラグインが Okta における多要素認証 (MFA) の削除を検知するのと同様に、GitLab プラグインはユーザーの MFA 変更を検出することが可能であり、ユーザーアクセスや権限の定期的な監査にも重要です。

- rule: GitLab - User disabled two-factor authenticaton

desc: User disabled two-factor authenticaton

condition: gitlab.event_type=user_disable_two_factor

output: |

GitLab - User disabled two-factor authenticaton:

-------------------------------------------------------------------------------------------

Event ID: %gitlab.event_id, Event Type: %gitlab.event_type, Created At: %gitlab.created_at

IP Address: %gitlab.ip_address, City: %gitlab.city, Country: %gitlab.country, Country ISO:
%gitlab.countryisocode, Continent: %gitlab.continent

Author ID: %gitlab.author_id, Author Name: %gitlab.author_name, Author Email:
%gitlab.author_email, Author Class: %gitlab.author_class,

Entity ID: %gitlab.entity_id, Entity Type: %gitlab.entity_type, Entity Path:
%gitlab.entity_path

Operation Type: %gitlab.op_type, Operation Item: %gitlab.op_item, Operation Changed From:
%gitlab.op_changed_from, Operation Change To: %gitlab.op_changed_to

Target ID: %gitlab.target_id, Target Type: %gitlab.target_type, Target Details:
%gitlab.target_details

Custom Message: %gitlab.custom_message

Failed Login: %gitlab.failed_login

-------------------------------------------------------------------------------------------

priority: WARNING

source: gitlab

tags: [gitlab, T1556.006, persistence, credentials-access]

まとめ

GitLab の監査イベントを取り込むプラグインを追加することで、Salesforce Plugin for Falco と同様に、セキュリティおよび運用チームは SaaS 環境内での脅威検知と対応を強化できます。統一されたルールエンジンを通じて、ホストおよびコンテナセキュリティをクラウドネイティブなワークフローに不可欠なコードリポジトリと結び付け、分散システム全体にわたる包括的な可視性を提供します。

Falco の GitLab プラグインは、リアルタイムアラート、IP ジオロケーション強化、詳細なイベント解析を提供し、疑わしい活動をプロアクティブに特定してセキュリティ態勢を強化します。ユーザーアクションや管理者の変更を追跡することから、不審なログイン試行を検出することまで、この統合は DevOps パイプライン全体での脅威を軽減する能力をチームに付与します。

Falco と GitLab を活用する組織にとって、このプラグインは SaaS セキュリティのカバレッジをシームレスに拡張し、コードからデプロイメントに至る開発ライフサイクルを保護します。Sysdig がオープンソースの Falco とその柔軟なプラグインアーキテクチャーをどのように活用してイノベーションを推進しているかをぜひご確認ください。