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

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

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

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

Наприклад, у браузері, під час компіляції та аналізу виконання коду JavaScript, можуть виникнути серйозні наслідки, такі як віддалене виконання коду, через вразливість JavaScript-двигуна. Компілятор Solidity не є винятком, у кількох версіях також є вразливості безпеки.

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

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

Однією з небезпек вразливостей компілятора Solidity є те, що вони можуть призвести до розбіжностей між згенерованим кодом EVM та очікуваннями розробника смарт-контракту. Оскільки смарт-контракти зазвичай пов'язані з криптовалютними активами користувачів, будь-які помилки, викликані компілятором, можуть мати серйозні наслідки. Лише шляхом аудиту вихідного коду контракту важко виявити такого роду проблеми, необхідно поєднувати аналіз конкретних версій компілятора та моделей коду.

Нижче наведено кілька реальних вразливостей компілятора Solidity, що демонструють їх конкретні форми, причини та шкоду.

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

Вразливість SOL-2022-4 InlineAssemblyMemorySideEffects існує в компіляторах версій >=0.8.13 <0.8.15. Ця вразливість виникає через неправильну обробку коду вбудованої асемблерної мови під час оптимізації компіляції, що може призвести до неправильної видалення деяких операцій з пам'яттю.

Уразливість SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup впливає на компілятори версій >= 0.5.8 < 0.8.16. Ця уразливість може призвести до несумісності даних під час операції abi.encode над масивами типу calldata.

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

На основі аналізу вразливостей компілятора Solidity, розробникам і спеціалістам з безпеки пропонуються наступні рекомендації:

Розробник:

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

Охоронці:

  • Під час безпекового аудиту слід враховувати ризики, які можуть виникнути через компілятор.
  • Підвищення версії компілятора в процесі SDL
  • Введення автоматичної перевірки версії компілятора в CI/CD
  • Оцінка фактичного впливу вразливостей компілятора відповідно до конкретних проектів

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

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

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

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

ETH3.21%
SOL1.85%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 5
  • Поділіться
Прокоментувати
0/400
MetaverseHobovip
· 5год тому
Знову купа вразливостей, чого панікувати?
Переглянути оригіналвідповісти на0
OfflineValidatorvip
· 5год тому
Пограв у знищення понад 2k usdt, зниження вимірів для тих, хто розуміє купувати низько та продавати високо

Знову проскочила помилка з компілятором...
Переглянути оригіналвідповісти на0
FallingLeafvip
· 5год тому
Вразила помилка, я нічого не наважуюсь грати.
Переглянути оригіналвідповісти на0
PoetryOnChainvip
· 5год тому
Знову прийшов підписатися на вразливості, втік, втік.
Переглянути оригіналвідповісти на0
AirDropMissedvip
· 5год тому
Знову проблеми з компілятором, не можу не сміятися.
Переглянути оригіналвідповісти на0
  • Закріпити