Аналіз вразливостей компілятора Solidity та стратегії реагування
Компилятор є одним з основних компонентів сучасних комп'ютерних систем, відповідальний за перетворення вихідного коду високорівневої мови програмування в низькорівневі виконувані інструкції. Хоча розробники та фахівці з безпеки зазвичай більше зосереджуються на безпеці коду застосунків, сам компилятор, як комп'ютерна програма, також може мати вразливості. Ці вразливості в певних випадках можуть призвести до серйозних ризиків для безпеки.
Роль компілятора Solidity полягає в перетворенні коду смарт-контракту в інструкційний код Ethereum Virtual Machine (EVM). На відміну від вразливостей EVM, вразливості компілятора Solidity не впливають безпосередньо на мережу Ethereum, але можуть призвести до того, що згенерований код EVM не відповідатиме очікуванням розробника, що може призвести до серйозних наслідків.
Ось кілька реальних прикладів вразливостей компілятора Solidity:
Вразливість HighOrderByteCleanStorage ( версії 0.1.6-0.4.4):
Ця уразливість може призвести до повернення неправильного значення змінної storage без її зміни.
Вразливість InlineAssemblyMemorySideEffects ( версії 0.8.13-0.8.15):
Через неналежну реалізацію стратегії оптимізації компілятора можуть бути неправильно видалені операції запису в пам'ять.
Уразливість AbiReencodingHeadOverflowWithStaticArrayCleanup ( версії 0.5.8-0.8.16):
Під час виконання операції abi.encode над масивом типу calldata, можливо, помилка очищення даних призведе до невідповідності результатів кодування та декодування.
Щоб впоратися з ризиком вразливостей компілятора Solidity, розробники повинні:
Використовуйте новішу версію компілятора
Покращити тестові випадки для модулів
Уникайте використання складного інлайнового асемблера та операцій кодування/декодування ABI тощо.
Фахівці з безпеки повинні:
У процесі аудиту слід враховувати ризики, які можуть бути викликані компіляторами
Рекомендується команді розробників своєчасно оновити версію компілятора
Впровадження автоматичної перевірки версії компілятора в процес CI/CD
Корисні ресурси, на які можна посилатися, включають:
Офіційне попередження про безпеку Solidity
Список помилок репозиторію Solidity на GitHub
Перевірка версії компілятора контрактів, надана Etherscan
Отже, хоча не варто надмірно турбуватися, розробники та фахівці з безпеки повинні повністю усвідомлювати потенційні ризики вразливостей компілятора Solidity і вжити відповідних заходів для їх запобігання.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
12 лайків
Нагородити
12
6
Репост
Поділіться
Прокоментувати
0/400
NftCollectors
· 08-07 11:16
З точки зору базових даних, принаймні 10% коду контрактів не пройшли безпекового аудиту, ризик вразливостей смарт-контрактів не менший за ризик обігу мистецьких творів, але насправді мало хто це розуміє, це ще одна зона недооцінки.
Переглянути оригіналвідповісти на0
LiquidityHunter
· 08-06 16:01
Ця арбітражна можливість з вразливістю компілятора має багато простору під час глибоких роздумів вночі.
Переглянути оригіналвідповісти на0
fren.eth
· 08-06 15:44
Усі грають у смартконтракти, можуть уникнути навіть ями, що більша за баг. Це ж не просте питання?
Переглянути оригіналвідповісти на0
ImpermanentPhilosopher
· 08-06 15:35
Прямо перед компілятором вшановуючи небеса... Доля розробника в чиїх руках?
Переглянути оригіналвідповісти на0
DefiSecurityGuard
· 08-06 15:35
знайшов ще один червоний прапор компілятора solidity... коли ж розробники навчаться дійсно перевіряти свій байт-код виходу smh
Переглянути оригіналвідповісти на0
HashBard
· 08-06 15:33
баґи в компіляторі? ngmi... солідність стає поезією болю fr fr
Глибина аналізу ризиків вразливостей компілятора Solidity та стратегій реагування
Аналіз вразливостей компілятора Solidity та стратегії реагування
Компилятор є одним з основних компонентів сучасних комп'ютерних систем, відповідальний за перетворення вихідного коду високорівневої мови програмування в низькорівневі виконувані інструкції. Хоча розробники та фахівці з безпеки зазвичай більше зосереджуються на безпеці коду застосунків, сам компилятор, як комп'ютерна програма, також може мати вразливості. Ці вразливості в певних випадках можуть призвести до серйозних ризиків для безпеки.
Роль компілятора Solidity полягає в перетворенні коду смарт-контракту в інструкційний код Ethereum Virtual Machine (EVM). На відміну від вразливостей EVM, вразливості компілятора Solidity не впливають безпосередньо на мережу Ethereum, але можуть призвести до того, що згенерований код EVM не відповідатиме очікуванням розробника, що може призвести до серйозних наслідків.
Ось кілька реальних прикладів вразливостей компілятора Solidity:
Вразливість HighOrderByteCleanStorage ( версії 0.1.6-0.4.4): Ця уразливість може призвести до повернення неправильного значення змінної storage без її зміни.
Вразливість InlineAssemblyMemorySideEffects ( версії 0.8.13-0.8.15): Через неналежну реалізацію стратегії оптимізації компілятора можуть бути неправильно видалені операції запису в пам'ять.
Уразливість AbiReencodingHeadOverflowWithStaticArrayCleanup ( версії 0.5.8-0.8.16): Під час виконання операції abi.encode над масивом типу calldata, можливо, помилка очищення даних призведе до невідповідності результатів кодування та декодування.
Щоб впоратися з ризиком вразливостей компілятора Solidity, розробники повинні:
Фахівці з безпеки повинні:
Корисні ресурси, на які можна посилатися, включають:
Отже, хоча не варто надмірно турбуватися, розробники та фахівці з безпеки повинні повністю усвідомлювати потенційні ризики вразливостей компілятора Solidity і вжити відповідних заходів для їх запобігання.