Airgapを使用してAIエージェントやNPMインストールから秘密を隠す
Airgapは、プログラムを名前空間内でラップすることで、ファイル内の機密情報をAIエージェントから隠蔽し、パッケージマネージャのアクセスを制限するLinuxツールです。これにより、悪意のあるnpmパッケージによる認証情報の窃取を防ぎます。
現代のAI時代において、開発者はAIエージェントにプロジェクトファイルの読み書きを許可し、インターネットからスキルやプラグインをインストールすることが増えています。npmエコシステムでは、Shai-Huludワームのような悪意のあるマルウェアが、インストール時にフックを利用して.envファイル、SSH鍵、クラウド認証情報を盗み出します。さらに、AIエージェントがコマンドを実行したりnpmパッケージをインストールしたりする際、そのパッケージが幻覚や悪意によって生成されることもあります。これらのセキュリティリスクに対処するため、Sven Sauleau氏はAirgapを開発しました。
Airgapは、Linuxの名前空間技術を使用してプログラムをラップします。新しいマウント名前空間とユーザー名前空間内でターゲットプログラムを起動し、ホームディレクトリとカレントワーキングディレクトリをFUSEファイルシステムとしてマウントします。すべてのファイルシステムアクセスはAirgapのハンドラを通過し、秘密情報の編集や予期しないファイルアクセスに対する確認が行われます。例えば、プログラムが.envや秘密鍵、~/.npmrcを読み取ると、実際の値は隠蔽され編集された内容が返されます。~/.aws/credentialsのような予期しないファイルへのアクセスは、ユーザーの許可を求めます。
Airgapは現在、AIエージェントとパッケージマネージャの2種類のプログラムをサポートしています。ClaudeやOpenCodeなどのAIエージェントに対しては編集モードのみが有効で、エージェントはファイルを操作できますが実際の秘密は見えません。npmに対しては、編集に加えてインタラクティブなファイルゲートが導入されています。npmインストール時にフックが~/.ssh/id_rsaなどの機密ファイルを読み取ろうとすると、Airgapは確認を促し、許可がない限りブロックします。通常のファイル読み取り(package.json、lockfiles、npmキャッシュなど)は事前に承認されており、プロンプトは表示されません。
Shai-Huludワームは、2025年末にnpmを介して拡散した自己複製型ワームで、インストール時に.npmrcのnpmトークン、環境変数、GitHub PAT、AWS/GCP/Azureのクラウドキーを盗み出し、攻撃者に送信します。さらに、盗んだnpmトークンを使用して、開発者が管理する他のパッケージのバックドアバージョンを再公開します。Airgapは、秘密情報の編集とファイルゲートにより、これらのマルウェアが実際の認証情報にアクセスするのを防ぎます。
シームレスに統合するために、シェル設定にエイリアスを追加できます。例:alias claude="airgap claude"、alias npm="airgap npm"。これにより、すべての操作が自動的にAirgap下で実行されます。ただし、Airgapは完全なセキュリティを保証するものではなく、一層に過ぎません。開発者は引き続き警戒する必要があり、プロジェクトへの貢献や問題報告が歓迎されています。現在AirgapはLinuxのみ対応で、macOSサポートは開発中です。プロジェクトはGitHubでホストされており、crates.ioからインストールできます。