Разработчикам софта для Azure подсунули 200 шпионских NPM-пакетов

Разработчикам софта для Azure подсунули 200 шпионских NPM-пакетов

Разработчикам софта для Azure подсунули 200 шпионских NPM-пакетов

Специалисты DevOps-компании JFrog обнаружили в репозитории npm 218 вредоносных пакетов, предназначенных для использования в проектах на основе SDK Azure. Получив уведомление, операторы веб-сервиса быстро удалили опасные находки, однако к тому времени их успели скачать в среднем по 50 раз.

Согласно блог-записи JFrog, внедренный в npm-пакеты зловред нацелен на кражу персональных данных, позволяющих установить личность (personal identifiable information, PII). Чтобы скрыть истинные намерения, автор новой атаки на цепочку поставок применил тайпсквоттинг — позаимствовал имена легитимных библиотек, но без префикса @azure.

По всей видимости, этот элемент социальной инженерии рассчитан на невнимательность пользователей: npm-пакеты, ориентированные на Microsoft Azure, еженедельно скачивают десятки миллионов раз, но при установке разработчик может по ошибке опустить @azure, отдавая команду npm install.

Чтобы отвести от себя подозрения, злоумышленник публиковал свои пакеты под уникальными юзернеймами, используя скрипт для автоматизации процесса. Он также фальсифицировал номера версий, выдавая зловреда за новый вариант хорошо известной библиотеки (например, за сборку 99.10.9), то есть создавал задел для атаки вида «путаница зависимостей».

Экспресс-тест показал, что вредоносный код, распространяемый в рамках выявленной кампании, запускается автоматически после установки пакета и сливает на сторону следующую информацию:

  • листинг каталогов C:\, D:\, / и /home;
  • имя пользователя;
  • домашний каталог пользователя;
  • текущий рабочий каталог;
  • IP-адреса всех сетевых интерфейсов;
  • IP-адреса серверов DNS в настройках;
  • имя (успешно) установленного вредоносного пакета.

Все эти данные выводятся на удаленный сервер двумя способами: через HTTPS-запрос POST или DNS-запрос, в который вставлена вся украденная информация в виде шестнадцатеричного числа. Имя узла назначения (425a2[.]rt11[.]ml) вшито в код зловреда.

Исследователи полагают, что вредоносная полезная нагрузка в данном случае используется для проведения разведки перед боем, и за ней может последовать более серьезная угроза. Не исключено также, что это попытка выявить уязвимости в популярном софте для Azure и получить от Microsoft премию в рамках программы bug bounty.

Целевые атаки при помощи вредоносных загрузок в npm, PyPI и другие публичные хранилища кодов нередки, и операторы таких веб-сервисов стараются быстро реагировать на такие инциденты. Исследователи из JFrog выслали уведомление о новых находках через два дня после их публикации, и в npm все оперативно вычистили, но зловред все-таки успел проникнуть на тысячи устройств.

Снизить риски в отношении подобных атак, по мнению экспертов, поможет более тщательная проверка публикаций в репозиториях, а также усиление защиты. Можно, к примеру, включить в процедуру регистрации тест CAPTCHA — он затруднит массовое создание аккаунтов, и вычислить злоумышленника станет проще.

Engram от DeepSeek: как LLM научили вспоминать, а не пересчитывать

Команда DeepSeek представила новый модуль Engram, который добавляет в трансформеры то, чего им давно не хватало, — встроенную память для быстрого извлечения знаний. Идея проста, но эффектная: вместо того чтобы снова и снова пересчитывать одни и те же локальные паттерны, модель может мгновенно «вспоминать» их через O(1)-lookup и тратить вычисления на более сложные задачи — рассуждения и дальние зависимости.

Engram работает не вместо Mixture-of-Experts (MoE), а вместе с ним. Если MoE отвечает за условные вычисления, то Engram добавляет вторую ось масштабирования — условную память.

По сути, это современная версия классических N-грамм, переосмысленная как параметрическая память, которая хранит устойчивые шаблоны: частые фразы, сущности и другие «статичные» знания.

Технически Engram подключается напрямую к трансформерному бэкбону DeepSeek. Он построен на хешированных таблицах N-грамм с мультихед-хешированием, лёгкой свёрткой по контексту и контекстно-зависимым гейтингом, который решает, сколько памяти «подмешать» в каждую ветку вычислений. Всё это аккуратно встраивается в существующую архитектуру без её радикальной переделки.

 

На больших моделях DeepSeek пошла ещё дальше. В версиях Engram-27B и Engram-40B используется тот же трансформерный бэкбон, что и у MoE-27B, но часть параметров перераспределяется: меньше маршрутизируемых экспертов — больше памяти Engram. В результате Engram-27B получает около 5,7 млрд параметров памяти, а Engram-40B — уже 18,5 млрд, при этом число активируемых параметров и FLOPs остаётся тем же.

Результаты предобучения на 262 млрд токенов выглядят убедительно. При одинаковом числе активных параметров Engram-модели уверенно обходят MoE-базу: снижается задержка, растут показатели на задачах знаний и рассуждений. Например, MMLU увеличивается с 57,4 до 60,4, ARC Challenge — с 70,1 до 73,8, BBH — с 50,9 до 55,9. Улучшения есть и в коде, и в математике — от HumanEval до GSM8K.

 

Отдельно исследователи посмотрели на длинный контекст. После расширения окна до 32 768 токенов с помощью YaRN Engram-27B либо сравнивается с MoE-27B, либо превосходит его  Причём иногда Engram достигает этого при меньших вычислительных затратах.

Механистический анализ тоже говорит в пользу памяти. Варианты с Engram формируют «готовые к предсказанию» представления уже на ранних слоях, а по CKA видно, что неглубокие слои Engram соответствуют гораздо более глубоким слоям MoE. Проще говоря, часть «глубины» модель получает бесплатно, выгружая рутину в память.

Авторы подытоживают: Engram и MoE не конкурируют, а дополняют друг друга. Условные вычисления хорошо справляются с динамикой и рассуждениями, а условная память — с повторяющимися знаниями. Вместе они дают более эффективное использование параметров и вычислений без ломки архитектуры.

RSS: Новости на портале Anti-Malware.ru