View on GitHub

field-cage

A lightweight eBPF agent that monitors and restricts outbound network connections on GitHub Actions runners.

field-cage

OpenSSF Scorecard

field-cage は GitHub Actions ランナー上の外部通信を監視・制限する軽量 eBPF エージェントです。ビルド中の不正なデータ送出や外部コード取得といったサプライチェーン攻撃を検出・防御します。

English documentation

概要

eBPF を通じて Linux カーネルレベルで全アウトバウンド接続をリアルタイムに監視します。DNS パケット監視により IP アドレスをドメイン名に自動変換し、YAML で定義した allowlist に照らして各接続の許否を判定します。

特徴

クイックスタート

Composite Action にインライン allowlist を指定して追加します。

- uses: takihito/field-cage@v0.1.0
  with:
    version: v0.1.0
    mode: block
    allow: |
      github.com
      api.github.com
      objects.githubusercontent.com
      registry.npmjs.org

ポリシーファイル形式やスタンドアロン実行は使い方を、Composite Action の入力・利用例・リリース検証はGitHub Actionsを参照してください。

ログ出力例

verdict=ALLOW                pid=1234   tgid=1234   comm=curl             dst=api.github.com (140.82.121.5):443
verdict=DENY(not-in-policy)  pid=1235   tgid=1235   comm=python3          dst=suspicious.example.com (93.184.216.34):443
verdict=DENY(no-domain)      pid=1236   tgid=1236   comm=curl             dst=93.184.216.34:80
verdict 意味
ALLOW ポリシーで許可された接続
DENY(not-in-policy) ドメインが allowlist に含まれない
DENY(no-domain) ドメイン不明(IP 直指定、または DNS 応答未観測)
SKIP(dns) ポリシー評価対象外の DNS 通信(信頼リゾルバまたはループバック宛。allow_all_dns 設定時やポリシー無しの場合は全 port-53 宛先)
SKIP(loopback) ループバック宛先(127.0.0.0/8, ::1)。enforcement 対象外
SKIP(self) エージェント自身のプロセスによる接続(allowlist 作成のための起動時 DNS 解決)。監視対象のワークフローによる通信ではない

サプライチェーンセキュリティ

ソースコード・Issue・リリースは GitHub リポジトリ を参照してください。