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

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

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

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

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

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

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

  1. SOL-2016-9 HighOrderByteCleanStorage

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

  1. SOL-2022-4 Внутрішня асамблея пам'яті Бічні ефекти

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

  1. SOL-2022-6 AbiПерекодуванняГоловиПереповненняЗСтатичнимМасивомОчищенням

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

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

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

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

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

Для безпеки працівників:

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

Деякі корисні ресурси:

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

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

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 5
  • Поділіться
Прокоментувати
0/400
blocksnarkvip
· 07-10 15:09
Гроші за виправлення помилок найсмачніші
Переглянути оригіналвідповісти на0
BlockchainDecodervip
· 07-08 10:18
Згідно з класичною статтею "Аналіз компілятора Solidity (2022)", ризик таких вразливостей становить 78,3%, рекомендується обережно використовувати версії 0.8.0+ для їх уникнення.
Переглянути оригіналвідповісти на0
DaisyUnicornvip
· 07-08 10:14
Йінь-йінь, компілятор також отримав маленьку помилку, давайте швидше випустимо нову версію!
Переглянути оригіналвідповісти на0
FlashLoanLarryvip
· 07-08 10:13
просто ще один день у DeFi... експлойти компілятора = безкінечні можливості MEV, чесно кажучи
Переглянути оригіналвідповісти на0
AlphaLeakervip
· 07-08 10:04
Навіть після повторного оновлення не встоїш проти хакерів.
Переглянути оригіналвідповісти на0
  • Закріпити