
oversight v0.5.8
軽量なセキュリティ監査およびサンドボックス for シェルスクリプト。Oversight は静的解析エンジン (Rust) と動的強制 (Linux Landlock) を組み合わせ、悪意のあるスクリプトからシステムを保護します。
Oversight (v0.5.8)
Oversight は、シェルスクリプトやコマンドがシステムに影響を及ぼす前に監査するために設計された、ターミナルベースのセキュリティインテリジェンスツールです。「盲目的な信頼」と「手動監査」の間を埋めるもので、ローカルファイルと Raw URL を介したリモートスクリプトの両方を高速かつ対話的に分析します。
Oversight

Live AUR Update

Screenshot 1

Screenshot 2

ミッション
ほとんどのシステム侵害は、検証されていないパッケージのアップグレードを実行したり、生のセットアップスクリプトを実行するといった「飛躍的な信頼」によって発生します。Oversight はこれらのバッファを明確に可視化し、悪意のあるパターンをフラグ付けし、セキュリティリスクを平易な言葉で説明することで、インストールを確定する前に十分な情報に基づいた判断を下せるようにします。
機能
- 動的マルチストリームタブレイアウト: 飛行的に統一された git ストリームヘッダーを自動解析します。バッチアップデートが到着すると、結合されたパッチストリームを分離し、各パッケージ専用の読み取り可能なタブを生成し、ローカルビルドディレクトリから付随する
.installスクリプトや.patchファイルを取得して監査します。 - ヒューリスティックエントロピーエンジン: Shannon エントロピー計算を実装し、難読化されたペイロード、パックされたデータ、従来の正規表現スキャナでは見逃される隠し文字列を特定します。
- 悪意のあるライフサイクル追跡: スクリプト内の関連イベント(トロイの木馬インストーラに典型的な Fetch -> パーミッション変更 -> 実行チェーンなど)をリンクする高度な行動分析。
- セキュリティヒートマップサイドバー: アクティブなファイル全体の脅威分布をリアルタイムで視覚的に表示する垂直トラック。正確な座標インジケータが、すべての異なるタブバッファに対して正確にスケーリングされることを保証します。
- フォレンジック対策 & 永続化検出: 自己削除 (
rm $0)、サイレントパイプライン (> /dev/null)、RAM のみの実行パス (/dev/shm)、リロードフック (crontab、systemctl) などのステルス行動を監視します。 - 重み付けリスクスコアリング: リスクスコアの肥大化を避けるフラットなマクロ指標に基づき、0 から 100 の安全性指数を実装し、ストリームをクリーン、注意、危険に分類します。
- グローバル軽減トグル: TUI 内の単一スイッチで、アクティブな検出結果を即座に抑制できます。これにより、フラグ付きブロックをコメントアウトして表示を視覚的に浄化し、グローバルリスクスコアインデックスをリアルタイムで再計算します。
- クリーンストリームページャーモード: 空のビューポートブロックを削除します。ストリームがゼロフラグで分析を通過した場合、フルターミナルレイアウトは機能的なページャーとして開いたままになり、通常の行単位の手動コードレビューが可能になります。
- 動的ルールエンジン: パターンは独立したルールモジュールに外部化されており、TUI のパースループを壊すことなく、異なるパターンシグネチャに対してモジュラー更新が可能です。
- リモートフェッチエンジン: GitHub、Gist、または Raw URL からスクリプトを直接、メモリのみの分析で安全に監査します。
- 教育的監査: すべてのセキュリティフラグに詳細な説明と外部参照が含まれており、ユーザーが悪意のあるスクリプトパターンを識別できるように学習を支援します。
- 脆弱性インテリジェンス: OSV.dev API を使用した既知の CVE のリアルタイムスキャンを統合。サポートされているパッケージインストールコマンドが検出されると自動的にトリガーされます。
依存関係
Oversight はパフォーマンスとバイナリ分離のために Rust で構築されています。コンパイルには以下のネイティブコンポーネントが必要です。
- Rust ツールチェーン:
cargoおよびrustc(Edition 2021)でネイティブエンジンをコンパイル。 - OpenSSL:
reqwestが安全なリモート TLS/SSL フェッチ操作を確立するために必要なシステムライブラリ。 - Core Crates:
ratatui、crossterm、tokio、reqwest、clap、およびregex。
インストールとセットアップ
- AUR 経由(Arch Linux 推奨) 安定版リリースは AUR で管理されています。好みのヘルパーを使用してインストールしてください:
yay -S oversight-git
- または手動でビルド:
git clone [https://aur.archlinux.org/oversight-git.git](https://aur.archlinux.org/oversight-git.git)
cd oversight-git
makepkg -si
- ソースから:
git clone https://github.com/Rakosn1cek/oversight.git
cd oversight
- 自動インストーラを実行:
インストーラはコンパイルを処理し、バイナリを
~/.local/binに移動し、必要なフックをシェル設定(.zshrc、.bashrc、または config.fish)に注入します。
chmod +x install.sh
./install.sh
- シェルを再読み込み:
source ~/.zshrc または該当するシェル設定ファイル
ファイルと場所
- バイナリ: ~/.local/bin/oversight
- ルールデータベース: ~/.local/share/oversight/rules.json($XDG_DATA_HOME に従います)
- シェルフック: ~/.local/share/oversight/oversight.[zsh|bash|fish]
使用方法
- ローカルスクリプトの監査:
oversight ./install.sh - リモート URL の監査:
oversight https://raw.githubusercontent.com/... - ローカル設定ファイルの監査:
oversight ~/.local/share/oversight/rules.json - ライブ保護:
curl https://...のようなスタンドアロンコマンドやrm -rf /のような危険なパターンを自動的にインターセプトし、複数オプションのトリアージメニューを提供し、実行前にダウンストリームの AUR キャッシュプロファイルを深く検査します。
シェル設定の統合
Oversight を主要なテキストおよびアップグレードページャーとして恒久的に展開するには、以下の設定ルールのいずれかをシェルプロファイルファイル(例:~/.zshrc、~/.bashrc、または ~/.config/fish/config.fish)に追加します:
オプション A: 専用 AUR ヘルパー統合(対象を絞る)
ヘルパーに Oversight をパッケージアップグレード専用で使用させ、他のシステムコマンドには影響を与えません:
yay の場合(~/.zshrc または ~/.bashrc):
alias yay="yay --diffpager oversight"
paru の場合(~/.config/paru/paru.conf): 以下の行を ~/.config/paru/paru.conf に追加します。CombinedUpgrade オプションを含める必要があります。含めないと、paru はテキストを Oversight に渡す前に ANSI カラーコードを取り除き、白黒のテキストになります。
[options]
Pager = oversight
CombinedUpgrade
Shelly などの他のヘルパーの場合 別のヘルパーを使用している場合は、AUDIT_HELPER 変数を使用して Oversight にキャッシュファイルの場所を伝える必要があります。例えば、次のように実行できます:
AUDIT_HELPER=shelly shelly -Sua | oversight
または、シェルプロファイルにグローバルにヘルパー変数をエクスポートして、Oversight が常にどのキャッシュパスを確認すべきかを認識できるようにすることもできます:
export AUDIT_HELPER="shelly"
オプション B: グローバルシステムページャー環境(汎用)
この設定は、Oversight をデフォルトのシステムテキストページャーとして登録します。これにより、パッケージ、マニュアルページ、git ストリームが自動的にインターフェース内で開かれます。
以下の行を ~/.zshrc または ~/.bashrc に追加します:
export PAGER="oversight"
export MANPAGER="oversight"
2 行目は、システム設定ですでに MANPAGER が less や他のツールに設定されている場合に必要です。
グローバルページャーの副作用リファレンス
- Oversight をシステムのプライマリテキストビューアとしてエクスポートしてグローバルに展開すると、エンジンはターミナルページング機構を通過するすべてのデータストリームをインターセプトします。
- システムはこれらの入力を安全に処理しますが、日常のターミナル操作で特定の動作に気付くでしょう。
- フルシステムアップグレードを実行すると、AUR キューに到達する前に公式リポジトリミラーが処理されます。公式バイナリには Git 構造パスやキャッシュスクリプトがないため、Oversight は自動的にフラットテキストバッファにフォールバックします。インターフェースは単一の「静的解析合格」検出行を表示し、矢印キーを標準のテキストページャーのようにテキストトランザクションリストを上下にスクロールするようにマッピングします。
man pacmanなどのコマンドリファレンスを参照すると、命令マニュアルが直接エンジンを経由してリダイレクトされます。テキストはクリーンストリームとして解析されるため、標準のビューポートホットキーを使用して統一された TUI フレーム内でドキュメントを確認できます。- ローカルリポジトリ内の
git logやgit diffなどのコアコマンドは、静的ルールデータベースを通過します。コミットに一致するシグネチャパターンが含まれている場合、エンジンアラートがトリガーされます。それ以外の場合は、メインペイン内に標準のコードレビューがクリーンに表示されます。 - 内部のパースロジックは、複数のパッケージタブを割り当てるために厳密な統一ヘッダーフックに依存しています。受信ストリームに特定のキャッシュトークン(通常のマニュアルページやリポジトリミラーなど)が含まれていない場合、マルチタブレイアウトは完全にバイパスされ、ターミナルワークスペースの断片化を防ぎます。
キーバインド:
- Up / Down Arrow Keys: 左パネルの検出項目を常にナビゲートし、リスト選択が決してトラップされないようにします。
- PageUp / PageDown Keys: リスト選択とは独立して、中央のコードビューポートを行単位で滑らかにスクロールします。
- Tab Key: アクティブなコードストリームセグメント間でフォーカスを前方に循環させ、結合されたパッチストリームから個々の PKGBUILD ソースタブに直接ジャンプします。
- Numeric Keys (0-9): 特定のタブインデックスレイアウトに即座にジャンプします。
- Left Arrow Key: ビューポートの垂直スクロール座標オフセットを即座に先頭にリセットします。
- [S] Key: グローバル抑制をトグルし、アクティブな選択ブロック全体のフラグ付きコードブロックを即座にコメントアウトし、リスクパラメータを一度に再調整します。
- [Q] or Esc: インターフェースを安全に閉じ、実行制御をターミナルプロセスパイプラインに戻します。
注記: Oversight は助言ツールです。堅牢な正規表現パターンマッチングを使用していますが、100% 完全なセキュリティツールはありません。常に「最終判定」をガイドとして使用し、ソースに確信が持てない場合はハイライトされたコードを手動でレビューしてください。
注記2: Oversight は現在活発に開発中です。そのため、現段階での機能やシステムへの影響については保証されません。
サポートと貢献
プロジェクトをサポートまたは貢献したい場合は、大歓迎です。
Oversight について話し合ったり質問したい場合は、私の Discord サーバー Rakosn1cek にご参加ください。<- これは任意であり、必須ではありません。
Issue を開いたり、Discussions にメッセージを残したりすることもできます。
ライセンス
MIT © 2026 Rakosn1cek。再配布や派生作品には帰属表示が必要です。