TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #361 263
Безопасность. Атака Short Address

Для вызова функций контрактов используется ABI (Application Binary Interface) — бинарный интерфейс приложения, согласно которому вызов функции представляется в виде последовательности байтов. Первые четыре байта — это начало хеша keccak256 от подписи функции (ее название и типы входных данных), далее идут значения входных параметров.

function transfer(address to, uint amount) public returns (bool success);

Адрес в Ethereum состоит из 20 байт. Для осуществления атаки злоумышленнику нужно сгенерировать адрес, который заканчивается на нулевой байт, например abcdabcdabcdabcdabcdabcdabcdabcdabcdab00. В обычном случае вызов функции на перевод 1 ether будет выглядеть так (вертикальной чертой разделены составляющие последовательности):

a9059cbb|000000000000000000000000abcdabcdabcdabcdabcdabcdabcdabcd
abcdab00|000000000000000000000000000000000000000000000000000
0000000000001

Но если указать адрес abcdabcdabcdabcdabcdabcdabcdabcdabcdab без последнего байта, то недостающий байт адреса будет взят из следующего аргумента (amount), а в конец EVM допишет нулевой байт:

a9059cbb|000000000000000000000000abcdabcdabcdabcdabcdabcdabcdabcd
abcdab|00000000000000000000000000000000000000000000000000000
0000000000100

Получается, вместо 1 ether жертва отправит 0x100=256 ether. Защититься от такой атаки поможет только тщательная проверка параметров перед загрузкой их в блокчейн.

#shortaddress #безопасность
  • 👍 1
More from @solidityset
  1. Oct 15, 2026Немного новостей про Core Solidity Команда Solidity опубликовала обновление о разработке C…
  2. Oct 8, 2026Промо видео для SaaS и других ваших проектов Хочу поделить с вами одним из своих открытий…
  3. Oct 8, 2026video post
  4. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  5. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  6. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →