GitHub、npmのステージング公開と詳細なインストール制御でセキュリティを強化
**GitHub**は**npm**にステージング公開機能を導入し、パッケージが公開される前にメンテナーによる二要素認証(2FA)での承認を必須としました。このアップデートは、すべての公開に対して存在証明を確実にする事で、ソフトウェアサプライチェーンのセキュリティを強化することを目的としています。さらに、新しいインストールソースフラグにより、開発者はパッケージインストールのより詳細な制御が可能になります。

### ステージング公開が一般提供開始
**GitHub**は、ソフトウェアサプライチェーンのセキュリティを強化するために設計された新しいセキュリティ機能であるステージング公開を**npm**向けに展開しました。この機能により、メンテナーはパッケージがインストール用に公開される前に、リリースを明示的に承認できるようになります。
ステージング公開は現在**npm**で一般提供されています。これにより、パッケージがnpmjs[.]comにプッシュされる前に、人間であるメンテナーが二要素認証(2FA)チャレンジを通過してパッケージを承認することが義務付けられます。
「コンシューマーがすぐに利用できるパッケージバージョンを直接公開するのではなく、ビルド済みのtarballがステージキューにアップロードされ、メンテナーがそれを明示的に承認するまでインストール可能にならない」と**GitHub**は述べています。
**Microsoft**傘下の同社は、この変更により、非インタラクティブなCI/CDワークフローやOpenID Connect(OIDC)認証による信頼された公開からのものを含む、すべての公開に対して「存在証明」が保証されると述べています。
### ステージング公開の前提条件
ステージング公開を利用する前に、パッケージメンテナーは以下の基準を満たす必要があります。
* パッケージに対する公開アクセス権を持っていること。
* パッケージが既に**npm**レジストリに存在していること。新規パッケージはステージングできません。
* アカウントで2FAが有効になっていること。
開発者は、パッケージのルートディレクトリから`npm stage publish`コマンドを使用して、ステージングエリアに提出できます。このコマンドを使用するには、**npm** CLI 11.15.0以降に更新することが不可欠です。最適な保護のために、**GitHub**はステージング公開とOIDCを使用した信頼された公開を組み合わせることを推奨しています。
### 詳細なインストールソースフラグ
**npm**に焦点を当てた2番目のアップデートでは、既存の`-allow-git`フラグに加えて、3つの新しいインストールソースフラグが導入されました。
* `--allow-file`: ローカルファイルパスおよびローカルtarballからのインストールを制御します。
* `--allow-remote`: https tarballを含むリモートURLからのインストールを制御します。
* `--allow-directory`: ローカルディレクトリからのインストールを制御します。
これらのフラグにより、開発者は「レジストリ以外のすべてのインストールソースに対して、同じ明示的な許可リストアプローチを適用できる」と**GitHub**は述べています。
### サプライチェーン攻撃への対応
この開発は、オープンソースエコシステムを標的としたソフトウェアサプライチェーン攻撃の急増の中で行われています。最近の**TeamPCP**の侵害を含む活動は、**npm**エコシステム内でのセキュリティ対策の強化の必要性を浮き彫りにしています。