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

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

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

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

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

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

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

  1. SOL-2016-9 HighOrderByteCleanStorage: Ця уразливість існує в ранніх версіях компілятора Solidity (>=0.1.6 <0.4.4). Через те, що компілятор неправильно очищує старші біти при обробці переповнення цілих чисел, це може призвести до випадкової модифікації сусідніх змінних.

  2. SOL-2022-4 InlineAssemblyMemoryПобічні ефекти: Ця уразливість існує в компіляторах версій від 0.8.13 до 0.8.15. Через оптимізацію компілятора, яка аналізує окремі блоки assembly, можуть помилково бути видалені на вигляд надмірні, але насправді корисні інструкції запису в пам'ять.

  3. SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Ця уразливість впливає на компілятори версій з 0.5.8 по 0.8.16. Під час виконання операції abi.encode з масивами типу calldata неправильно очищались деякі дані, що призводило до зміни сусідніх даних.

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

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

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

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

Для безпеки персоналу:

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

Декілька корисних ресурсів:

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

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

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

SOL-3.25%
ETH-2.99%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
StakeWhisperervip
· 07-21 09:21
Рано підписатися на баги компілятора? Цей Новачок смішний.
Переглянути оригіналвідповісти на0
OnchainGossipervip
· 07-21 06:50
Тільки що виправив уразливість, як з’явилася нова... розводжу руками
Переглянути оригіналвідповісти на0
blockBoyvip
· 07-20 10:39
Це справді велика проблема... Хто може її насправді вирішити?
Переглянути оригіналвідповісти на0
BearMarketSagevip
· 07-20 10:39
Розробляє, але не може самостійно протестувати контракт?
Переглянути оригіналвідповісти на0
WalletDetectivevip
· 07-20 10:36
Цей компілятор просто жахливий.
Переглянути оригіналвідповісти на0
BrokeBeansvip
· 07-20 10:34
Схоже, що потрібно переписати контракт!
Переглянути оригіналвідповісти на0
  • Закріпити