HN 日本語サマリー

← 一覧へ戻る
プログラミング

パッケージマネージャーにはグローバルなフックが必要

Package Managers need global hooks (captnemo.in)

7 pointsby evakhoury1 コメント

要約

この記事は、パッケージマネージャーにグローバルなフック機能を追加することを提案しています。現在のパッケージ管理エコシステムが直面しているセキュリティ上の脅威に対し、依存関係のクールダウンやポリシーといった対策が導入されていますが、筆者はこれらの実装を簡素化し、より柔軟なセキュリティ対策を可能にするグローバルフックの必要性を訴えています。これにより、個別の開発者でもセキュリティツールを簡単に統合できるようになります。

全文翻訳

Nemo's Home パッケージマネージャーにはグローバルなフックが必要 ⚓ 2026年6月17日この投稿は、AURヘルパーの提案としてr/archlinuxに書いたものの拡張です。これは、すべてのパッケージマネージャーがグローバルなフックのサポートを追加するよう求めるものです。私たちが皆依存しているパッケージングエコシステムは、常に攻撃にさらされてきました。現在最も興味深い対抗策は、依存関係のクールダウンと依存関係のポリシーです。3番目に興味深いのはHomebrewのクールダウンで、これはPython/NPMエコシステムからのパッケージを自動的に更新する前に1日間待機するというものです。さらに、現在ではほとんどすべてのセキュリティベンダーがパッケージ管理の「ファイアウォール」を提供しています(例:Socket、Datadog、Safedepなど)。これが機能する様々な方法は以下の通りです。レジストリモード:パッケージマネージャーをローカルレジストリに向け、それがリクエストをプロキシし、適切と判断したアクセスをブロックします。シェルラッパー:パッケージマネージャーにエイリアスを設定し、コマンドを傍受します。シェルエイリアスは非常に弱いセキュリティ境界です。MITMモード:HTTPSプロキシとして設定し、ネットワークトラフィックを傍受します。私はこれらのどれも好きではありません。上記のすべては、レジストリAPIまたはコマンドスキーマのいずれかに大きく依存しています。また、(スキャンを行うホスト型パススルーレジストリのような)追加インフラを必要とするメカニズムも好きではありません。なぜなら、それは企業のみがアクセスでき、個々の開発者にはアクセスできない追加インフラだからです。私の過激なパッケージマネージャーのアイデアはこれです:すべてのパッケージマネージャーはグローバルなフックをサポートすべきです。クールダウンとポリシーは、まともなフックシステムが既に可能にすべき実装の詳細にすぎません。私がグローバルなフックと言うのは、パッケージマネージャーのワークフローの様々な段階の前に実行される、グローバルに設定されたコードのことです。これは「ローカルパッケージフック」とは異なります。ローカルパッケージフックは、パッケージがインストールされる最中/前/後に実行されるパッケージ固有のコードです。私はStepSecurity OSS Feedとpnpmのフックシステムを使用して、依存関係ポリシーの概念実証を構築しました。すべてのパッケージインストールは脅威フィードに対してチェックされ、悪意のあるものがインストールされていると判断された場合は例外を発生させます。残念ながら、pnpmのフックはワークスペースごとです。これは、グローバルなインストールで実行したり、グローバルに設定したりできないことを意味します。NPMはフックをサポートしていません。Yarnにはyarnプラグインが使用できるフックAPIがありますが、グローバルに設定できるかは不明です。しかし、他のパッケージマネージャーに移ると、同じシステムが問題に対処するのに役立ちます。AURヘルパーはフックスクリプトを追加でき、PreCloneまたはPreBuild段階で独自の脅威フィードやマルウェアスキャナーをフックとして設定できます。さらに重要なのは、フックはパッケージである必要はなく、グローバルな設定として扱われるべきだということです。すべての防御機能をすべてのパッケージマネージャーで再発明する必要はありません。代わりに、パッケージマネージャーにグローバルフックのサポートを求めてください。pnpmの機能リクエストuvの関連イシューParuは既にPreBuildフックをサポートしています。yayのフックシステムは、クールダウンチェックができるUpgradeSelectイベントのためにアップグレードされました。これは脅威フィードにも簡単に拡張できるはずです。(ここにさらに追加するコメント)。2026年6月17日 Nemoによる公開