Јединице
1. Увод у вештачку интелигенцију у блокчејну и Веб3: улоге, границе, аутентикација и безбедносна критичност 2. Подршка за писање паметних уговора: Солидити/Випер нацрт и безбедно генерисање кода 3. Подршка за ревизију паметних уговора: Преглед безбедности и нацрт налаза 4. Скенирање рањивости: Уобичајени обрасци рањивости и аутоматска анализа 5. Анализа података на ланцу: разумевање података о блоковима, трансакцијама и новчанику 6. ДеФи и анализа протокола: ликвидност, МЕВ и економски напади 7. Токеномско моделирање: снабдевање, дистрибуција, подстицај и симулација 8. Документација и техничко писање: Вхитепапер, НатСпец и Корисничко упутство 9. Превара, повлачење тепиха и откривање ризика: црвене заставице на ланцу 10. Ревизија критична за безбедност, стручно одобрење и одговорна употреба 11. Скроз радни ток, управљање, верификација и етика
Јединица 4 / 11

Скенирање рањивости: Уобичајени обрасци рањивости и аутоматска анализа

Добици:

  • Способност препознавања уобичајених образаца рањивости као што су поновни улазак, контрола приступа, манипулација оракулом и напредовање и скенирање помоћу алата за статичку анализу + вештачка интелигенција + човек
  • Способност да се направи разлика између предности АИ у објашњавању излазних резултата алата и давања приоритета лажним позитивним резултатима и слабостима у МЕВ-у и пословној логици
  • Схватите да 'чисто скенирање' није безбедносни сертификат, да је скенирање само један ниво контроле

У претходној јединици видели смо холистичку дисциплину ревизије. У овој јединици фокусирамо се на више техничке теме: скенирање рањивости — систематско тражење познатих образаца рањивости у коду. Овде ћемо користити АИ, заједно са алатима за статичку анализу, као помоћника који скенира и описује познате обрасце рањивости. Циљ: дубински упознати најчешће рањивости и разликовати где је АИ поуздан, а где неадекватан у њиховом скенирању.

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

Скенирање је два типа. Статичка анализа — испитивање кода без покретања: Алати као што су Слитхер и Митхрил скенирају код уговора и означавају познате обрасце. Динамичка/симболичка анализа (покретање кода са различитим улазима или његово математичко истраживање): фуззинг (бомбардовање насумичним уносом) и симболичко извршење (истраживање свих могућих путева) спадају у ову групу.

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

Савет: Дајте АИ излаз алата за статичку анализу (нпр. Слитхер извештај) и замолите „објасните свако упозорење једноставним језиком, који су стварни ризици, а који би могли бити лажно позитивни?“ питати. АИ је од непроцењиве вредности у стварању необрађеног резултата алата разумљивим и приоритетним за људе.

Најчешћи обрасци рањивости

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

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

3. Орацле манипулација. Слепо ослањање уговора на екстерни извор цене (пророчанство). Нападач тренутно манипулише ценом и обмањује протокол. Решење: просечна цена пондерисана временом (ТВАП), више извора.

4. Интегер оверфлов/ундерфалл. Када број пређе максималну дозвољену вредност и врати се на почетак. Модерна Солидити већину тога хвата аутоматски, али ризик остаје у коду ниског нивоа (састављања).

5. Фронт-руннинг. Трансакције се појављују у јавном скупу (мемпоол) пре него што буду потврђене; Нападач може видети вашу трансакцију и уметнути своју трансакцију испред ње. МЕВ (Макимал Ектрацтабле Валуе — вредност екстрахована из секвенце трансакције) је општи назив овог субјекта.

6. Ускраћивање услуге (ДоС). Петља постаје прескупа и чини функцију неупотребљивом, или зависност од адресе постаје закључана.

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

рањивост

Поверење АИ скенирања

Зашто

поновни улазак

висока

Добро познат, јасан образац

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

висока

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

Целобројне операције

висока

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

Орацле манипулација

средње

Захтева контекст

Фронт-руннинг/МЕВ

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

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

грешка пословне логике

ниско

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

Слаби промпт / Јаки промпт

Слабо обавештење:

Постоји ли рупа у овом коду?

Снажан упит:

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

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

1) Опис излаза алата:

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

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

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

3) Мапа контроле приступа:

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

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

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

Три мини кофера (у бројевима)

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

Случај 2 — АИ је отео МЕВ. У ДЕКС (децентрализованој размени) уговору, вештачка интелигенција је пронашла стандардне обрасце чисте, али није успела да открије рањивост на почетку; јер је ово било специфично за редослед операција протокола. Људски ревизор и симулација ухваћени. Поука: Ризици специфични за протокол као што је МЕВ/фронт-руннинг су слаба област АИ.

Случај 3 — Избегнуто је губљење времена на лажно позитиван резултат. Тим је био поштеђен непотребног поновног писања када је АИ објаснио да је упозорење о поновном уласку заправо лажно позитивно (функција је већ била заштићена). Али тим је то ипак потврдио једним тестом. Лекција: АИ даје приоритете; Потврда поново долази са тестирањем.

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

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

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

Уобичајене грешке

  • Замена скрининга за инспекцију. Скенирање је један слој, а не цео.
  • Коришћење вештачке интелигенције без алата. Статичка анализа + АИ + људски рад заједно.
  • Уклањање лажних позитивних резултата без потврде. Сваки екран је тестиран/верификован на људима.
  • Заобилажење ризика специфичних за протокол (МЕВ) ослањањем на АИ. Слаба област АИ.
  • Размишљајући "чисто скенирање" = "безбедно". Не може да пронађе непознато.
  • Генерисање кода за експлоатацију. Само опис одбрамбеног ризика је легитиман.

Укратко

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

Задатак апликације

Покрените алат за статичку анализу на узорку уговора (ако је могуће) или пронађите готов Слитхер извештај. Примените промпт „опис излаза алата“ на АИ. Процените да ли АИ: (1) исправно објашњава упозорења, (2) има смисла у разликовању лажних позитивних резултата и (3) пропушта ризик специфичан за протокол. Попуните колоне „пронађено возило / АИ објашњено / човек потврђено“ у табели.

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

  • [ ] Поставио сам отвор као слој контроле.
  • [ ] Користио сам алат за статичку анализу + АИ + човек заједно.
  • [ ] Тражио сам категорију по категорију за познате обрасце.
  • [ ] Потврдом сам елиминисао лажне позитивне резултате.
  • [ ] Ослањао сам се на људе у слабим областима као што је МЕВ/пословна логика.
  • [ ] Нисам понудио „чисто чишћење“ као гаранцију.
  • [ ] Радио сам само у одбрамбене сврхе; Нисам стварао подвиге.