Бяспека API

Бяспека API была праблемай падчас выканання. Але гэта не абавязкова павінна быць так.

Кожны pull request Даданне або змяненне канцавой кропкі змяняе паверхню для атакі API. Большасць інструментаў бяспекі API не заўважаюць гэтага, пакуль гэтая канцавая кропка не запрацуе і не пачне прымаць трафік. Да таго часу выпраўленне ўжо не з'яўляецца аднарадковым змяненнем у праверцы кода, а абмеркаваннем рэагавання на інцыдэнт.

Бяспека API — гэта практыка выяўлення і ліквідацыі рызык, звязаных з тым, як праграма раскрывае свае канчатковыя кропкі: хто можа іх выклікаць, якія дадзеныя яны вяртаюць і ці робяць яны тое, што напісана ў дакументацыі.

Большая частка інструментаў, створаных для вырашэння гэтай праблемы, тэстуе API падчас выканання, звонку, гэтак жа, як гэта зрабіў бы зламыснік. Гэты падыход працуе, але ён працуе толькі пасля разгортвання API. Ксігені ідзе па папярэднім шляху: ён зчытвае ваш зыходны код і спецыфікацыю API, перш чым адзін запыт дасягне канчатковай кропкі.

Чатыры спосабы тэставання API і адказы кожнага з іх

Большасць праграм для дарослых выкарыстоўваюць некалькі з іх:

  • Статычнае тэсціраванне аналізуе зыходны код і спецыфікацыі API перад разгортваннем. Ён адказвае на пытанне «што мы толькі што раскрылі?». Менавіта на гэтым падыходзе засяроджваецца гэты артыкул.
  • Дынамічнае тэставанне (DAST) адпраўляе рэальны трафік на працуючы API і назірае за яго рэакцыяй. Ён адказвае на пытанне «што насамрэч даступна і прыдатна для выкарыстання прама зараз?» 
  • Невыразны выдае няправільныя або нечаканыя ўваходныя дадзеныя ў канчатковых кропках, што прыводзіць да паверхневых збояў і памежных выпадкаў. Ён адказвае на пытанне «якія збоі пры ўваходных дадзеных мы не прадбачылі?»
  • Ручное тэставанне на пранікненне дадае чалавечае меркаванне, каб знайсці лагічныя недахопы, якія прапускаюць аўтаматызаваныя інструменты. Гэта адказвае на пытанне "што б разумны зламыснік аб'яднаў у ланцужок?"

Ніводная з іх не замяняе іншыя. Яны адказваюць на розныя пытанні на розных этапах жыццёвага цыклу, і прабел, які ёсць у большасці праграм, — гэта першы.

Чаму большасць інструментаў бяспекі API заўважаюць рызыку занадта позна

Тэставанне бяспекі API асяроддзя выканання адпраўляе трафік у актыўнае прыкладанне і адсочвае яго рэакцыю. Гэта законны і неабходны ўзровень. Па сваёй канструкцыі ён таксама з'яўляецца індыкатарам адставання: канчатковая кропка павінна існаваць, быць разгорнутай і даступнай, перш чым сканер асяроддзя выканання зможа што-небудзь пра яе сказаць. Усё, што ён знойдзе, ужо было выкрыта на працягу таго часу, колькі спатрэбілася для выканання сканавання.

Існуе і другая прабела, якая ляжыць пад гэтай праблемай часу. Інструменты асяроддзя выканання могуць правяраць толькі тое, што ім вядома. Калі канчатковая кропка ніколі не была дакументавана або спецыфікацыя OpenAPI састарэла ў момант, калі хтосьці адправіў новы маршрут, сканер асяроддзя выканання не мае магчымасці даведацца пра яе існаванне. Ён правярае карту, а не тэрыторыю.

Статычнае тэставанне бяспекі API ліквідуе абодва прабелы, пераносячы праверку туды, дзе вызначана канчатковая кропка: ваш код і спецыфікацыя API, перад разгортваннем. Тое ж самае pull request што ўводзіць канчатковую кропку, гэта pull request што выяўляе яго рызыку.

Што насамрэч азначае статычная бяспека API

Xygeni стварае ваш інвентар API з дзвюх крыніц: зыходнага кода вашага прыкладання і вашых спецыфікацый API, у тым ліку OpenAPI і Swagger.

Інвентарызацыя толькі спецыфікацый паказвае канчатковыя кропкі, якія хтосьці не забыўся задакументаваць. Інвентарызацыя толькі кода паказвае, што існуе, але не абавязкова тое, як гэта павінна было выкарыстоўвацца. Азнаёмленне з абодвума дае вам поўную карціну: канчатковыя кропкі, якія задакументавалі вашы каманды, і тыя, якія ніхто не задакументаваў.

