Единици
1. Вовед во вештачката интелигенција во блокчејн и веб3: улоги, граници, автентикација и безбедност-критичност 2. Поддршка за паметно пишување договори: Solidity/Vyper Draft и генерирање безбедно кодови 3. Поддршка за паметна ревизија на договор: безбедносен преглед и нацрт-наоди 4. Скенирање на ранливост: вообичаени модели на ранливост и автоматска анализа 5. Анализа на податоци во синџирот: Да се создаде смисла за блокирање, трансакции и податоци од паричник 6. Анализа на DeFi и протокол: ликвидност, MEV и економски напади 7. Токеномичко моделирање: снабдување, дистрибуција, поттик и симулација 8. Документација и техничко пишување: Бела книга, NatSpec и Упатство за употреба 9. Измама, влечење и откривање ризик: црвени знамиња на синџирот 10. Безбедносно-критична ревизија, одобрување од експерти и одговорна употреба 11. Работен тек од крај до крај, управување, верификација и етика
Единица 4 / 11

Скенирање на ранливост: вообичаени модели на ранливост и автоматска анализа

Добивки:

  • Способност да се препознаат обичните обрасци на ранливост како што се повторното влегување, контрола на пристап, манипулација со пророци и предно извршување и да се скенираат со алатка за статичка анализа + вештачка интелигенција + човечка
  • Способност да се направи разлика помеѓу силните страни на вештачката интелигенција во објаснувањето на излезот на алатката и приоритизирањето на лажни позитиви и слабости во MEV и деловната логика
  • Разберете дека „чистото скенирање“ не е безбедносен сертификат, дека скенирањето е само еден слој на контрола

Ја видовме холистичката дисциплина на ревизија во претходната единица. Во оваа единица, се фокусираме на потехничка тема: скенирање на ранливост - систематско пребарување за познати обрасци на ранливост во кодот. Овде ќе користиме вештачка интелигенција, заедно со алатки за статичка анализа, како асистент кој скенира и опишува познати шеми на ранливост. Целта: длабински да се запознаат најчестите пропусти и да се разликува каде вештачката интелигенција е доверлива и каде е неадекватна при нивното скенирање.

Статично и динамично скенирање

Скенирањето е од два вида. Статичка анализа - испитување на кодот без да се изврши: Алатките како што се Slither и Mythril го скенираат кодот на договорот и ги означуваат познатите обрасци. Динамичка/симболичка анализа (извршување на кодот со различни влезови или математички истражување): fuzzing (бомбардирање со случаен влез) и симболично извршување (истражување на сите можни патеки) спаѓаат во оваа група.

ВИ не ги заменува овие алатки, туку ги надополнува: кога возилото издава предупредување, вештачката интелигенција го објаснува предупредувањето на едноставен јазик; ВИ може да потсети кога алатката пропушта шема; Но, вештачката интелигенција сама по себе не може да гарантира колку скенира. Вистинскиот работен тек: алатка + AI + човек.

Совет: дајте ѝ на вештачката интелигенција излез од алатка за статичка анализа (на пр. Извештај Slither) и прашајте „објаснете го секое предупредување на едноставен јазик, кои се реални ризици и кои би можеле да бидат лажно позитивни? прашај. Вештачката интелигенција е од непроценливо значење за да се направи излезот од сировата алатка разбирлив и да се даде приоритет за луѓето.

Најчести модели на ранливост

1. Повторно влегување. Ако некоја функција повика надворешен договор без да ја ажурира неговата состојба, повиканиот договор може да се врати назад, повторно да ја активира истата функција и да го повлече фондот повеќе пати. Решение: проверки-ефекти-интеракции редослед и заштита за повторно влегување.

2. Недостаток на контрола на пристап. Една критична функција (повлекување, повлекување, надградба) е случајно објавена во јавноста. Тоа е една од најчестите и најскапи грешки.

