ディスカッション (1件)
npm、pnpm、yarn、bun、uvなどのサプライチェーン攻撃対策として「リリース後◯日経過していないパッケージはインストールしない(クールダウン)」といった推奨設定がよく語られますが、結局面倒でやっていない人は多いのではないでしょうか。設定ファイルは5種類、時間単位もバラバラ。そんな「後でやろう」という先延ばしを解消するために、設定チェックと自動適用を行うツール「DepsGuard」を作りました。
DepsGuardはRust製のバイナリで、ランタイム依存なしのMITライセンスです。depsguardを実行すると、ユーザーレベルおよびリポジトリレベルのConfigをスキャンし、現状の設定を表形式で表示。変更したい項目を選んでdキーで差分を確認し、適用するだけです。自動でタイムスタンプ付きのバックアップを作成するため、depsguard restoreですぐに元に戻せます。
対応している主な設定は以下の通り:
・min-release-age / minimumReleaseAge(各マネージャーごとの単位や名称の差異を自動吸収)
・ignore-scripts
・block-exotic-subdeps(pnpm)
・trust-policy: no-downgrade
・strict-dep-builds
・Renovate / Dependabotのクールダウン設定
今回のツールは「タイミング」に賭けるアプローチです。悪意のあるパッケージの多くは公開から数時間〜数日で削除されることが多いため、7日間のゲートを設けるだけでリスクを大幅に低減できます(もちろん、既存のロックファイルのCVEスキャンといったSCAの代わりにはなりませんが、強力な防御層になります)。
「シェルスクリプトで十分では?」と言われればその通りですが、Windows対応などを考慮してRustで実装しました。商用AppSecスタートアップArnicaのCTOとして、ブログで同じ注意喚起を繰り返すことに限界を感じ、誰でも簡単に設定を強制できるツールとして公開しました。アカウント登録もテレメトリも一切なし、完全無料です。
インストールは cargo install depsguard 、または各パッケージマネージャー経由で可能です。詳細はGitHubをご覧ください。
GitHub: https://github.com/arnica/depsguard
公式サイト: depsguard.com