Гэты інвентар — падмурак, на якім будуецца ўсё астатняе:

  • Агульная колькасць выяўленых API і актываў, якія знаходзяцца пад пагрозай, ацэненых у параўнанні з базавым узроўнем
  • Канцавыя кропкі, падзеленыя па метадзе HTTP
  • Праблемы, згрупаваныя па паслугах
  • Кожная канчатковая кропка са сваім метадам, шляхам, службай, модулем, станам аўтэнтыфікацыі і ацэнкай рызыкі

Вашы інжынеры бачаць структуру вашага API, не адкрываючы ніводнага запыту.

Кожная канчатковая кропка, знойдзеная Xygeni, разам з яе метадам, станам аўтэнтыфікацыі і ацэнкай рызыкі, была пабудавана з кода і спецыфікацыі разам.

Production note Абрэжце панэль AI Triage з любога скрыншота бяспекі API.

Уключана ў топ-10 бяспекі OWASP API

Вынікі аналізу сведчаць пра структуру, якую ўжо выкарыстоўваюць вашы каманды бяспекі і аўдытары. Xygeni выяўляе рызыкі па ўсёй бяспецы OWASP API. Топ-10 (2023):

OWASP Рызыка Што гэта азначае на практыцы
API1 Зламаная аўтарызацыя на ўзроўні аб'екта Канчатковая кропка вяртае або змяняе дадзеныя, якія належаць іншаму карыстальніку або кліенту
API2 Неаўтэнтыфікаваныя канчатковыя кропкі Маршрут даступны без якой-небудзь аўтэнтыфікацыі
API3 Празмернае ўздзеянне дадзеных Адказ вяртае больш палёў, чым патрабуецца або чым павінен бачыць выклікаючы абанент
API3 Масавае заданне Канчатковая кропка прымае і прымяняе палі, якія яна ніколі не павінна была прымаць
API3 / API10 Канфідэнцыйныя дадзеныя ў адказах PII, PCI або PHI дасягаюць кліента з канцавой кропкі, якая не павінна іх адпраўляць
API4 Адсутнічаюць абмежаванні хуткасці Канчатковая кропка не мае абароны ад злоўжыванняў або выклікаў грубай сілы
API5 Аўтарызацыя на ўзроўні парушанай функцыі Канчатковая кропка выконвае прывілеяванае дзеянне, не правяраючы, ці дазволена выклікаючаму боку
API7 ССРФ API можна падмануць, каб ён рабіў запыты ад імя зламысніка.
API8 Няправільная канфігурацыя JWT Праверка, падпісанне або тэрмін дзеяння токена настроены няправільна
API8 Няправільная канфігурацыя CORS Правілы перакрыжаванага паходжання дастаткова дапушчальныя, каб імі можна было скарыстацца
API9 Зомбі і асірацелыя канчатковыя кропкі Састарэлыя або забытыя маршруты, да якіх усё яшчэ можна дабрацца, і маршруты, якія нікому не належаць

Адна катэгорыя наўмысна адсутнічае. API6, неабмежаваны доступ да канфідэнцыйных бізнес-патокаў, патрабуе разумення таго, што павінен дазваляць бізнес-працэс, і ніводзін статычны аналізатар не выяўляе гэтага дакладна. Любы пастаўшчык, які сцвярджае адваротнае, прадае вам сцяжок. Гэты сцяжок застаецца ў вашага мадэлявання пагроз і вашых тэсціроўшчыкаў на пранікненне.

Не ўсе вынікі аднолькавыя: адчувальнасць дадзеных і таксічныя камбінацыі

Плоскі спіс вынікаў апрацоўвае неаўтэнтыфікаваную канчатковую кропку праверкі стану гэтак жа, як неаўтэнтыфікаваную канчатковую кропку, якая вяртае запісы кліентаў. Гэта розныя праблемы, і мадэль прыярытэтызацыі, якая ацэньвае іх аднолькава, навучае вашы каманды ігнараваць спіс.

Xygeni класіфікуе даныя, якія апрацоўвае кожная канцавая кропка, пазначаючы PII, PCI і PHI ў параметрах запыту і ў адказах, і суадносіць гэта са станам аўтэнтыфікацыі канцавой кропкі.

Ён таксама суадносіць вынікі, якія трапляюць у адну і тую ж канчатковую кропку, і павышае сур'ёзнасць, калі яны назапашваюцца. Уцечка персанальнай інфармацыі ў адказе сама па сабе з'яўляецца сур'ёзнай знаходкай. Такая ж уцечка ў канчатковай кропцы, якая не патрабуе аўтэнтыфікацыі, мае вырашальнае значэнне, і платформа ацэньвае яе такім чынам, замест таго, каб пакідаць злучэнне на волю кагосьці, хто заўважае яго ўручную.

Зомбі і сірочыя канцавыя кропкі: дрэйф паміж кодам і спецыфікацыяй

