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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для співробітників безпеки:

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

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

  • Офіційне оголошення про безпеку від Solidity
  • Список помилок, оновлений офіційним репозиторієм Solidity
  • Список помилок компілятора для всіх версій
  • Функція підказок про вразливості компілятора, надана Etherscan

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

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

SOL5.11%
ETH3.04%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
Rekt_Recoveryvip
· 07-12 06:08
п RIP всім коштам... був там, втратив все через помилки компілятора в 2018 році, смх
Переглянути оригіналвідповісти на0
RunWhenCutvip
· 07-12 05:51
测不测都得被 обдурювати людей, як лохів
Переглянути оригіналвідповісти на0
FUDwatchervip
· 07-12 03:11
Ця помилка справді страшна, втікаю.
Переглянути оригіналвідповісти на0
ResearchChadButBrokevip
· 07-09 10:27
Компілятор знову в проблемах? Залишаюсь ночувати, щоб виправити помилки.
Переглянути оригіналвідповісти на0
MoonlightGamervip
· 07-09 10:19
Код перевірено, ніяких проблем немає.
Переглянути оригіналвідповісти на0
GasGuzzlervip
· 07-09 09:58
Все ще пишу смартконтракти, є відчуття невдах.
Переглянути оригіналвідповісти на0
  • Закріпити