Актуальные темы
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Произошли первые два известных взлома живых ZK-цепей, и это были не тонкие недостатки в ограничениях.
Это были проверяющие Groth16, развернутые без завершения церемонии доверенной настройки. Один был спасен белыми шляпами за ~$1.5M, другой был опустошен на 5 ETH.
🧵
Оба протокола использовали Circom + snarkjs, самый распространенный стек для развертывания Groth16.
Ошибка? Они пропустили Этап 2 доверенной настройки: шаг, связанный с конкретным вкладом в цепь.
Без этого параметры γ и δ в ключе проверки устанавливаются на одно и то же значение: генераторы G2.
Почему γ = δ ломает всё?
Проверки Groth16:
e(-A, B) · e(α, β) · e(vk_x, γ) · e(C, δ) = 1
Когда γ = δ, злоумышленник может установить C = -vk_x, чтобы отменить оба члена, затем установить A = α, B = β, чтобы отменить остальное. Уравнение становится 1 · 1 = 1. Свидетель не нужен.
Протокол Foom (~1,4 млн долларов) был лотерейным dApp на Base и Ethereum. Спасение от белых хакеров @duha_real и другого независимого белого хакера позволило вывести средства из контрактов до того, как это смог бы сделать злонамеренный участник, используя поддельные доказательства для извлечения 99,97–99,99% токенов.
Протокол Veil (~$5K) был форком Tornado Cash на Base. Злоумышленник вывел весь пул за одну транзакцию, 29 поддельных выводов с использованием фиктивных нулей, таких как 0xdead0000, извлекая полный баланс пула в 2.9 ETH.
Это snarkjs работает как задумано. Когда вы запускаете groth16 setup, он инициализирует γ и δ генератором G2 в качестве заполнителя. Ожидается, что вы выполните zkey contribute, чтобы рандомизировать δ. Пропустите этот шаг, и ваш проверяющий примет любое доказательство.
Страшная часть: это не была глубокая криптографическая ошибка или тонкая ошибка в схеме. Это была ошибка развертывания: пропущенная одна команда CLI. И это находилось в производстве с реальными средствами под угрозой.
выводы:
- Всегда проверяйте скрипты развертывания, а не только код цепи
- Проверьте ваши ключи проверки: если vk_gamma_2 == vk_delta_2, ваши доказательства могут быть подделаны
- Мы работали с @DedaubSecurity, чтобы просканировать EVM-цепи на наличие других затронутых контрактов, высокоценных не найдено, но некоторые существуют
4,07K
Топ
Рейтинг
Избранное