Паколькі Xygeni чытае ваш код і спецыфікацыю API побач, ён бачыць іх разыходжанні. Гэта адхіленне выяўляецца ў трох пазнавальных заканамернасцях:

  • Недакументаваныя канчатковыя кропкі. Яны жывуць у кодзе і ніколі не былі дададзены ў спецыфікацыю.
  • Канчатковыя кропкі зомбі. Яны пазначаны як састарэлыя або выведзеныя з эксплуатацыі, і да іх усё яшчэ можна дабрацца.
  • Асірацелыя канчатковыя кропкі. Ніхто ў цяперашняй камандзе імі не валодае.

Нічога з гэтага няма ў інвентары, прысвечаным толькі спецыфікацыям, бо ім не хапае менавіта спецыфікацыі.

Доказы, на падставе якіх можна дзейнічаць, а не білет на расследаванне

Кожная знаходка паказвае на дакладны апрацоўшчык, адказны за памылку: файл, клас, метад і канкрэтны радок, які прывёў да ўразлівасці, а таксама код, які адлюстроўваецца побач з ім. Кожная знаходка таксама мае сваю ступень сур'ёзнасці, катэгорыю OWASP API Security Top 10, сваю CWE, стан аўтэнтыфікацыі канцавой кропкі і класіфікацыю адчувальнасці дадзеных.

Выснова, якая проста называе канчатковую кропку, прымушае распрацоўшчыка прабірацца па кодавай базе, перш чым ён паспее пачаць што-небудзь выпраўляць. Выснова, якая называе лінію, дазваляе яму адразу ж пачаць выпраўленне.

Вынікі экспартуюцца ў фармаце JSON, CSV, Markdown і SARIF 2.1.0, таму яны трапляюць у tу якіх вашы каманды ўжо працуюць. 

Апрацоўшчык, радок і код, які ўвёў раскрыццё. Не білет для расследавання.

Чаму гэта існуе на адной платформе, а не на іншай кансолі

Xygeni працуе разам з API Security SAST, SCA, Сакрэты бяспекі, IaC і Дасць унутры адной платформы, звязанай праз ASPMзамест таго, каб пастаўляць яго як асобны інструмент з уласным login і ўласны партфель невыкананых задач.

Гэта важна, таму што статычныя вынікі і вынікі выканання адказваюць на розныя пытанні аб адной і той жа канчатковай кропцы, і яны больш карысныя разам, чым паасобку. Статычныя вынікі паведамляюць вам пра рызыкоўнасць канчатковай кропкі да яе адпраўкі. DAST пацвярджае, што насамрэч дасягальна і прыдатна для выкарыстання, пасля запуску.

Падзяліўшы гэта на дзве кансолі, вы атрымаеце два не звязаныя паміж сабой чэргамі. Ніхто іх не ўзгадняе, і канцавая кропка, якая не мае дакументаў і не прайшла аўтэнтыфікацыю, не знаходзіцца ні ў адной з чаргаў.

Глядзіце рэальную паверхню атакі API. Бяспека API даступная ў якасці Enterprise дадатак да платформы Xygeni, і сканаванне запускаецца ў вашых уласных рэпазітарах унутры вашай уласнай інфраструктуры.

Часта задаваныя пытанні

Ці можа яно вызначыць, якія канчатковыя кропкі апрацоўваюць канфідэнцыйныя дадзеныя?

Так. Xygeni пазначае PII, PCI і PHI ў параметрах канчатковых кропак і адказах і выкарыстоўвае гэтую класіфікацыю для ранжыравання вынікаў па рэальным уздзеянні.

Ці можа яно працаваць на кожным pull request?

Так. Інкрэментальнае сканаванне аналізуе толькі тыя канчатковыя кропкі, якія змяніліся, і маніфест, які яно стварае, можа сканцэнтраваць наступнае DAST-сканаванне на тых жа канчатковых кропках, таму статычнае тэставанне і тэставанне падчас выканання застаюцца ў адпаведнасці з тым, што фактычна змянілася.

Ці пакідае мой код маё асяроддзе?

Не. Сканіраванне выконваецца ў вашай уласнай інфраструктуры. Загружаюцца толькі вынікі, якія абараняюцца падчас перадачы і ў стане спакою.

Як атрымаць бяспеку API?

Бяспека API даступная ў якасці Enterprise дадатак. Запытайце пацвярджэнне адпаведнасці (PoC), і з вамі ўзгодняць яго аб'ём.

інструменты-для-аналізу-складання-праграмнага ...
Прыярытэзуйце, ліквідуйце і абараняйце свае праграмныя рызыкі
Атрымайце свой бясплатны рахунак.
Не патрабуецца крэдытная карта.

Забяспечце распрацоўку і пастаўку праграмнага забеспячэння

з пакетам прадуктаў Xygeni