3. Манипулација со Oracle. Слепото потпирање на договорот на надворешен извор на цена (оракл). Напаѓачот манипулира со цената веднаш и го измами протоколот. Решение: временски пондерирана просечна цена (TWAP), мулти-извор.

4. Прелевање/потпаѓање на цел број. Кога некој број ја надминува максималната дозволена вредност и се враќа на почеток. Modern Solidity го фаќа најголемиот дел автоматски, но ризикот останува во кодот на ниско ниво (монтажа).

5. Предно трчање. Трансакциите се појавуваат во јавниот базен (mempool) пред да бидат потврдени; Напаѓачот може да ја види вашата трансакција и да вметне своја трансакција пред неа. MEV (Maximal Extractable Value — вредноста извлечена од трансакциската секвенца) е општото име на оваа тема.

6. Одбивање на услуга (DoS). Јамката станува премногу скапа и ја прави функцијата неупотреблива, или зависноста од адресата станува заклучена.

7. Надградете ги ризиците. Судир на складирање и злоупотреба на овластувањата во договори за надградба.

ранливост

Доверба за скенирање со вештачка интелигенција

Зошто

повторно влегување

високо

Добро позната, јасна шема

контрола на пристап

високо

Калапот може да се скенира

Операции со цели броеви

високо

стандардна контрола

Манипулација со Oracle

средно

Потребен е контекст

Предно трчање/MEV

Средно-ниско

специфичен за протокол

грешка во деловната логика

низок

Автентично, контекстуално

Слаб промпт / Силен промпт

Слаба навестување:

Дали има дупка во овој код?

Моќен потсетник:

Вашата улога: асистент за проверка на безбедноста. Скенирајте го договорот подолу за следните познати обрасци и „во ризик/не/несигурен“ за секој од нив: повторно влегување, контрола на пристап, операции со цели броеви, зависност од оракулите, предно работење, DoS, безбедност на надградба. Поврзете ја секоја определба со соодветната линија и објаснете зошто постои ризик. Ова се хипотези кои ЌЕ БИДАТ ПОВЕРИЦЕНИ со алатка за статичка анализа и ревизор. Забележете дека може да има лажни позитиви.

Четири шаблони за копирање

1) Опис на излезот на алатката:

Подолу е извештајот на алатка за статичка анализа (Slither). Објаснете го секое предупредување на едноставен јазик: што значи тоа, дали е реален ризик или можен лажно позитивен, кој треба да биде неговиот приоритет? Не донесувајте цврста одлука; Приоритет за потврда од ревизор.

2) Скрининг фокусиран на повторно влегување:

Најдете ги сите функции што остваруваат надворешни повици во овој договор. Проверете дали се следи редоследот на проверки-ефекти-интеракции за секоја од нив и дали има заштита за повторно влегување. Покажете ги ризичните со линија. Обележете ако не сте сигурни; Генерирање на експлоат код.

3) Карта за контрола на пристап:

Наведете ги сите надворешни/јавни функции во овој договор и наведете „кој може да се јави“ (секој/сопственик/улога) за секоја од нив. Изведете критични операции (повлекување, печатење, надградба) и обележете ги оние со слаба контрола на пристап. Претставете го со табела.

4) Лажно позитивна елиминација:

Размислете зошто ова предупредување за скенирање можеби не е РЕАЛЕН ризик (лажно позитивно): кој контекст или услов за код би го поништиле ова предупредување? Но, не кажувајте „апсолутно нема проблем“; Наведете ги точките за кои е потребна потврда.

Три мини футроли (во бројки)

Случај 1 - Возило + ВИ ја удвои ефикасноста. Еден тим го водел Слитер на проект со 12 договори и добил 140 опомени. Откако вештачката интелигенција ги објасни и даде приоритет на предупредувањата, се покажа дека 95 од 140 предупредувања биле лажни позитиви; Тимот се фокусираше на 45 вистински кандидати. Времето на тријажа се намали од 2 дена на 5 часа. Лекција: ВИ е моќна во хуманизирањето на излезот од возилото.

