Проект: AuPM: меня никто не просил, а я решил починить supply chain security  Публичный пост
22 октября 2026  113
AuPM: меня никто не просил, а я решил починить supply chain security
https://github.com/TriplEight/AuPM

TL;DR: Я пилю AuPM, враппер npm registry, где юзеры скидываются по $0.01 USDC (можно от $0.001) на человеческий аудит конкретных версий пакетов, а аудиторы (и скоро мейнтейнеры) получают за это деньги. Это проект с планами на будущее. С ним я выиграл идеатон и хакатон в этом году. Сейчас это PoC в проде, задеплоен на mainnet с реальными деньгами. Нужны доноры, аудиторы и честный фидбек. Пиши сюда или в телегу.

Всегда хотел попробовать сноски в начале статьи.
*Если ты дочитал досюда, то ты охуенный! Можно бы уже и поставить звёздочку на гитхабе
** Было бы здорово 🛐, если бы ты дочитал пост и может даже вдохновился до конца недели

А? Что?

Из-под Open Source уходит земля, опять. Мы живём в теории мёртвого интернета.

Axios, а это примерно "все, кто вообще делает HTTP-запросы в JS", получил заражённые релизы (1.14.1 в modern-ветке и 0.30.4 в legacy). Аккаунт ключевого мейнтейнера на npm угнали северокорейцы, трекается как UNC1069 / Sapphire Sleet. Малварь поехала на миллионы машин.

Заодно в PyPI подъехали LiteLLM 1.82.7 и 1.82.8 с бяками внутри. Если у тебя в CI был pip install без пина, у тебя был очень интересный вторник.

Вы скажете: "У нас же есть инструменты!" Есть. Давайтеж:

  • npm audit ищет по базе CVE, то есть ловит только то, что уже известно. Неплохо, конечно, но в нашем контексте как в анекдоте про наркоманов и машину
  • Socket.dev делает статический и поведенческий анализ и блокирует в реальном времени. Штука годная, но это тупой автомат
  • Sigstore доказывает, откуда пакет, а не что он безопасен. Паспорт у злодея тоже настоящий
  • OpenSSF Scorecard считает метрики здоровья проекта. Девиз с сайта: "Assess open source projects for security risks through automated checks"
  • Snyk и Dependabot дают CVE-сканирование и автоматические PR. Опять же по уже известному

Все эти инструменты автоматические и реактивные. Ни один не даёт того, что реально ловит такие атаки: живого человека, который прочитал код и поставил под этим свою репутацию (а скоро и придержанные выплаты).

А тут внимательный читател кекнет и скажет "АИ ревью". А я побью репутационной системой и peer review (об этом дальше). То есть мне похуй, чем человек аудитил, - у меня его GPG (soon) ключ и очко репутации. И если второй ревьювер (тоже с похуй чем в руках) докажет что первое ревью - слоп, то это очко уйдёт в зрительный зал.

А мейнтейнеры сваливают

AI-агенты ломают луп, на котором держалось финансирование опенсорса. Когда разрабы курили мануалы, они замечали баннер "поддержи автора" с Ko-Fi и Patreon. И заводили осмысленные баги. Агент вообще не заходит на GitHub-страницу своей зависимости. Скачивания растут, а вовлечённость падает. Это называют "demand-diversion channel".

Показательный пример Tailwind CSS: скачивания выросли, трафик в доках упал на 40%, выручка упала на 80%. Ghostty и cURL тоже страдают, только по-другому: их заваливают AI-слопом (важные ссылки ещё раз в конце поста).

Gitcoin и quadratic funding тоже не панацея. Платёж там оторван от использования и держится на кампаниях с ограниченным охватом. В итоге самые глориус проекты получают почти всё, а скучная библиотека, на которой тихо висит половина мира, сидит без копейки. Классический left-pad, только побольбше.

Как это решают сейчас: "а мы просто всё форкнем"

Нормальные компании давно не ставят зависимости с интернета как попало. Корпораты держат внутренние реджистри и целые команды, которые читают, форкают и проверяют всё, что идёт в продакшен. Есть бизнесы вроде Anaconda, которые продают "безопасный CVE-проверенный репозиторий типа Artifactory". Artifactory вообще отдельный гигантский энтерпрайз-продукт под ту же задачу.

