В экосистеме Node.js злоумышленники начали новую серию атак на цепочку поставок. Они скомпрометировали широко используемые библиотеки кэширования cacheable и keyv. Оба пакета входят в список зависимостей огромного количества проектов. Особенно опасна ситуация с keyv: она служит транзитивной зависимостью для многих популярных инструментов, поэтому разработчики могли установить её автоматически, даже не подозревая об этом. Фактически, любой проект, в котором используется кэширование на базе keyv или её производных, оказывается в зоне риска. Речь идёт о JavaScript-экосистеме, которая лежит в основе множества веб-сервисов и бизнес-приложений. Поэтому уязвимость каналов распространения кода напрямую затрагивает компании любого размера. В зону риска попадают и небольшие стартапы, и крупные корпорации.
Описание
Компания JFrog Security Research, специализирующаяся на анализе угроз, обнаружила новую модификацию известного вредоносного ПО Shai-Hulud. Первым признаком компрометации стало заражение пакетов cacheable и keyv. Позже выяснилось, что список пострадавших гораздо шире: в него попали десятки пакетов из экосистем ServiceTitan, OneReach, Ornikar, Arv Bedrock и других организаций. Среди затронутых версий - обновления вспомогательных библиотек для тестирования, стилизации, работы с пользовательским интерфейсом и управления конфигурацией. Исследователи уже подтвердили сотни заражённых версий, а итоговый перечень продолжает пополняться. Примечательно, что многие из атакованных пакетов не имеют прямого отношения к кэшированию. Злоумышленники внедряли код в самые разные утилиты, лишь бы они были востребованы у разработчиков. Это говорит о широкомасштабности кампании и её нацеленности на максимальное распространение.
По данным JFrog Security Research, вредоносный код попадает в проект через автоматически выполняемые сценарии при установке пакета. Современные менеджеры пакетов, включая npm, поддерживают так называемые скрипты жизненного цикла. Они могут запускаться до или после установки. Обычно такие сценарии применяются для полезных задач - например, для компиляции нативного кода или загрузки дополнительных ресурсов. Однако злоумышленники воспользовались этой возможностью, чтобы незаметно выполнить свою полезную нагрузку. Для разработчика процесс установки выглядит стандартным, но вместе с библиотекой на компьютер попадает чужой код. Этот метод известен как атака на цепочку поставок. Легитимный инструмент превращается в вектор заражения, и доверие пользователя становится ключевым фактором распространения вредоносного ПО.
Shai-Hulud известен специалистам уже несколько лет. Предыдущие атаки с его использованием были связаны с заражением пакетов, которые маскировались под полезные утилиты. В новой версии авторы применили другой подход. Они подделывают обновления уже существующих, популярных и заслуживающих доверия библиотек. Это повышает вероятность того, что обновление примет не только начинающий разработчик, но и опытная команда. Более того, вредоносный код подготовлен так, чтобы избегать простых методов обнаружения. Он не проявляет себя в тестовых средах и начинает действовать только после того, как оказывается в реальной производственной инфраструктуре. В некоторых случаях заражение происходит не сразу, а через определённое время. Это серьёзно затрудняет выявление источника проблемы.
Особую тревогу вызывает тот факт, что keyv является базовым компонентом для других библиотек кэширования. Если разработчик установил один из таких инструментов, транзитивная зависимость автоматически установила заражённую версию. Проверить состав всех вложенных зависимостей вручную практически невозможно. Поэтому любая команда, использующая Node.js и npm в своих проектах, должна проверить окружение. Даже если сами разработчики не загружали keyv напрямую, она могла появиться в проекте вместе с другими популярными библиотеками. Такая схема распространения делает угрозу скрытой и трудноуловимой. Между тем, по данным опросов, лишь небольшой процент компаний регулярно проводит аудит зависимостей своего кода. Остальные полагаются на репутацию пакетов, что и приводит к подобным инцидентам.
Если заражённая версия была установлена, необходимо считать всю среду разработки скомпрометированной. Вредоносный код способен собирать переменные окружения, включая ключи доступа к облачным сервисам, базам данных и сторонним API. Он может изменять файлы проекта, внедрять дополнительный код и открывать злоумышленникам удалённый доступ к системе. Результатом может стать утечка исходного кода, учётных данных и коммерческой информации. Особенно опасна ситуация для компаний, использующих непрерывную интеграцию. Вредоносный код, попавший в сборочный конвейер, может распространиться на артефакты и затрагивать клиентов. При таком сценарии последствия выходят далеко за пределы одной команды разработчиков. Они способны нанести серьёзный репутационный и финансовый ущерб.
Пользователям npm версии 12 и новее не нужно бояться заражения этим способом. Менеджер пакетов по умолчанию отключает автоматическое выполнение скриптов установки. Однако это не означает, что можно игнорировать проблему. Во-первых, многие компании продолжают использовать более старые версии инструментов. Во-вторых, при ручном выполнении команд или использовании альтернативных менеджеров пакетов защита может быть слабее. В-третьих, вредоносный код может активироваться не только при установке, но и при обычном использовании заражённой библиотеки. Всем, кто подозревает у себя заражение, следует переустановить окружение, обновить зависимости и перевыпустить ключи. Дополнительно стоит включить двухфакторную аутентификацию для учётных записей с правом публикации пакетов. Также полезно настроить уведомления о любых изменениях в зависимостях.
Центр безопасности JFrog опубликовал предварительное уведомление и пообещал предоставить полный технический анализ, перечень затронутых версий и инструкции по восстановлению. Пока расследование продолжается, организациям рекомендуется временно исключить использование пакетов cacheable и keyv, а также связанных с ними библиотек в процессах сборки. Перед возвратом к работе нужно дождаться официальных рекомендаций и убедиться, что используемые версии не входят в список скомпрометированных. Кроме того, стоит провести внутреннюю проверку всех проектов на предмет наличия указанных пакетов. Это особенно важно для крупных организаций, где перечень зависимостей может исчисляться тысячами. Ситуация в очередной раз демонстрирует, что безопасность цепочки поставок требует постоянного внимания и встроенных механизмов контроля.
Индикаторы компрометации
Package
- @arv-bedrock/auth 1.1.7, 1.1.8
- @arv-bedrock/auth-admin 1.0.3, 1.0.2
- @arv-bedrock/auth-sso 1.6.1, 1.6.2
- @arv-bedrock/auth-sso-backend 1.7.2, 1.7.1
- @arv-bedrock/logger 1.7.2, 1.7.1
- @cacheable/memory 2.2.1
- @cacheable/net 2.1.1
- @cacheable/node-cache 3.1.2
- @cacheable/utils 2.5.1
- @deliveroo/determinator 0.2.1
- @deliveroo/reevent 1.0.1
- @hubsync/web-sdk-react 6.3.14, 6.3.30, 6.3.7, 6.3.26, 6.3.10, 6.3.16, 6.3.32, 6.3.18, 6.3.17, 6.3.33, 6.3.28, 6.3.31, 6.3.15, 6.3.20, 6.3.9, 6.3.29, 6.3.13, 6.3.27, 6.3.11, 6.3.21, 6.3.8, 6.3.19, 6.3.23, 6.3.24, 6.3.12, 6.3.25, 6.3.22
- @onereach/authorizer-helper 0.0.11, 0.0.12
- @onereach/bandwidth-steps-voice-bxml 0.1.2, 0.1.1
- @onereach/billing-dto 27.2.2, 27.2.1
- @onereach/billing-shared 27.2.2, 27.2.1
- @onereach/cb-schema-translator 1.3.1, 1.3.2
- @onereach/channel-transformer 0.0.67, 0.0.66
- @onereach/channel-transformers 0.0.5, 0.0.6
- @onereach/ckeditor5-build-classic 30.0.1, 30.0.2
- @onereach/condition-builder 1.0.8, 1.0.9
- @onereach/content-builder 0.0.18, 0.0.19
- @onereach/content-builder-template-compiler 0.0.4, 0.0.3
- @onereach/expression-components 9.1.1, 9.1.2
- @onereach/font-icons 27.0.2, 27.0.3
- @onereach/get-version-data 3.1.3, 3.1.2
- @onereach/idw-apps 0.1.3, 0.1.4
- @onereach/idw-contracts 0.1.2, 0.1.3
- @onereach/idw-init-account-resources 1.0.2, 1.0.1
- @onereach/idw-sdk 0.1.2, 0.1.3
- @onereach/idw-ui-components 0.1.2, 0.1.3
- @onereach/lambda-invocation 1.2.2, 1.2.1
- @onereach/messengers-infobip-sdk 0.1.2, 0.1.1
- @onereach/or-browser 0.0.49, 0.0.48
- @onereach/or-browser-next 0.0.11, 0.0.12
- @onereach/or-content-builder-renderer 0.0.3, 0.0.2
- @onereach/orest-cli 2.4.2, 2.4.1
- @onereach/orest-input-cli 1.18.2, 1.18.1
- @onereach/orest-jest-presets 0.0.3, 0.0.4
- @onereach/orest-vue3 0.0.4, 0.0.5
- @onereach/orest-vue-demi-vue2 0.0.4, 0.0.5
- @onereach/orest-vue-demi-vue3 0.0.5, 0.0.4
- @onereach/or-file-uploader-next 0.0.9, 0.0.8
- @onereach/or-pro 1.13.1, 1.13.2
- @onereach/or-sdk-agent-cli 0.0.7, 0.0.6
- @onereach/phonenumber-interpreter 0.0.18, 0.0.19
- @onereach/pnpm-audit-junit 1.0.4, 1.0.3
- @onereach/postcss-scoped-selector 1.2.2, 1.2.1
- @onereach/regex-helper 0.5.16, 0.5.17
- @onereach/regular-expressions 0.5.23, 0.5.24
- @onereach/regular-expressions-test 0.0.4, 0.0.5
- @onereach/rwc-client 6.4.7, 6.4.8
- @onereach/salesforce-miaw-client 0.0.4, 0.0.3
- @onereach/si-a-button 0.0.4, 0.0.3
- @onereach/si-alert 0.4.11, 0.4.12
- @onereach/si-checkbox 0.6.5, 0.6.6
- @onereach/si-checkbox-group 0.3.6, 0.3.5
- @onereach/si-code 0.6.4, 0.6.5
- @onereach/si-collapsible-group 0.6.5, 0.6.4
- @onereach/si-copyable-text 0.4.12, 0.4.11
- @onereach/si-datepicker 0.4.6, 0.4.5
- @onereach/si-divider 0.4.12, 0.4.11
- @onereach/si-dropdown-advanced 0.4.6, 0.4.5
- @onereach/si-dropdown-simple 0.4.5, 0.4.6
- @onereach/si-header 0.4.12, 0.4.11
- @onereach/si-list 0.7.4, 0.7.5
- @onereach/si-merge-tag-input 0.4.5, 0.4.6
- @onereach/si-radio-group 0.3.6, 0.3.5
- @onereach/si-root 0.9.5, 0.9.4
- @onereach/si-select 0.1.3, 0.1.4
- @onereach/si-step-chooser 0.4.4, 0.4.5
- @onereach/si-switch 0.4.6, 0.4.5
- @onereach/si-textinput 0.5.5, 0.5.6
- @onereach/si-text-message 0.4.5, 0.4.6
- @onereach/si-validated-timestring-input 0.3.5, 0.3.6
- @onereach/slack-helpers 1.0.4, 1.0.3
- @onereach/ssml-editor 2.0.12, 2.0.13
- @onereach/step-components 0.1.38, 0.1.37
- @onereach/step-conversation 1.0.41, 1.0.42
- @onereach/step-run-snowflake-query 0.1.2, 0.1.1
- @onereach/step-voice 7.0.33, 7.0.32
- @onereach/styles 27.0.2, 27.0.3
- @onereach/time-interpreter 1.0.30, 1.0.31
- @onereach/ts-memoize 1.0.2, 1.0.3
- @onereach/types-contacts-api 9.0.8, 9.0.9
- @onereach/ui-components 27.0.2, 27.0.3
- @onereach/ui-components-common 27.0.3, 27.0.2
- @onereach/ui-components-vue2 27.0.3, 27.0.2
- @onereach/v-event-calendar 0.1.23, 0.1.22
- @onereach/webform 0.3.14, 0.3.13
- @ornikar/apollo-link-timeout 1.4.2, 1.4.3
- @ornikar/babel-preset-base 6.0.3, 6.0.4, 6.0.5
- @ornikar/babel-preset-kitt-universal 8.0.3, 8.0.4
- @ornikar/babel-preset-react 6.1.4, 6.1.6, 6.1.5
- @ornikar/browserslist-config 8.0.3, 8.0.4
- @ornikar/commitlint-config 8.3.3, 8.3.2
- @ornikar/eslint-config 24.0.1, 24.0.3, 24.0.2
- @ornikar/eslint-config-babel 24.0.1, 24.0.3, 24.0.2
- @ornikar/eslint-config-babel-use 13.2.2, 13.2.3, 13.2.1
- @ornikar/eslint-config-formatjs 24.0.1, 24.0.2
- @ornikar/eslint-config-node 12.2.1, 12.2.2
- @ornikar/eslint-config-react 24.0.2, 24.0.1
- @ornikar/eslint-config-typescript 24.0.1, 24.0.2
- @ornikar/eslint-config-typescript-nestjs 24.0.1, 24.0.2
- @ornikar/eslint-config-typescript-react 24.0.1, 24.0.2, 24.0.3
- @ornikar/eslint-plugin-neverthrow 1.3.3, 1.3.1, 1.3.2
- @ornikar/eslint-plugin-ornikar 24.0.1, 24.0.2, 24.0.3
- @ornikar/graphql-config 1.1.1, 1.1.2, 1.1.3
- @ornikar/intl-config 10.0.3, 10.0.2
- @ornikar/jest-config 13.0.5, 13.0.4, 13.0.3
- @ornikar/jest-config-react 18.0.3, 18.0.4, 18.0.2
- @ornikar/jest-config-react-native 17.0.4, 17.0.3, 17.0.2
- @ornikar/jest-config-react-native-web 12.0.5, 12.0.3, 12.0.4
- @ornikar/kitt2 1.0.2, 1.0.1
- @ornikar/lerna-config 11.0.1, 11.0.2
- @ornikar/monorepo-config 14.3.2, 14.3.4, 14.3.3
- @ornikar/postcss-config 9.1.2, 9.1.3
- @ornikar/prettier-config 9.0.3, 9.0.4, 9.0.5
- @ornikar/prismic-components 0.0.3, 0.0.4, 0.0.2
- @ornikar/react-modern-calendar-datepicker 3.2.2, 3.2.1
- @ornikar/react-native-svg-transformer 1.0.6, 1.0.7
- @ornikar/renovate-config 9.0.4, 9.0.2, 9.0.3
- @ornikar/repo-config 15.3.3, 15.3.5, 15.3.4
- @ornikar/repo-config-react 13.0.10, 13.0.9, 13.0.8
- @ornikar/repo-config-react-legacy-css 15.1.4, 15.1.2, 15.1.3
- @ornikar/rollup-config 11.1.2, 11.1.3, 11.1.4
- @ornikar/rollup-plugin-postcss 2.0.7, 2.0.6, 2.0.5
- @ornikar/slate-react-fork 1.0.1, 1.0.2
- @ornikar/storybook-config 12.1.2, 12.1.3
- @ornikar/stylelint-config 14.0.4, 14.0.3
- @ornikar/typed-css-modules-loader 0.8.3, 0.8.2
- @ornikar/webpack-config 12.0.3, 12.0.2
- @or-sdk/accounts 2.3.5, 2.3.6
- @or-sdk/account-settings 1.3.6, 1.3.7
- @or-sdk/adapters 0.3.6, 0.3.7
- @or-sdk/agents 4.21.4, 4.21.3
- @or-sdk/api-tokens 1.4.3, 1.4.2
- @or-sdk/api-tokens-lambda 1.4.3, 1.4.2
- @or-sdk/apps 1.2.7, 1.2.6
- @or-sdk/auth 0.38.2, 0.38.1
- @or-sdk/authorizer 0.26.7, 0.26.8
- @or-sdk/base 0.44.5, 0.44.4
- @or-sdk/billing 27.2.1, 27.2.2
- @or-sdk/billing-internal 27.2.1, 27.2.2
- @or-sdk/bots 1.7.1, 1.7.2
- @or-sdk/bot-templates 2.2.6, 2.2.5
- @or-sdk/cards 1.2.5, 1.2.6
- @or-sdk/card-templates 2.2.5, 2.2.6
- @or-sdk/ccp 10.15.4, 10.15.5
- @or-sdk/chat 0.3.1, 0.3.2
- @or-sdk/contacts 4.7.5, 4.7.6
- @or-sdk/content-request 0.2.6, 0.2.7
- @or-sdk/data-hub 0.26.6, 0.26.5
- @or-sdk/data-hub-svc 2.3.5, 2.3.6
- @or-sdk/deployer 1.7.6, 1.7.5
- @or-sdk/deployments 2.1.5, 2.1.6
- @or-sdk/discovery 1.12.2, 1.12.1
- @or-sdk/druid 1.4.8, 1.4.7
- @or-sdk/event-manager 1.1.5, 1.1.6
- @or-sdk/files 3.11.7, 3.11.6
- @or-sdk/files-sync-node 0.1.9, 0.1.8
- @or-sdk/flows 2.7.9, 2.7.8
- @or-sdk/flow-templates 2.1.5, 2.1.6
- @or-sdk/graph 1.10.6, 1.10.5
- @or-sdk/hitl 0.41.1, 0.41.2
- @or-sdk/identifiers 0.27.7, 0.27.6
- @or-sdk/idw 9.0.4, 9.0.5
- @or-sdk/idw-public 1.6.7, 1.6.6
- @or-sdk/idw-skill 1.4.2, 1.4.1
- @or-sdk/invitations 1.4.9, 1.4.8
- @or-sdk/keys 1.2.7, 1.2.6
- @or-sdk/key-value-storage 0.28.7, 0.28.6
- @or-sdk/knowledge-models 0.25.6, 0.25.5
- @or-sdk/library 0.5.7, 0.5.6
- @or-sdk/library-categories 0.2.6, 0.2.7
- @or-sdk/library-source 0.4.5, 0.4.6
- @or-sdk/library-types-v1 9.0.1, 9.0.2
- @or-sdk/library-types-v2 9.0.1, 9.0.2
- @or-sdk/lookup 1.25.2, 1.25.1
- @or-sdk/markdowner 0.5.1, 0.5.2
- @or-sdk/mcp-tools 0.5.2, 0.5.3
- @or-sdk/notifications 1.7.6, 1.7.5
- @or-sdk/password 1.3.6, 1.3.7
- @or-sdk/payments 3.2.6, 3.2.5
- @or-sdk/permissions 2.8.2, 2.8.1
- @or-sdk/permissions-cli 1.4.2, 1.4.1
- @or-sdk/permissions-lambda 2.5.2, 2.5.1
- @or-sdk/pgsql 1.5.2, 1.5.1
- @or-sdk/providers 0.3.7, 0.3.6
- @or-sdk/qna 3.4.3, 3.4.2
- @or-sdk/queue-manager 1.4.7, 1.4.6
- @or-sdk/sdk-api 0.29.3, 0.29.2
- @or-sdk/settings 0.25.7, 0.25.6
- @or-sdk/sku-builder 2.5.2, 2.5.1
- @or-sdk/source 2.1.5, 2.1.6
- @or-sdk/source-api 1.1.2, 1.1.1
- @or-sdk/step-templates 2.2.6, 2.2.5
- @or-sdk/store 2.1.6, 2.1.5
- @or-sdk/tables 0.28.6, 0.28.5
- @or-sdk/tags 1.1.6, 1.1.5
- @or-sdk/tickets 1.9.5, 1.9.6
- @or-sdk/transcripts 1.2.5, 1.2.6
- @or-sdk/users 3.8.2, 3.8.1
- @or-sdk/views 3.1.5, 3.1.6
- @or-sdk/view-templates 2.2.6, 2.2.5
- @or-sdk/web-search 0.6.2, 0.6.1
- @picsart/ai-sdk 3.32.2
- @picsart/gen-ai 2.55.11
- @servicetitan/acquisition-functions 5.22.3, 5.22.1, 5.22.2
- @servicetitan/admin-layout 2.4.4, 2.4.5, 2.4.3
- @servicetitan/admin-sql-table 1.0.16, 1.0.14, 1.0.15
- @servicetitan/ajax-handlers 38.1.1, 38.1.2, 38.1.3
- @servicetitan/anvil2 3.9.1, 3.9.3, 3.9.2
- @servicetitan/anvil2-codemods 0.11.2, 0.11.3, 0.11.4
- @servicetitan/anvil2-ext-atlas 4.0.2, 4.0.3, 4.0.4
- @servicetitan/anvil2-ext-charts 0.2.4, 0.2.6, 0.2.5
- @servicetitan/anvil2-ext-common 0.7.2, 0.7.3, 0.7.1
- @servicetitan/anvil2-ext-mwv 0.0.7, 0.0.5, 0.0.6
- @servicetitan/anvil2-illustrations 1.0.2, 1.0.4, 1.0.3
- @servicetitan/anvil2-mcp 0.0.9, 0.0.10, 0.0.11
- @servicetitan/anvil-css-utilities 14.5.6, 14.5.5, 14.5.4
- @servicetitan/anvil-fonts 14.5.5, 14.5.6, 14.5.4
- @servicetitan/anvil-icon 0.5.2, 0.5.1, 0.5.3
- @servicetitan/anvil-icons 14.5.6, 14.5.4, 14.5.5
- @servicetitan/anvil-react 0.11.4, 0.11.5, 0.11.3
- @servicetitan/anvil-themes 14.5.4, 14.5.5, 14.5.6
- @servicetitan/anvil-token 0.4.3, 0.4.2, 0.4.1
- @servicetitan/assist-ui 2.1.2, 2.1.3, 2.1.1
- @servicetitan/assist-utils 1.1.3, 1.1.4, 1.1.2
- @servicetitan/carto-charts-core 0.0.2, 0.0.3, 0.0.4
- @servicetitan/carto-charts-react 0.0.4, 0.0.3, 0.0.2
- @servicetitan/carto-charts-rn 0.0.2, 0.0.3, 0.0.4
- @servicetitan/carto-react-kit 0.8.5, 0.8.4, 0.8.6
- @servicetitan/carto-rn-kit 0.0.12, 0.0.11, 0.0.10
- @servicetitan/carto-tokens 0.3.1, 0.3.2, 0.3.3
- @servicetitan/component-usage 28.5.1, 28.5.3, 28.5.2
- @servicetitan/confirm 41.3.2, 41.3.3, 41.3.1
- @servicetitan/confirm-navigation 41.3.2, 41.3.1, 41.3.3
- @servicetitan/contentful 0.0.3, 0.0.4, 0.0.5
- @servicetitan/contentful-proxy 1.1.12, 1.1.14, 1.1.13
- @servicetitan/cp-api 1.115.3, 1.115.2, 1.115.1
- @servicetitan/cp-mfe 1.115.3, 1.115.2, 1.115.1
- @servicetitan/cp-mfe-dev 1.115.3, 1.115.2, 1.115.1
- @servicetitan/cp-react-hooks 1.115.3, 1.115.1, 1.115.2
- @servicetitan/cp-ui 1.115.1, 1.115.3, 1.115.2
- @servicetitan/culture 41.3.3, 41.3.2, 41.3.1
- @servicetitan/datadog-rum 38.1.2, 38.1.3, 38.1.1
- @servicetitan/data-query 41.3.1, 41.3.2, 41.3.3
- @servicetitan/datetime-utils 41.3.1, 41.3.2, 41.3.3
- @servicetitan/design-system 14.5.4, 14.5.5, 14.5.6
- @servicetitan/docs-anvil-uikit-contrib 41.3.3, 41.3.1, 41.3.2
- @servicetitan/docs-uikit 38.1.3, 38.1.2, 38.1.1
- @servicetitan/document-title 2.4.1, 2.4.2, 2.4.3
- @servicetitan/dte-pdf-editor 1.76.1, 1.76.3, 1.76.2
- @servicetitan/dte-unlayer 0.150.2, 0.150.3, 0.150.1
- @servicetitan/eh-module-communication 0.2.2, 0.2.3, 0.2.1
- @servicetitan/error-boundary 38.1.3, 38.1.2, 38.1.1
- @servicetitan/eslint-config 38.1.3, 38.1.1, 38.1.2
- @servicetitan/eslint-plugin 38.1.2, 38.1.3, 38.1.1
- @servicetitan/eslint-plugin-decorators-declare 12.8.17, 12.8.16, 12.8.15
- @servicetitan/eslint-plugin-folder-schema 38.1.3, 38.1.2, 38.1.1
- @servicetitan/eslint-plugin-mobx-6 12.8.15, 12.8.16
- @servicetitan/eslint-plugin-processors-stub 12.8.15, 12.8.17, 12.8.16
- @servicetitan/examples 1.2.6, 1.2.5, 1.2.7
- @servicetitan/feature-spotlight 3.9.2, 3.9.3, 3.9.1
- @servicetitan/folder-lint 38.1.1, 38.1.3, 38.1.2
- @servicetitan/forge 0.5.3, 0.5.1, 0.5.2
- @servicetitan/form 41.3.2, 41.3.3, 41.3.1
- @servicetitan/form-state 41.3.1, 41.3.2, 41.3.3
- @servicetitan/grid 0.0.64, 0.0.65, 0.0.63
- @servicetitan/hammer-icon 1.2.1, 1.2.2, 1.2.3
- @servicetitan/hammer-react 1.42.3, 1.42.2, 1.42.4
- @servicetitan/hammer-token 3.1.3, 3.1.2, 3.1.1
- @servicetitan/hash-browser-router 38.1.1, 38.1.3, 38.1.2
- @servicetitan/help-center 1.0.10, 1.0.9, 1.0.8
- @servicetitan/html-sketchapp 4.2.8, 4.2.9, 4.2.10
- @servicetitan/install 38.1.2, 38.1.3, 38.1.1
- @servicetitan/intl 7.2.1, 7.2.3, 7.2.2
- @servicetitan/json-render-react 0.4.6, 0.4.8, 0.4.7
- @servicetitan/kendo-theme 0.0.29, 0.0.27, 0.0.28
- @servicetitan/ko-bridge 38.1.2, 38.1.3, 38.1.1
- @servicetitan/launchdarkly-service 38.1.1, 38.1.3, 38.1.2
- @servicetitan/lazy-module 38.1.3, 38.1.1, 38.1.2
- @servicetitan/ld-type-generator 0.2.2, 0.2.1, 0.2.3
- @servicetitan/line-item-editor 1.5.1, 1.5.2, 1.5.3
- @servicetitan/link-item 41.3.1, 41.3.3, 41.3.2
- @servicetitan/log-service 38.1.2, 38.1.1, 38.1.3
- @servicetitan/marketing-direct-mail-components 20.1.1, 20.1.2, 20.1.3
- @servicetitan/marketing-email-components 20.2.3, 20.2.4, 20.2.5
- @servicetitan/marketing-form 0.1.2, 0.1.3, 0.1.4
- @servicetitan/marketing-global-route 1.14.1, 1.14.2, 1.14.3
- @servicetitan/marketing-integration-widgets 1.0.40, 1.0.41, 1.0.42
- @servicetitan/marketing-route 1.2.2, 1.2.3, 1.2.1
- @servicetitan/marketing-ui 9.3.1, 9.3.2, 9.3.3
- @servicetitan/marketing-widgets 1.0.2, 1.0.3, 1.0.1
- @servicetitan/measure-sheet-data 2.6.1, 2.6.3, 2.6.2
- @servicetitan/mfe-quick-actions 0.5.49, 0.5.50, 0.5.51
- @servicetitan/microfront 0.0.4, 0.0.2, 0.0.3
- @servicetitan/microfront-auth 0.0.5, 0.0.6, 0.0.7
- @servicetitan/micro-frontend 0.0.6, 0.0.4, 0.0.5
- @servicetitan/microfront-tests 0.0.12, 0.0.13, 0.0.11
- @servicetitan/microfront-utils 1.4.2, 1.4.3, 1.4.1
- @servicetitan/modularpayments-webfields 1.0.54, 1.0.55, 1.0.53
- @servicetitan/moneyout-api-client 1.29.1, 1.29.2, 1.29.3
- @servicetitan/mpa-components 2.5.2, 2.5.1, 2.5.3
- @servicetitan/navigation 14.1.2, 14.1.3, 14.1.1
- @servicetitan/notifications 41.3.2, 41.3.3, 41.3.1
- @servicetitan/onboarding-ui 18.5.1, 18.5.3, 18.5.2
- @servicetitan/quick-actions 1.15.4, 1.15.3, 1.15.2
- @servicetitan/react-hooks 7.7.2, 7.7.3, 7.7.1
- @servicetitan/react-ioc 38.1.1, 38.1.2, 38.1.3
- @servicetitan/responsive 6.1.1, 6.1.3, 6.1.2
- @servicetitan/restrict-imports 38.1.2, 38.1.3, 38.1.1
- @servicetitan/schema-comparison 0.1.4, 0.1.5, 0.1.3
- @servicetitan/skeleton 9.2.4, 9.2.6, 9.2.5
- @servicetitan/standalone-core-feature-gates 1.11.5, 1.11.4, 1.11.6
- @servicetitan/standalone-feature-flags 2.3.2, 2.3.4, 2.3.3
- @servicetitan/standalone-root 1.11.5, 1.11.3, 1.11.4
- @servicetitan/standalone-tm-api 1.1.1, 1.1.2, 1.1.3
- @servicetitan/standalone-ui 2.2.4, 2.2.6, 2.2.5
- @servicetitan/startup 38.1.3, 38.1.1, 38.1.2
- @servicetitan/startup-jest 2.2.1, 2.2.2, 2.2.3
- @servicetitan/startup-mfe-compat 0.5.1, 0.5.3, 0.5.2
- @servicetitan/startup-utils 38.1.1, 38.1.3, 38.1.2
- @servicetitan/stylelint-config 38.1.1, 38.1.3, 38.1.2
- @servicetitan/suppress-warnings 38.1.1, 38.1.3, 38.1.2
- @servicetitan/table 41.3.1, 41.3.2, 41.3.3
- @servicetitan/tanstack-query-mobx 6.2.1, 6.2.2, 6.2.3
- @servicetitan/temporal-lite 3.4.1, 3.4.2, 3.4.3
- @servicetitan/testing-library 6.6.1, 6.6.2, 6.6.3
- @servicetitan/thoughtspot-theme 1.7.2, 1.7.3, 1.7.1
- @servicetitan/time-zones 3.8.2, 3.8.1, 3.8.3
- @servicetitan/titan-chatbot-api 9.0.2, 9.0.1, 9.0.3
- @servicetitan/titan-chatbot-client 2.1.3, 2.1.4, 2.1.5
- @servicetitan/titan-chatbot-ui 7.1.5, 7.1.4, 7.1.3
- @servicetitan/titan-chatbot-ui-anvil2 9.0.2, 9.0.3, 9.0.1
- @servicetitan/titan-chatbot-ui-cypress 9.0.2, 9.0.3, 9.0.1
- @servicetitan/titan-chat-ui 7.1.3, 7.1.5, 7.1.4
- @servicetitan/titan-chat-ui-anvil2 9.0.1, 9.0.2, 9.0.3
- @servicetitan/titan-chat-ui-common 9.0.2, 9.0.3, 9.0.1
- @servicetitan/titan-chat-ui-cypress 2.1.5, 2.1.3, 2.1.4
- @servicetitan/tokens 12.9.2, 12.9.3, 12.9.1
- @servicetitan/toolbelt-shared-registry 1.14.2, 1.14.3, 1.14.1
- @servicetitan/uikit-docs 22.11.1, 22.11.3, 22.11.2
- @servicetitan/unit-tests 0.0.2, 0.0.4, 0.0.3
- @servicetitan/va-mfe-loader 1.1.1, 1.1.2, 1.1.3
- @servicetitan/web-components 38.1.3, 38.1.1, 38.1.2
- @servicetitan/widget-platform 5.6.1, 5.6.3, 5.6.2
- @servicetitan/widget-platform-monolith 5.6.1, 5.6.3, 5.6.2
- @thiennq/docs-viewer 1.6.2
- babel-plugin-linaria-css-to-undefined 0.3.2, 0.3.1
- cacheable 2.5.1
- cache-manager 7.2.10
- conv-context-next 1.0.1, 1.0.3, 1.0.2
- ecto 5.0.1
- editable-contracts 0.0.12, 0.0.14, 0.0.13
- eslint-plugin-folder-schema 1.0.6, 1.0.7, 1.0.8
- example-js-project 1.0.4, 1.0.2, 1.0.3
- file-entry-cache 11.1.6
- folder-lint 1.0.7, 1.0.6, 1.0.8
- frontend-orb 4.4.2, 4.4.3, 4.4.1
- keyv 6.0.0
- native-frontend-orb 1.1.5, 1.1.6, 1.1.4
- pob-test-package-in-monorepo 5.2.2, 5.2.3, 5.2.1
- pob-test-typescript-package-in-monorepo 4.2.2, 4.2.3, 4.2.1
- rwc-client 0.29.10, 0.29.11, 0.29.12
- tslint-folder-schema 1.0.6, 1.0.8, 1.0.7
- verdaccio-okta-oauth 38.1.1, 38.1.3, 38.1.2
- verdaccio-tarball-local-storage 38.1.2, 38.1.1, 38.1.3