Случај 2 - АИ го киднапирал МЕВ. Во договор за DEX (децентрализирана размена), AI ги најде стандардните обрасци чисти, но не успеа да открие ранливост во предниот дел; бидејќи ова беше специфично за редоследот на операциите на протоколот. Заробени човечки ревизор и симулација. Поука: ризиците специфични за протоколот како MEV/front-running се слабата област на ВИ.

Случај 3 - Избегнав губење време на лажно позитивно. Тимот беше поштеден од непотребно препишување кога вештачката интелигенција објасни дека предупредувањето за повторно влегување е всушност лажно позитивно (функцијата веќе беше заштитена). Но, тимот сепак го потврди тоа со еден тест. Лекција: ВИ дава приоритети; Потврдата повторно доаѓа со тестирање.

Граници на скенирање

Скенирањето наоѓа познати обрасци. Ниту алатката ниту вештачката интелигенција не се гарантирани да откријат нова, единствена или специфична ранливост за протокол. Затоа, скринингот е дел од ревизијата; не самиот. Идејата дека „скенирањето е чисто, значи дека е безбедно“ е една од најопасните заблуди на ова поле. Багер зема ниско виси овошје; За длабоки и уникатни ризици, човечката експертиза, тестирање, замаглување и формална ревизија се од суштинско значење.

Внимание: „чист“ извештај за алатка за скенирање или вештачка интелигенција не е безбедносен сертификат. Презентирањето на тој начин - особено на инвеститорите - е погрешно и неетичко.

Вообичаени грешки

  • Замена на скрининг за инспекција. Скенирањето е еден слој, а не целина.
  • Користење на вештачка интелигенција без алатки. Статичка анализа + ВИ + човечка работа заедно.
  • Елиминирање на лажни позитиви без потврда. Секој екран е тестиран/проверен од луѓе.
  • Заобиколувајќи ги ризиците специфични за протоколот (MEV) со потпирање на ВИ. Слаба област на ВИ.
  • Размислување „чисто скенирање“ = „безбедно“. Не може да го најде непознатото.
  • Генерирање на експлоат код. Само одбранбениот опис на ризикот е легитимен.

Сумирано

  • Скенирањето на ранливост бара познати обрасци на ранливост со возило + ВИ + човек.
  • Вештачката интелигенција е моќна во објаснувањето и приоретизирањето на излезот од алатката за статичка анализа.
  • Сигурен во јасни обрасци како што се повторно влегување и контрола на пристап; Слаб во МЕВ и бизнис логика.
  • Дури и елиминирањето на лажни позитиви бара потврда.
  • „Чистото скенирање“ не е безбедносен сертификат; Тоа не е замена за надзор.

Задача за апликација

Вклучете алатка за статичка анализа на примерок од договор (ако е можно) или пронајдете готов извештај Slither. Применете го барањето „Опис на излезот на алатката“ на вештачката интелигенција. Оценете дали вештачката интелигенција: (1) правилно ги објаснува предупредувањата, (2) има смисла да прави разлика помеѓу лажни позитиви и (3) пропушта ризик специфичен за протоколот. Пополнете ги колоните „пронајдено возило / објаснето вештачка интелигенција / потврдено од човекот“ во табела.

листа за проверка

  • [ ] Ја позиционирав отворот како слој на контролата.
  • [ ] Ја користев алатката за статичка анализа + AI + човек заедно.
  • [ ] Пребарав категорија по категорија за познати обрасци.
  • [ ] Ги елиминирав лажните позитиви со потврда.
  • [ ] Се потпирав на луѓе во слаби области како што е MEV/деловна логика.
  • [ ] Не понудив „чисто чистење“ како гаранција.
  • [ ] Работев само за одбранбени цели; Јас не создадов подвизи.