Работа делается огромная, результаты никогда не публикуются. Каждая контора независимо смотрит на один и тот же ms@2.1.3, нажимает "Approved" и прячет это в Confluence, которую больше никто не откроет. Сообществу не достаётся ничего, а мейнтейнер не получает ни копейки, ни спасиба. Это несправедливо хотя бы по отношению к авторам опенсорса. И это стандарт индустрии.

Это как если бы каждый дом на раёне нанимал своего электрика проверить одну и ту же подстанцию, а потом все молча расходились.

Проверка нужна, но можно же делать её один раз и публично.

Что такое AuPM

AuPM (Audited Package Manager) - это npm-pnpm-yarn-npx-совместимый реджистри-враппер. Перед выдачей пакета смотрит статус аудита. Дальше работает простая схема:

  • Непроверенный пакет ставится бесплатно, ровно как в обычном npm
  • Проверенный тоже ставится бесплатно
  • Если хочешь, можешь донатить при установке, и деньги идут тем, кто проверил (live), починил и вмержил (soon) именно эту версию

Установка без --donate остаётся бесплатной всегда и это дефолт. Никаких пейволлов и "подпишись, чтобы поставить lodash".

Уровней ревью пока два:

  • UNREVIEWED - по умолчанию. Никто не читал именно эту версию / tarball
  • COMMUNITY_REVIEWED - аудитор прочитал этот конкретный tarball и отправил ревью

Донат платит за чтение одного пакаджа и сверку с опубликованным релизом на npm. Цена - минимум $0.001, рекомендид $0.01 за проверенный пакет. Донат по lockfile стоит по числу проверенных пакетов в нём.

Потом он будет делиться примерно так:

Получатель Сплит
Reviewer line (auditors of that exact version) 40%
Contributor (author of a confirmed fix) 10%
Maintainer 25%
Treasury (bounties, arbiters, spot-checks) 20%
Ops 5%

Это целевая схема распределения денегов, вчера тестил эту часть на тестнете. Завтра релиз нового контракта с вот этим распределением. Мейнтейнерская и контрибьюторская роли пока не имеют онбординга, и я хочу, чтобы мейнтейнеры сами сказали, как он должен работать. Пока онбординга этих ролей нет, их доли (35%) копятся в treasury - не у меня в кармане.

Часть ops - это на мейнтенанс самого проекта. Пока что я гоняю центики один у себя в кармане.

Как работают твои 2¢

  • донору который настроил донаты в CLI, MCP и CI, $5 скорее всего хватит больше чем на месяц (+ можно настроить лимит трат в месяц и множиель доната) когда будет отаудировано достаточно популярных пекеджей
  • Донаты уходят в пулы по package name@version и дальше разделятся по схеме выше
  • Аудитор будет получать 40% пока его не оспорят - тогда этот пул поделится на двоих или более
  • Контрибьютор видит аудит и приходит чинить - делает PR
  • Мейнтейнер ревьювит, читает аудит и PR, мöржит. Тогда мы считаем что вся цепочка сработала, пекедж стал здоровее и пора всем автоматически заплатить

Да, знаю, крипта, вевеве

Я сам не фанат рагпуллов, шиллеров, грифтеров, мемкоинов и "токенов управления поилкой для кошек". Поэтому сразу отвечаю на "зачем тут крипта".

Если говорить про заветный (и недостижимый как коммунизм) для криптанов mass adoption, ящетаю что из всех высеров криптомира x402 - самый вменяемый и полезный финансовый инструмент, и вот почему:

  1. Платёж слишком мал для банка. У банковских и карточных сетей фиксированная комиссия, обычно десятки центов с платежа. Для $0.001 это издевательство. Транзакция на Algorand стоит долю цента. Поэтому микродонат работает
  2. Открытый стандарт. Платёж идёт по x402. Это превращает HTTP 402 "Payment Required" (который почти 30 лет лет пылился в спецификации) в рабочий поток оплаты. Стандартом управляет x402 Foundation при Linux Foundation, в участниках Google, AWS, Visa, Stripe и Cloudflare

