
現代AI時代のセキュリティ:悪意のあるAIエージェントと悪質なnpmパッケージから防御する
現代 AI 時代のためのセキュリティ。
完璧なセキュリティ層は存在しません。airgap はまだ実験的です。貢献を 歓迎します!
airgap は、対象プログラム(例: AI コーディングエージェント)を独自のマウント名前空間内で起動し、秘密情報を編集済みバージョンに透過的に置き換えます。airgap の下で実行されるプログラムは、保護されたファイルを読み取ることも変更することもできますが、実際の秘密情報を目にすることはありません。現在 airgap が保護するのは次のとおりです:
.env と .env.*(例: .env.local、.env.production)— ファイル名で一致します。キーは表示したまま、値は <redacted value> に編集されます。編集・追加・削除は実際のファイルに反映されます。BEGIN/END マーカーは残したまま、鍵本体が編集されます。.npmrc — ファイル名で一致します。認証トークンとパスワードの値(_authToken、_auth、_password、レジストリごとの //registry/:_authToken 形式を含む)は <redacted value> に編集されますが、レジストリ、スコープ、email、コメントは表示されたままです。編集は実際のファイルに反映されます。さらに多くの種類の秘密情報が追加される予定です。
これらは作業ディレクトリまたはホームディレクトリ($HOME)配下のどこでも編集されます。つまり、プロジェクトの .env と ~/.ssh キーの両方がカバーされます。マッチングは動的で、起動後に作成されたファイルも捕捉されます。
airgap を使う場合と使わない場合の .env の内容を比較してください:
$ cat .env
API_KEY=sk-live-9f8c2a1b4e7d
DB_PASSWORD=hunter2
$ airgap cat .env
API_KEY=<redacted value>
DB_PASSWORD=<redacted value>
AI エージェントの場合:
$ airgap claude
show me ./test/fixtures/.env contents
Read 1 file
Here's the file:
DATABASE_URL="<redacted value>"
API_KEY="<redacted value>"
AWS_SECRET_ACCESS_KEY="<redacted value>"
DEBUG="<redacted value>"
...
追加のレイヤーが悪意のあるパッケージから防御します: airgap は、予期しないファイルがアクセスされたとき(たとえば悪意のある npm install スクリプトによるアクセス)にあなたの許可を求めます。
ゲートがアクティブなとき、airgap は新しい各ファイルの最初の読み取りを許可するか拒否するかを尋ねます。ファイルを承認すると、そのファイルのみが許可されます。決定は実行中だけ有効です。各パッケージマネージャーには、事前承認済みファイルのリストが付属しています。
たとえば、postinstall スクリプトが SSH キーと .env の読み取りを試みる悪意のあるパッケージをインストールする場合:
$ airgap npm install
...
airgap: npm wants to read the file /home/you/.ssh/id_rsa — allow? [y/N] n
airgap: npm wants to read the file /home/you/.env — allow? [y/N] n
アクセスを拒否するには n と答えます。
airgap は Linux の機能であるマウント名前空間と FUSE オーバーレイに依存しています。cargo install airgap
airgap <program> [args...]
airgap は <program> を [args...] 付きで実行し、argv、環境変数、作業ディレクトリを変更せずにそのまま渡します。<program> が終了すると、airgap も同じ終了コードで終了します。
AI エージェントを常に airgap の下で実行するには、シェル設定(~/.bashrc、~/.zshrc など)でエイリアスを定義します:
alias claude="airgap claude"
alias opencode="airgap opencode"
これで claude(または opencode)は airgap 内で透過的に実行されます。
悪意のあるインストールスクリプトから保護するために、パッケージマネージャーを airgap の下で実行します。または、シェル設定でエイリアスを定義します:
alias npm="airgap npm"
セキュリティ上の問題を報告したい場合、または質問がある場合は、[email protected] までメールしてください。