Isolation Forest + eBPFイベントでLinuxベースのエンドポイント検知システムを作る [P]

Reddit r/MachineLearning / 2026/4/23

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsIdeas & Deep AnalysisModels & Research

要点

  • 「guardd」は、エンドポイント上の実行・ネットワークイベントを(eBPFイベントを通じて)収集し、Isolation Forestで異常検知するLinuxのホストベース・システムを目指している。
  • 60秒ごとにイベントを集約して特徴ベクトルに変換し、イベント数、ユニークなプロセス/ファイル/IP/ポート数、親子関係パターン、特徴量同士の比率に加えて「新規 vs ベースライン」を追跡する情報も用いる。
  • 学習は完全に教師なしで、ベースラインデータでIsolation Forestを学習し、検知時はscore_samplesでスコアリングし、そのしきい値は学習スコア分布のパーセンタイルで決める。
  • 現在の大きな課題は偽陽性の高さで、とくにブラウザのようなばらつきが大きい挙動は、ベースラインに何が含まれていたか次第で異常に見えてしまいやすい。
  • 改善として、時間帯や行動パターンの特徴追加、正規化の見直し、バースト的な挙動への対処を検討しており、完全教師なしを続けるべきか、よりハイブリッド(半教師あり)にすべきかも議論している。

みなさんこんにちは。guardd という機械学習プロジェクトに取り組んでいて、ML側についてフィードバックをいただきたく投稿しました。

これは基本的に、Isolation Forest を使った Linux 向けのホストベースの異常検知システムです。実行(exec)やネットワークのイベントを収集し、それらを 60 秒のウィンドウにグルーピングし、その後モデルにスコアリングさせる特徴ベクトルに変換しています。

現時点の特徴量は、例えば exec とネットワークイベントの回数、あるウィンドウ内に現れるユニークなプロセス数・ファイル数・IP数・ポート数、いくつかの親子関係のパターン、特徴量間のいくつかの単純な比率などです。さらに「新規 vs ベースライン」の追跡もあり、学習中に見られなかったプロセスや関係が現れたかどうかのような指標も含めています。

学習は完全に教師なしです。ベースラインデータを収集し、Isolation Forest を学習させ、検知では score_samples を使用します。閾値は、学習スコア分布からのパーセンタイルに基づいて決めています。

いま一番の問題は誤検知(false positives)で、特にブラウザのようなものからの誤検知が多いです。ばらつきが大きいものは、ベースラインに何が入っていたか次第で異常に見えてしまうことがあり、モデルは学習データにかなり敏感です。

今は、時刻(time of day)や活動パターンのような時間ベースの特徴量を追加すること、正規化をもう少し改善すること、バースト的な振る舞いをうまく扱えるようにすることを検討しています。

この種のデータに対する特徴量設計について、人々がどう考えているのか知りたいです。ノイズは多いが通常の振る舞いについて Isolation Forest の感度を下げるにはどうすればいいのか、またここで完全に教師なしのままでいるのが妥当なのか、それともよりハイブリッドな方向に進めたほうがよいのか、意見を伺いたいです。

アプローチについての考えがあれば嬉しいです。

リポジトリはこちらです: https://github.com/benny-e/guardd.git

submitted by /u/No-Insurance-4417
[link] [comments]