Онбординг с кошельком сейчас самый тяжёлый шаг во всём AuPM, факт. Я очень старался сделать его не анальным, но до "нажал кнопку, готово" ещё рано. Сейчас весь процесс настройки доната занимает минут 5 И ЭТО НЕПЛОХО (больше всего в крипте бесит онбординг, да). Если есть идеи, как сделать лучше, пиши. Я буду просто охуеть как рад крайне признателен и помогу любому, кто захочет поиграть в x402 и дать мне фидбек. Каждая реальная транзакция помогает проекту на хакатоне.

А ещё хакатон проводит Algorand. Конечно, я подумал про другие средства оплаты. Например MPP или WERO (потому что Visa и MasterCard должны сдохнуть) или пополнять баланс чем попало и списывать центы оттуда батчами. И отложил их напотом.

Про деньги и промотать: это микроплатежи, не микрокредиты. Даже 5 USDC потратить будет непросто. При $0.01 за пакет это 500 проверенных пакетов. Придётся постараться, чтобы разориться на supply chain security. Пока мы на тестовых аудитах, я вам даже всё потраченное верну.

Почему $0.01? Звучит как рабский труд

Потому что выглядит как комочек пыли в кармане зимней куртки, которую себе может позволить каждый. Популярные пакеты скачиваются сотнями тыщ в неделю, с CI и AI эти цифры растут. Считай сам.

Есть настройка с рейтом: "хочу донатить ×2 ×100 потому что я охуенный или х0.1 потому что поддерживать хочется, но я нищий" - от базы $0.01. И отдельный вход для корпоратов в плане.

Очень хочется чтобы получилось комьюнити и job marketplace для аудиторов и контрибьюторов.

Куда нести деньги!?

Дефолтно ничего не донатится, даже если ты завёл кошелёк. Чтоб донатить на ходу, нужно нарочно передавать флаг или менять настройку - во всех случаях: CLI, Github Actions, MCP.

1. Поставь CLI

aupm - drop-in замена npm. Под капотом он запускает настоящий npm и пробрасывает твои аргументы туда и exit code сюда без изменений.

  1. Поставить CLI:
npm install -g aupm-cli                      # установить сабж

Кулстори: сначала проект назывался SPM (secure ага), но оказалось что это Swift Package Manager и занято. Переименовался в AuPM, купил домен, стал регать aupm на npmjs - тот мне сказал что "уняня, очень похоже на npm и pnpm, придумай чо посложнее".

2. Самое сложное: завести кошелёк

Один раз настроить кошелёк занимает 5 минут и несколько шагов, пополнять потом сильно проще.

⚠️ Для доноров это hot wallet бай дезигн, поэтому ееещё раз: не храните там много деньгов, $5-10 норм.

Если ты в неправильной стране, возможно нужно использовать VPN.

  1. Донор: создай кошелёк донора. Выполни команду aupm donor init. На экране отобразится адрес для пополнения. Сохрани мнемонику в другое физическое место.

  2. Пошли себе USDC. Два примера:

  • Кошелек Pera: см. руководство по Pera Fund, там 3 шага.
  • С другого чейна: по ссылке выше есть список поддерживаемых CEX/DEX.

⚠️ Перед отправкой проверь адреса кошельков, га.

Остальной онбординг (честное слово, не анальный) всех ролей в этом доке. Очень жду фидбек по онбордингу! Кратко:

CI

Форкнуть https://github.com/TriplEight/AuPM-action-demo
Как настроить один секрет и юзать тут.

MCP

Для AI-агентов есть MCP-сервер. check_audit_status проверяет статус, install_audited_package (с allowDonation: true типает) скачивает tarball проверенной версии, а attest_lockfile донатит за весь lockfile сразу.

Онбординг тут, агент сам всё сделает.

Агент без MCP может использовать https://aupm.fyi/llms.txt

Как стать аудитором

Хочешь зарабатывать за каждое скачивание отаудированной версии?? Без тебя ничего не получится! (Литерали, донатить можно только за отаудированную и починенную версию.)

⚠️ В случае аудитора кошелёк не горячий - значит пожалста не надо сохранять мнемонику на компе.

  1. Открой issue "Auditor application form", дай адрес холодного аккаунта с opt-in в USDC.
  2. npm pack pkg@x.y.z, читаешь package/.
  3. aupm auditor review pkg@x.y.z: четыре вопроса, одна нулевая транзакция, ревью on-chain.

