
Команда Supply Chain Security экспертного центра безопасности (PT ESC) отправила отчет администрации реестра npm о занятной маленькой кампании против Apple, среди них:
apple-infra-network-v2(170 скачиваний на момент репорта)apple-infra-final-escape(326 скачиваний)apple-infra-gcp-leak(165 скачиваний)apple-infra-ultimate-bypass(153 скачивания)agents-a365-runtime— мимикрия под пакет@microsoft/agents-a365-runtime(447 скачиваний)apple-security-internal-scanner-v3(185 скачиваний)apple-coredata-internal-service(367 скачиваний)
Часть проектов первой волны лаконична и состоит из одного файла package.json весом менее 1 килобайта:

Bash-однострочник:
получает содержимое
/etc/resolv.conf— DNS-конфигурацию устройства;проверяет возможность разрезолвить домен
internal.apple.comчерезnslookup/host;забирает записи ARP-кеша (таблицы сопоставлений ip-адресов на MAC-адреса);
обращает внимание на следующие переменные окружения по маске:
PROXY,TENCENT,REGION,ZONE.
Смысл переменных окружения:
PROXY*— забрать настройки корпоративных прокси (HTTP_PROXY,HTTPS_PROXYи другие). Там может попасться значение наподобиеhttp://proxy[.]departmentname.companyname[.]local, позволяющее детальнее идентифицировать жертву;TENCENT*— вероятно признак инфраструктуры Tencent Cloud;REGIONиZONE— переменные окружения, в которой может храниться местоположение облака, напримерeu-west-1.
Этот отчет обрамляется текстом --- NETWORK PIVOT AUDIT --- и --- AUDIT SELESAI --- («Отчет окончен» по-индонезийски) и отправляется автору пакета.
Легко можно поверить, что это пентест- или багбаунти-активность против Apple: аккуратно собирается отпечаток жертвы, без информации, которая представляла бы коммерческую ценность.
Однако часть дальнейших релизов имеют занятную логику (см. скриншот ниже):
Попытка украсть значение одной из переменных окружения в следующем порядке:
NPM_TOKEN,NODE_AUTH_TOKEN,GITHUB_TOKEN,NPM_AUTH_TOKEN. Если их нет, то попробуем взятьauthTokenиз файла~/.npmrc.Надеясь, что у окружения есть доступ к внутреннему хранилищу npm-пакетов, попытка скачать пакет
apple-app-store-server-library, пересобрать его с новой версией и опубликовать в глобальномnpmjs.org.

Our honest reaction на второй пункт: 🤔 индонезийских комментариев стало больше.
По мере развития кампании злоумышленник перестал пускать в глаза пыль благих намерений и стал просто красть все интересные переменные окружения, а также забирать токены Azure IMDS.
В какой-то момент автор, тестируя логику публикации пакета от имени жертвы, случайно упаковал в один из своих релизов все свои скрипты, node-логи и даже .bash-history.

При изучении команд создается четкое ощущение, что мы столкнулись с работой агентской системы по автоматизации проведения пентестов. Лишь сильнейшие из людей могут писать команды наподобие этой:
echo 'длинный валидный однострочный package.json c инфостилером в preinstall-логике' > package.json && npm publish
В bash history также попали комментарии. Их мог оставить сам злоумышленник, копируя команды из диалога с LLM, а мог и сам агент:
// Masukin ini ke dalam script preinstall lu
# Nyari di mana lokasi instalasi npm lo
# Biasanya hasilnya di /usr/bin/npm. Sekarang kita liat isinya:
В переводе на английский:
// Enter this into your preinstall script
# Find your npm installation location
# Usually, it's in /usr/bin/npm. Now let's look at the contents:
На дворе 2026 год. Фреймворки для автопентеста уже существуют. Blue team тоже не отстает и предлагает свои решения по использованию LLM в тех же SIEM. Пройдет время, и нам, человекам, останется только с попкорном смотреть за этим противостоянием 🍿
(Источник: https://t.me/ptescalator)
