Починаючи з версії VS Code 1.123, Microsoft запроваджує двогодинну затримку автоматичного оновлення розширень — простий, але дієвий механізм захисту від атак на ланцюг постачання програмного забезпечення. Затримка дає спільноті та системам безпеки час виявити шкідливі або скомпрометовані версії розширень до того, як вони масово поширяться серед мільйонів користувачів IDE. Це нововведення вписується в загальногалузевий тренд: подібні механізми мінімального віку пакетів уже реалізовано в npm, pnpm, Yarn і Bun.
Як працює затримка у VS Code
За увімкненого автоматичного оновлення розширень нові версії тепер встановлюються не миттєво, а через дві години після публікації. В інтерфейсі VS Code користувач бачить причину, чому оновлення ще не застосовано, і точний час, коли воно буде встановлене автоматично. Водночас ручне оновлення через кнопку «Update» як і раніше доступне будь-коли — затримка стосується виключно автоматичного процесу.
Важлива деталь: двогодинна затримка не поширюється на розширення від довірених видавців — Microsoft, GitHub та OpenAI. Розширення цих компаній і надалі оновлюються миттєво. Це компромісне рішення: з одного боку, великі вендори мають власні процеси перевірки коду та підписання релізів; з іншого — саме компрометація довіреного видавця становила б найбільшу загрозу, і в такому сценарії затримка не спрацює.
Галузевий контекст: мінімальний вік пакетів
Рішення Microsoft — частина ширшого руху в екосистемі розробки. За останній рік механізми відкладеної установки нових версій пакетів з’явилися відразу в кількох менеджерах залежностей:
- npm v11.10.0+ — параметр
min-release-age(документація) - Yarn Berry 4.10.0+ — параметр
npmMinimalAgeGate(реліз на GitHub) - pnpm 10.16+ — параметр
minimumReleaseAge(нотатки до релізу) - Bun 1.3+ — параметр
minimumReleaseAge(блог проєкту)
Логіка в усіх випадках однакова: більшість шкідливих пакетів виявляють і видаляють із реєстрів у перші години після публікації. Затримка встановлення звужує вікно, протягом якого скомпрометована версія може поширитися до того, як її позначать як шкідливу й видалять. Це не панацея, а додатковий шар захисту, який працює саме проти найпоширенішого сценарію — швидкої публікації шкідливого оновлення з розрахунком на його автоматичне розповсюдження.
Оцінка ефективності та обмеження
Двогодинне вікно — розумний баланс між безпекою та зручністю. Для атак на кшталт «захоплення акаунта розробника з публікацією шкідливого оновлення» цього часу часто достатньо, щоб автоматизовані системи моніторингу або пильні користувачі помітили аномалію. Водночас варто зважати на обмеження:
- Затримка не захищає від цільових атак, коли шкідливий код ретельно замаскований і може залишатися непоміченим тижнями
- Виняток для довірених видавців створює привілейований канал, який сам може стати ціллю атаки
- Дві години — фіксоване значення; на відміну від менеджерів пакетів, VS Code поки що не дає користувачеві змоги налаштувати тривалість затримки
Рекомендації
Для команд розробки, які використовують VS Code, оновлення до версії 1.123 забезпечить автоматичне ввімкнення затримки без додаткового налаштування. Для проєктів на JavaScript і TypeScript варто також активувати параметри мінімального віку пакетів у використовуваному менеджері залежностей — min-release-age в npm або аналогічні налаштування в pnpm, Yarn і Bun. Ці параметри зазвичай потребують явного ввімкнення й не активні за замовчуванням.
Запровадження затримок оновлень у VS Code та провідних менеджерах пакетів формує новий стандарт захисту ланцюга постачання на рівні інструментів розробника. Конкретна дія: перевірте конфігурацію кожного менеджера залежностей у ваших проєктах і встановіть мінімальний вік пакетів щонайменше кілька годин — це мінімальне зусилля, яке суттєво знижує ризик автоматичного встановлення щойно опублікованого шкідливого коду.