Онбординг тут.

Что здесь честно хреново (что мне не нравится)

  • Онбординг в крипту.
  • Доверенный админ и крешитер. Любой скажет что это централизация доверия. Выплаты рассылает сам контракт, но адреса получателей ему передаёт крешитер - горячий ключ на сервере, которым ночной джоб раз в сутки отправляет начисления. Если сервер взломают, злодей сможет увести невыплаченное себе. Поэтому в контракте есть payoutCap: потолок выплат за сутки. Больше капа за раз не утечёт, а доли ops и treasury идут на зашитые в контракт адреса, которые крешитер не трогает. Над крешитером стоит админ - мультисиг 2 из 3. Он может сразу снизить кап хоть до нуля и сменить крешитера. Это пожарный шкафчик на случай взлома. Но той же кнопкой два подписанта могут назначить крешитером себя и забрать невыплаченное (в пределах того же капа). Поднять кап, поменять адреса ops/treasury или мигрировать контракт админ может только с публичным анонсом и через 7 дней. Это окно предупреждения, а не ограничение полномочий. Каждая выплата - публичная транзакция on-chain, кто угодно может сверить, куда ушли деньги. Будут ли одмины так делать? Ну разве что если они хотят навсегда закопать репутацию проекта и потерять доверие
  • Фильтра по тирам при установке нет. aupm и MCP сейчас ставят любой пакет, проверенный или нет, ровно как сам npm
  • Cold start. Пока проверено 30 пакетов: это пилот, а не покрытие. Поэтому пока нет настроек "не качай неаудированные" и "не качай злые"
  • Лигал.
    • Я смотрю в сторону организации некоммерческой организации и фонда, чтоб собрать туда достойных кураторов. И есть у меня опасение что моя страна залезет мне в жёппу по самые коленки.
    • Первые выплаты сторонним аудиторам только после юридической проверки
  • Пока нет T&C, но нельзя создавать картели аудиторов или мейнтейнеру аудитить свой собственный пекедж. Контрибьютором может быть кто угодно

FAQ

  • "Оно вайбкожаное?" Мне нравится термин LLM-assisted engineering. Я очень внимательно отношусь к безопасности, архитектуре, спекам и харнессу с доками
  • "Это же скам с токеном или какая-то пирамида?" Нет. Своего токена нет, платёж идёт в USDC. Код под AGPL-3, смотри сам. Сейчас всё зарегистрировано на меня, потом это будет НКО или фонд с нологами и всем белым
  • "Почему Algorand, а не Ethereum/Solana?" В README причина названа только общая: у Algorand дешёвые комиссии, это делает $0.001 возможным. Ну ещё это их хакатон :) Поддержка других платёжных методов планировоется
  • "Что мешает аудитору положить слоп и уйти с деньгами?" Потому что придёт второй аудитор и обоссыт его. А ещё запланирована репутационная система
  • "Кто гарантирует, что аудитор не ошибся?" Никто. Ревью привязано к точному tarball/checksum и записано on-chain, то есть с репутацией и деньгами. Это лучше, чем "статик анализ сказал, что всё ок"
  • "А если мой пакет не проверен?" всё как в обычном npm
  • "Я мейнтейнер, что мне с этого?" Реагируешь на аудиты, тебе почот и увожение. И 25%

Чего дальше и чего я хочу от тебя

Проект на ранней стадии, живёт на mainnet, и многое делается руками.

  • Пойду в Linux Foundation расскажу чо я наделал
  • Поддержка других пакадж менеджеров, в том числе Python, AUR и Docker
  • Поддержка GitLab, Forgejo и Radicle
  • Другие методы оплаты
  • Job marketplace для аудиторов и контрибьюторов
  • Комитет governance и управление treasury

