Недавно была обнаружена проблема безопасности во внешней библиотеке Ledger. Хакер получил права на публикацию библиотеки, внедрил вредоносный код в библиотекуledgerhq/connect-kit и впоследствии выпустил новую версию. Как правило, это не представляет непосредственной угрозы безопасности, поскольку вредоносному коду будут подвержены только те пользователи, которые обновили свою версию библиотеки и интегрировали новую версию кода на свои веб-сайты.
Однако здесь есть особый момент риска. В соответствии с политикой обновления версий библиотекиledgerhq/connect-kit любой веб-сайт, использующий библиотекуledgerhq/connect-kit-loader и использующий функцию loadConnectKit, будет автоматически получать последнюю версию кода при появлении новой версии 1.xx. Это связано с тем, что многие веб-сайты ссылаются на эти библиотеки через тег @1 адреса CDN. При таком подходе по умолчанию будет использоваться последний код версии 1.xx. Это обычная практика для стороннего контроля версий внешних ресурсов CDN.
Хакеры могут использовать этот механизм для инициирования мошеннических транзакций с помощью динамически загружаемого кода. Этот тип пакета npm, основанный на сторонних источниках CDN, станет новым каналом атаки на цепочку поставок. Что еще более серьезно, так это то, что после того, как злоумышленник выпустит новую версию, пользователи могут подвергнуться атаке без активного обновления.
Если взять в качестве примера Premint, то многие интерфейсные веб-сайты полагаются на внешние CDN для ссылки на пакеты в npm, такие как unpkg или cdnjs. Как показано на рисунке ниже, premint напрямую зависит от последней версии. Это создает риск: злоумышленнику нужно только выпустить новую версию, не требуя от пользователей обновления, и пользователи могут быть уязвимы для атак. Поэтому при использовании внешних ресурсов CDN необходимо очень внимательно относиться к рискам безопасности. Этот метод может стать новой формой атаки по отравлению CDN.