6月3日にリリースされたVS Code 1.123以降、新しく公開された拡張機能のバージョンは、自動更新が開始されるまで2時間待機する。 その考え方は単純明快だ。もし誰かが拡張機能のメンテナンス担当者のアカウントを乗っ取り、悪意のある更新をプッシュした場合でも、それが数百万人の開発者に展開される前に、それを検知してリリースを撤回する猶予が生まれる。もちろん、いつでも手動で「更新」をクリックできる。マイクロソフトは次のように明言した。
自動更新が有効になっている場合、新しいバージョンは公開から2時間後に自動更新されます。これにより、問題のあるリリースや、侵害された可能性のあるリリースに対する保護層が追加されます。
ただし、1つ注意点がある。この遅延は、マイクロソフト、GitHub、OpenAIといった「信頼済みパブリッシャー」の拡張機能には適用されない。それらは引き続き即座に更新される。膨大なインストールベースを持つ信頼済みパブリッシャーこそが、アカウント乗っ取りのもっとも価値の高い標的であるにもかかわらず、これは奇妙な例外措置だ。
この動きは、パッケージエコシステム全体で相次ぐ同様の制御措置に続く。pip 26.1では最近、設定可能な依存関係のクールダウン機能が導入され、チームは公開後7日未満のパッケージを利用不可にできる。調査によると、7日間のクールダウンがあれば、分析対象となったサプライチェーン攻撃の10件中8件を阻止できたという。 RubyGemsはBundlerにオプトイン式のクールダウン機能を追加した。npm、pnpm、Yarn、Bunはいずれも、過去1年間にリリース後の最低経過期間を設定する機能を導入している。VS CodeもIDEの拡張機能レベルでこれに加わったが、その2時間という期間は他のエコシステムが提供するものと比べて著しく短い。
Redditのスレッドでは、この期間について厳しい意見が寄せられた。650以上の高評価を得たトップコメントが、議論全体の方向性を示していた。
多くのサプライチェーン侵害は数日、あるいは数週間経ってから発見されることを考えると、2時間は到底不十分です。個人的には、デフォルトでより長い期間に設定し、ユーザーが選択できるオプションも追加した方が良いと思います。
あるセキュリティ専門家は、「すぐに更新する」という通説そのものに、さらに強く反論した。
私が今まで耳にしたサイバーセキュリティにおける最大の神話は、「更新が利用可能になったら必ずすべてダウンロードすること」です。私は極めてセキュリティレベルの高い環境で働いてきましたが、更新が常に最新だったことは一度もありません。ごく特定の脆弱性に対するパッチを除けば、常に1週間から最大1ヶ月の遅れがありました。
誰もがこの「2時間の待機期間」を即座に否定したわけではない。あるコメント投稿者は、悪意のあるパッケージのほとんどは人間ではなく、自動スキャナーによって検出されると指摘した。
悪意のあるnpmパッケージの圧倒的多数は、ユーザーではなく、自動化されたセキュリティスキャナーによって発見されます。これはVS Codeの拡張機能にも当てはまります。新しいパッケージがリリースされると、セキュリティスキャナーは直ちに不審なコードを探し始めます。しかし、この作業には2時間は確かに短すぎます。 結局のところ、セキュリティスキャナーがパッケージにフラグを立てたとしても、脅威が本物かどうかを確認するために、誰かがそれを確認する必要があります。
複数のコメント投稿者は、クールダウンは根本的な解決策にはならないと主張した。ある投稿者は、VS Codeは代わりに、モバイルOSがアプリに対して採用しているのと同じモデル、つまり明示的な権限設定によるサンドボックス環境で拡張機能を動作させるべきだと提案した。 別のコメント投稿者は、段階的な展開を提案した。ユーザーの5%にすぐにアップデートを配信し、さらに10%には数時間後に配信し、数日かけて段階的に拡大していき、最終的に全員に配信するのだ。そうすれば、侵害されたアップデートや悪意あるアップデートはまず少数のユーザーにのみ配布され、広範囲に配布される前にスキャナーやコミュニティが対応する時間を確保できる。
この手法の実用性は、すでに他の場所でより長いクールダウン期間を採用している開発者たちによって裏付けられた。 あるコメント投稿者は、npmライブラリに2週間の遅延を設定していると報告し、「これによって引き起こされた問題よりも、回避できた問題の方が多い」と述べた。別の投稿者は、勤務先で内部のnpmレジストリに対して6日間のポリシーを適用していると共有した。あるpnpmユーザーは、minimumAgeRelease設定のおかげで、ここ数ヶ月で2件のサプライチェーン攻撃から免れたと語った。
依然としてクールダウン機構を欠いているエコシステムがWordPressだ。InfoQが最近報じたように、ある攻撃者はFlippaで30以上のプラグインを購入し、最初のコミットにバックドアを仕込み、8ヶ月間待機してからそれを有効化した。 公開の遅延も、支配権変更時の審査も、コード署名の義務化もない。VS Codeの変更はささやかだが、そうした欠如を無視しにくくしている。
VS Codeのデプロイを管理するチームにとって、2時間の遅延はデフォルトで有効になっており、設定は不要だ。より長い猶予期間を望む場合は、自動更新を完全に無効にし、ポリシーに基づく許可リストや厳選された内部マーケットプレイスを通じて拡張機能のバージョンを管理できる。
VS Code 1.123は、Windows、macOS、Linux向けに現在利用可能だ。