В первую очередь я зову:

  1. Доноров. Положи пару USDC на Algorand-аккаунт, прогони aupm install --donate и github action и скажи, где было больно. Особенно меня интересует онбординг.
  2. Аудиторов. Если умееш читать чужой код и хочеш, чтобы за это платили, онборднись и напиши мне
  3. Мейнтейнеров. Потому что всё это ради вас ❤️‍🔥
  4. Всех остальных:* поставь звезду на GitHub, попробуй npm install -g aupm-cli и скажи, что сломалось. Ищщюез always welcomd (PRы я закрыл потому что ревьювить запрос на изменение спеки и формулировать его сомостоятельно сильно экономит время)
  5. Если нравится идея - пошарь её со знакомыми опенсорс мейнтейнерами и секурити аудиторами (наверное нужно будет запилить реф систему)

Пиши в Telegram, в профиль, в issues или в комментариях. Ругай, предлагай и присылай идеи, как всё это сломать.

Если пост зайдёт, буду писать дальше про репутационную систему, отдельные роли в деталях, дизайн антифрод механизмов, секурити протоколы этц.

**

Ссылки / почитать

10 комментариев 👇

Я, конечно, очень извиняюсь, но вижу это только так:

  Развернуть 1 комментарий

@xenohunter, а нечего извиняться, всё так и есть. Только эти ревью теперь будут публичные и люди будут постить за деньги и рискуя получить за это по репутации.

  Развернуть 1 комментарий

@xenohunter, а теперь, если серьёзно.

В целом, идея действительно благородная, и общий вектор её решения, наверное, довольно правильный. Но чтобы такой платформой начали всерьёз пользоваться, она должна стать достаточно заметной, а чтобы она стала заметной, ей должны начать всерьёз пользоваться. Сейчас, я думаю, индустрия в таком состоянии, что почти никому нет дела до этой проблемы, все просто зальют её токенами из корпоративной подписки, потому что к условному Антропику доверия достаточно, чтобы отдать это на откуп Клоду. А у крупных компаний уже свои процессы налажены, им это почти наверняка будет неинтересно. Такая трагедия общин.

Думаю, что те немногие пути, на которые можно надеяться — это получить поддержку от какого-нибудь open source фонда и/или влиться с этим проектом в какую-то крупную компанию, у которой уже есть хороший аудит, с целью сделать этот аудит публичным (а для компании это дополнительные плюсы в карму).

В любом случае, удачи!

  Развернуть 1 комментарий

@xenohunter,

к условному Антропику доверия достаточно

на секунчку: эти ребята работают на американскую военку, читают твои промпты и личные данные, пиздят чужие идеи и покупают проекты до того как те выйдут на IPO. Какое доверие? Модели хорошие, да.

А у крупных компаний

Компании не стесняются донатить в опенсорс - и даже не только потому что им это уменьшает налоги. Некоторые даже хвалятся публично этими суммами чтобы публично выглядеть симпатичнее.

это получить поддержку от какого-нибудь open source фонда

Да, конечно я схожу в Linux Foundation и подумаю куда ещё.

Спасибо!

  Развернуть 1 комментарий

@TriplEight, доверие огромное просто. Куча компаний буквально не проверяют, что им там напишет Claude Code, и пускают это всё в продакшн.

  Развернуть 1 комментарий

@xenohunter, да, это точно. Но всё равно ответственность на тех, кто мержит код в прод.

  Развернуть 1 комментарий

@xenohunter, Мне влом просить ассистента каждый раз ревьвьвить код. Пока это не что-то автоматическое то шанс забыть такой же как и шанс укусить шмеля в ответ на его атаку. Маленький но ненулевой

  Развернуть 1 комментарий
Mikhail Rosin Веб разработка. Фронтенд. Ранее тимлид, теперь разработчик на все руки. 1 час назад

Звучит интересно. Онбординг реально выглядит не вжух вжух и готово, но ценность идёт он не уменьшает.
Буду с интересом наблюдать.

  Развернуть 1 комментарий

@vindi, спасибо!
Я провёл в блокчейн проектах последние 8 лет и последние 3 как раз чинил проектам онбординг и в целом продукты. Блокчейн user experience это как жевать стекло - просто потому что "ой я опечатался в адресе, что делать?".

Тут я постарался и применил все свои наработки - насколько позволяет PoC. По пути кстати зарепортил и починил несколько багов в Algorand, которые мне мешали.

Ну и я упомянул что буду встраивать MPP и может WERO.

  Развернуть 1 комментарий
Denis Pisarev дев культист автор 58 минут назад

плейсходор

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб