Вразливості компілятора Solidity загрожують безпеці смартконтрактів. Розробники повинні бути обережними.

robot
Генерація анотацій у процесі

Аналіз вразливостей компілятора Solidity та стратегії їх усунення

Комп'ютерний компілятор є одним з основних компонентів сучасних комп'ютерних систем, його функція полягає в перетворенні вихідного коду високорівневої мови програмування на інструкції, які може виконувати комп'ютер. У порівнянні з безпекою прикладного коду, безпека самого компілятора часто ігнорується. Проте, як комп'ютерна програма, компілятор також може мати вразливості безпеки, що може призвести до серйозних ризиків безпеки в певних випадках.

Роль компілятора Solidity полягає в перетворенні коду смарт-контракту на машинний код команди Ethereum Virtual Machine (EVM). На відміну від уразливостей самого EVM, уразливості компілятора Solidity в основному проявляються в проблемах, що виникають під час перетворення Solidity на код EVM. Це може призвести до того, що згенерований код EVM не відповідає очікуванням розробника, що в свою чергу може викликати аномалії в роботі смарт-контракту, ставлячи під загрозу безпеку активів користувачів.

Аналіз вразливостей компілятора Solidity та заходи реагування

Ось кілька реальних прикладів вразливостей компілятора Solidity:

  1. SOL-2016-9 HighOrderByteCleanStorage

Вразливість існує в раніших версіях компілятора Solidity (>=0.1.6 <0.4.4). У певних випадках, змінні storage можуть бути випадково змінені, що не відповідає очікуваній поведінці. Ця невідповідність може призвести до серйозних наслідків, особливо коли змінні використовуються для перевірки прав або обліку активів.

  1. SOL-2022-4 InlineAssemblyMemoryПобічні ефекти

Ця вразливість існує в компіляторах версій від 0.8.13 до 0.8.15. Через помилку в процесі оптимізації компіляції, це може призвести до того, що операції запису в пам'ять будуть ненавмисно видалені, що призводить до непередбачуваної поведінки програми.

  1. SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup

Ця уразливість впливає на компілятори версій з 0.5.8 до 0.8.16. Під час виконання операції abi.encode з масивом типу calldata, можливо, неправильно очищуються деякі дані, що призводить до зміни сусідніх даних і викликає невідповідність між закодованими та декодованими даними.

Аналіз уразливостей компілятора Solidity та заходи реагування

Щодо вразливостей компілятора Solidity, команда безпеки блокчейну Cobo пропонує такі рекомендації:

Для розробників:

  • Використовуйте новішу версію компілятора Solidity
  • Покращити одиничні тестові випадки
  • Уникайте використання вбудованого асемблера, складного кодування та декодування ABI тощо.

До служби безпеки:

  • При аудиті враховуйте потенційні ризики безпеки, які можуть бути введені компілятором
  • У процесі SDL закликаємо оновити версію компілятора
  • Оцінка фактичного впливу вразливостей компілятора залежно від конкретних обставин

Корисні ресурси:

  • Офіційний блог про безпеку Solidity
  • Список помилок у репозиторії Solidity на GitHub
  • Поради з безпеки на сторінці коду контракту Etherscan

У підсумку, хоча немає потреби в надмірній паніці, розробники та фахівці з безпеки повинні повністю усвідомлювати потенційні ризики уразливостей компілятора Solidity та вжити відповідних заходів для зменшення можливих загроз безпеці.

Аналіз вразливостей компілятора Solidity та заходи реагування

SOL-3.43%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
ZkProofPuddingvip
· 08-01 20:20
Ще один компілятор
Переглянути оригіналвідповісти на0
TheMemefathervip
· 08-01 20:19
Компилятор також має вразливості? Жесть.
Переглянути оригіналвідповісти на0
HodlOrRegretvip
· 08-01 20:18
Знову оновлення призвело до багів, втрачають велику кількість завжди роздрібні інвестори.
Переглянути оригіналвідповісти на0
wrekt_but_learningvip
· 08-01 20:16
Цей кодовий вразливість справді неприємна, голова свербить.
Переглянути оригіналвідповісти на0
GweiTooHighvip
· 08-01 20:13
Компилятор снова выдал ошибку, это так раздражает.
Переглянути оригіналвідповісти на0
BakedCatFanboyvip
· 08-01 20:11
Знову вразливість EVM. Боже, не можу з цим впоратися.
Переглянути оригіналвідповісти на0
  • Закріпити