Pag-scan ng kahinaan at secure na pag-unlad. Bahagi 1

Pag-scan ng kahinaan at secure na pag-unlad. Bahagi 1

Bilang bahagi ng kanilang mga propesyonal na aktibidad, kailangang harapin ng mga developer, pentester, at mga propesyonal sa seguridad ang mga proseso tulad ng Vulnerability Management (VM), (Secure) SDLC.
Sa ilalim ng mga pariralang ito ay may iba't ibang hanay ng mga kasanayan at tool na ginamit na magkakaugnay, bagama't magkakaiba ang mga gumagamit nito.

Ang pag-unlad ng teknolohiya ay hindi pa umabot sa punto kung saan maaaring palitan ng isang tool ang isang tao para sa pagsusuri ng seguridad ng imprastraktura at software.
Ito ay kagiliw-giliw na maunawaan kung bakit ito ay gayon, at kung anong mga problema ang kailangang harapin.

Ang mga proseso

Ang proseso ng Vulnerability Management ay idinisenyo upang patuloy na subaybayan ang seguridad ng imprastraktura at pamamahala ng patch.
Ang proseso ng Secure SDLC ("secure development cycle") ay idinisenyo upang mapanatili ang seguridad ng application sa panahon ng pag-develop at pagpapatakbo.

Ang isang katulad na bahagi ng mga prosesong ito ay ang proseso ng Vulnerability Assessment - vulnerability assessment, vulnerability scanning.
Ang pangunahing pagkakaiba sa pagitan ng pag-scan sa loob ng VM at SDLC ay na sa unang kaso, ang layunin ay makahanap ng mga kilalang kahinaan sa software ng third-party o sa isang configuration. Halimbawa, isang lumang bersyon ng Windows o ang default na string ng komunidad para sa SNMP.
Sa pangalawang kaso, ang layunin ay tuklasin ang mga kahinaan hindi lamang sa mga bahagi ng third-party (mga dependency), ngunit pangunahin sa code ng bagong produkto.

Nagbibigay ito ng mga pagkakaiba sa mga tool at diskarte. Sa palagay ko, ang gawain ng paghahanap ng mga bagong kahinaan sa isang application ay mas kawili-wili, dahil hindi ito bumababa sa bersyon ng fingerprinting, koleksyon ng banner, password brute force, atbp.
Ang mataas na kalidad na awtomatikong pag-scan ng mga kahinaan ng application ay nangangailangan ng mga algorithm na isinasaalang-alang ang mga semantika ng application, layunin nito, at mga partikular na banta.

Ang scanner ng imprastraktura ay kadalasang maaaring mapalitan ng isang timer, bilang ang avleonov. Ang punto ay puro istatistika, maaari mong ituring na mahina ang iyong imprastraktura kung hindi mo ito na-update, halimbawa, isang buwan.

Tools

Ang pag-scan, pati na rin ang pagsusuri sa seguridad, ay maaaring isagawa bilang isang itim na kahon o isang puting kahon.

Black Box

Sa pag-scan ng blackbox, dapat na magawa ng tool ang serbisyo sa pamamagitan ng parehong mga interface kung saan gumagana ang mga user dito.

Ang mga infrastructure scanner (Tenable Nessus, Qualys, MaxPatrol, Rapid7 Nexpose, atbp.) ay naghahanap ng mga bukas na network port, nangongolekta ng "mga banner", tukuyin ang mga naka-install na bersyon ng software, at hanapin ang kanilang knowledge base para sa impormasyon tungkol sa mga kahinaan sa mga bersyong ito. Sinusubukan din nilang tumukoy ng mga error sa configuration gaya ng mga default na password o pampublikong pag-access sa data, mahihinang SSL cipher, atbp.

Ang mga web application scanner (Acunetix WVS, Netsparker, Burp Suite, OWASP ZAP, atbp.) ay maaari ding makakita ng mga kilalang bahagi at kanilang mga bersyon (hal. CMS, frameworks, JS library). Ang mga pangunahing hakbang sa pag-crawl ay pag-crawl at fuzzing.
Sa panahon ng pag-crawl, kinokolekta ng crawler ang impormasyon tungkol sa mga umiiral nang interface ng application at mga parameter ng HTTP. Sa panahon ng fuzzing, ang lahat ng natukoy na parameter ay pinapalitan ng mutated o nabuong data upang makapukaw ng error at makakita ng kahinaan.

Ang nasabing mga scanner ng application ay nabibilang sa mga klase ng DAST at IAST - ayon sa pagkakabanggit, Dynamic at Interactive Application Security Testing.

White box

Sa pag-scan ng whitebox, marami pang pagkakaiba.
Bilang bahagi ng proseso ng VM, ang mga scanner (Vulners, Incsecurity Couch, Vuls, Tenable Nessus, atbp.) ay kadalasang binibigyan ng access sa mga system sa pamamagitan ng pagsasagawa ng authenticated scan. Kaya, ang scanner ay maaaring mag-download ng mga naka-install na bersyon ng pakete at mga parameter ng pagsasaayos nang direkta mula sa system, nang hindi hinuhulaan ang mga ito mula sa mga banner ng serbisyo sa network.
Ang pag-scan ay mas tumpak at kumpleto.

Kung pinag-uusapan natin ang tungkol sa pag-scan ng whitebox (CheckMarx, HP Fortify, Coverity, RIPS, FindSecBugs, atbp.) ng mga application, karaniwang pinag-uusapan natin ang tungkol sa pagsusuri ng static na code at ang paggamit ng kaukulang mga tool sa klase ng SAST - Static Application Security Testing.

Mga Problema

Maraming problema sa pag-scan! Kailangan kong harapin ang karamihan sa kanila nang personal bilang bahagi ng pagbibigay ng serbisyo para sa pag-scan ng gusali at mga secure na proseso ng pag-unlad, pati na rin kapag nagsasagawa ng gawaing pagsusuri sa seguridad.

Iisa-isahin ko ang 3 pangunahing grupo ng mga problema, na kinumpirma rin ng mga pag-uusap sa mga inhinyero at pinuno ng mga serbisyo sa seguridad ng impormasyon sa iba't ibang kumpanya.

Mga Isyu sa Pag-scan ng Web Application

  1. Kahirapan sa pagpapatupad. Ang mga scanner ay kailangang i-deploy, i-configure, i-customize para sa bawat aplikasyon, maglaan ng isang kapaligiran sa pagsubok para sa mga pag-scan at ipatupad sa proseso ng CI / CD upang maging epektibo. Kung hindi, ito ay magiging isang walang kwentang pormal na pamamaraan, na naglalabas lamang ng mga maling positibo
  2. Tagal ng pag-scan. Ang mga scanner, kahit na noong 2019, ay gumagawa ng hindi magandang trabaho sa pag-de-deduplicate ng mga interface at maaaring mag-scan ng isang libong pahina na may 10 mga parameter bawat isa sa loob ng mga araw, na isinasaalang-alang ang mga ito na naiiba, bagama't ang parehong code ay responsable para sa kanila. Kasabay nito, ang desisyon na i-deploy sa produksyon sa loob ng development cycle ay dapat gawin nang mabilis.
  3. Mahina ang mga rekomendasyon. Ang mga scanner ay nagbibigay ng medyo pangkalahatang rekomendasyon, at hindi laging posible para sa isang developer na mabilis na maunawaan mula sa kanila kung paano bawasan ang antas ng panganib, at higit sa lahat, kung kailangan ba itong gawin ngayon, o hindi pa ito nakakatakot.
  4. Mapanirang epekto sa application. Ang mga scanner ay madaling magsagawa ng pag-atake ng DoS sa isang application, at maaari rin silang lumikha ng malaking bilang ng mga entity o baguhin ang mga umiiral na (halimbawa, lumikha ng sampu-sampung libong komento sa isang blog), kaya hindi ka dapat magpatakbo ng pag-scan sa isang produkto nang walang kabuluhan.
  5. Hindi magandang kalidad ng pagtuklas ng kahinaan. Karaniwang gumagamit ang mga scanner ng nakapirming hanay ng mga payload at madaling makaligtaan ang isang kahinaan na hindi akma sa kanilang kilalang gawi sa aplikasyon.
  6. Hindi naiintindihan ng scanner ang mga function ng application. Ang mga scanner mismo ay hindi alam kung ano ang isang "Internet bank", "payment", "comment". Para sa kanila, mayroon lamang mga link at parameter, kaya ang isang malaking layer ng mga posibleng kahinaan sa lohika ng negosyo ay nananatiling ganap na natuklasan, hindi sila manghuhula na gagawa ng dobleng write-off, sumilip sa data ng ibang tao sa pamamagitan ng ID o wawakasan ang balanse sa pamamagitan ng pag-ikot
  7. Hindi pagkakaunawaan ng mga semantika ng pahina ng scanner. Hindi mababasa ng mga scanner ang FAQ, hindi makikilala ang mga captcha, hindi nila mahulaan sa kanilang sarili kung paano magparehistro at pagkatapos ay muling mag-log in, na hindi mo maaaring i-click ang "logout", at kung paano pumirma ng mga kahilingan kapag binabago ang mga halaga ng parameter. Bilang resulta, maaaring manatiling hindi na-scan ang karamihan sa application.

Mga Isyu sa Pag-scan ng Source Code

  1. Maling positibo. Ang static na pagsusuri ay isang kumplikadong gawain na nagsasangkot ng maraming kompromiso. Kadalasan kailangan mong isakripisyo ang katumpakan, at kahit na ang mga mamahaling scanner ng negosyo ay nagbibigay ng isang malaking bilang ng mga maling positibo.
  2. Kahirapan sa pagpapatupad. Upang mapataas ang katumpakan at pagkakumpleto ng static na pagsusuri, kinakailangan na pinuhin ang mga panuntunan sa pag-scan, at ang pagsusulat ng mga panuntunang ito ay maaaring masyadong matagal. Minsan mas madaling hanapin ang lahat ng lugar sa code na may ilang uri ng bug at ayusin ang mga ito kaysa magsulat ng panuntunan para matukoy ang mga ganitong kaso.
  3. Kakulangan ng suporta sa dependency. Ang mga malalaking proyekto ay nakasalalay sa isang malaking bilang ng mga aklatan at mga balangkas na nagpapalawak ng mga kakayahan ng programming language. Kung walang impormasyon tungkol sa mga mapanganib na lugar ("lubog") sa mga balangkas na ito sa base ng kaalaman ng scanner, ito ay magiging isang blind spot, at ang scanner ay hindi man lang mauunawaan ang code.
  4. Tagal ng pag-scan. Ang paghahanap ng mga kahinaan sa code ay isang mahirap na gawain sa mga tuntunin din ng mga algorithm. Samakatuwid, ang proseso ay maaaring maantala at nangangailangan ng makabuluhang mapagkukunan ng pag-compute.
  5. Mababang coverage. Sa kabila ng pagkonsumo ng mapagkukunan at tagal ng pag-scan, kailangan pa rin ng mga developer ng SAST na tool na gumawa ng mga kompromiso at pag-aralan ang hindi lahat ng mga estado kung saan maaaring mapunta ang isang programa.
  6. Paghahanap ng reproducibility. Ang pagturo sa partikular na linya at call stack na humahantong sa isang kahinaan ay mahusay, ngunit sa katunayan, kadalasan ang scanner ay hindi nagbibigay ng sapat na impormasyon upang suriin ang isang panlabas na kahinaan. Pagkatapos ng lahat, ang kapintasan ay maaari ding nasa dead code, na hindi maabot ng umaatake.

Mga Isyu sa Pag-scan sa Imprastraktura

  1. Hindi sapat na imbentaryo. Sa malalaking imprastraktura, lalo na sa mga hiwalay na heograpiya, kadalasan ang pinakamahirap na bagay na malaman kung aling mga host ang i-scan. Sa madaling salita, ang gawain ng pag-scan ay malapit na nauugnay sa gawain ng pamamahala ng asset
  2. Masamang prioritization. Ang mga scanner ng network ay madalas na gumagawa ng maraming mga resulta na may mga bahid na hindi mapagsamantalahan sa pagsasanay, ngunit pormal na ang kanilang antas ng panganib ay mataas. Ang mamimili ay tumatanggap ng isang ulat na mahirap bigyang-kahulugan, at hindi malinaw kung ano ang kailangang itama muna
  3. Mahina ang mga rekomendasyon. Ang base ng kaalaman sa scanner ay kadalasang naglalaman lamang ng napaka-pangkalahatang impormasyon tungkol sa kahinaan at kung paano ito ayusin, kaya ang mga admin ay kailangang hawakan ang kanilang sarili sa Google. Ang sitwasyon ay bahagyang mas mahusay sa mga whitebox scanner, na maaaring mag-isyu ng isang partikular na command upang ayusin
  4. Gawa ng kamay. Ang mga imprastraktura ay maaaring magkaroon ng maraming node, na nangangahulugan na may potensyal na maraming mga depekto, mga ulat kung saan kailangang i-parse at suriin nang manu-mano sa bawat pag-ulit
  5. Masamang coverage. Ang kalidad ng pag-scan sa imprastraktura ay direktang nakasalalay sa laki ng base ng kaalaman tungkol sa mga kahinaan at mga bersyon ng software. kung saan, lumiliko ito, kahit na ang mga pinuno ng merkado ay walang komprehensibong base ng kaalaman, at mayroong maraming impormasyon sa mga database ng mga libreng solusyon na wala ang mga pinuno
  6. Mga problema sa pag-patch. Kadalasan, ang pag-patch ng mga kahinaan sa imprastraktura ay ang pag-update ng package o pagpapalit ng configuration file. Ang malaking problema dito ay ang system, lalo na ang legacy, ay maaaring kumilos nang hindi mahuhulaan bilang resulta ng isang pag-update. Sa katunayan, kakailanganin mong magsagawa ng mga pagsubok sa pagsasama sa isang live na imprastraktura sa produksyon.

Mga approach

Paano na?
Tatalakayin ko ang higit pang detalye tungkol sa mga halimbawa at kung paano haharapin ang marami sa mga problemang ito sa mga sumusunod na bahagi, ngunit sa ngayon ay ipahiwatig ko ang mga pangunahing lugar kung saan maaari kang magtrabaho:

  1. Pagsasama-sama ng iba't ibang mga tool sa pag-scan. Sa wastong paggamit ng maramihang mga scanner, ang isang makabuluhang pagtaas sa base ng kaalaman at ang kalidad ng pagtuklas ay maaaring makamit. Makakahanap ka ng higit pang mga kahinaan kaysa sa kabuuan ng lahat ng mga scanner na tumatakbo nang paisa-isa, habang maaari mong mas tumpak na masuri ang antas ng panganib at gumawa ng higit pang mga rekomendasyon
  2. Pagsasama ng SAST at DAST. Posibleng pataasin ang saklaw ng DAST at katumpakan ng SAST sa pamamagitan ng pagbabahagi ng impormasyon sa pagitan nila. Mula sa pinagmulan maaari kang makakuha ng impormasyon tungkol sa mga kasalukuyang ruta, at sa tulong ng DAST maaari mong suriin kung ang kahinaan ay nakikita mula sa labas
  3. Machine Learningβ„’. Noong 2015 I sinabi (at higit pa) tungkol sa paggamit ng mga istatistika upang bigyan ang mga scanner ng intuwisyon ng hacker at pabilisin ang mga ito. Ito ay tiyak na pagkain para sa pagbuo ng awtomatikong pagsusuri sa seguridad sa hinaharap.
  4. Pagsasama ng IAST sa mga autotest at OpenAPI. Sa loob ng CI/CD-pipeline, posibleng gumawa ng proseso ng pag-scan batay sa mga tool na gumagana bilang HTTP proxy at functional na mga pagsubok na gumagana sa HTTP. Ang mga pagsubok at kontrata ng OpenAPI/Swagger ay magbibigay sa scanner ng nawawalang impormasyon tungkol sa mga daloy ng data, gagawing posible na i-scan ang application sa iba't ibang mga estado
  5. Tamang configuration. Para sa bawat aplikasyon at imprastraktura, kailangan mong lumikha ng angkop na profile sa pag-scan, na isinasaalang-alang ang bilang at likas na katangian ng mga interface, ang mga teknolohiyang ginamit
  6. Pag-customize ng scanner. Kadalasan, hindi ma-scan ang isang application nang hindi binabago ang scanner. Ang isang halimbawa ay isang gateway ng pagbabayad kung saan dapat pirmahan ang bawat kahilingan. Nang walang pagsusulat ng isang connector sa gateway protocol, ang mga scanner ay walang pag-iintindi sa mga kahilingan na may maling lagda. Kinakailangan din na magsulat ng mga dalubhasang scanner para sa isang partikular na uri ng mga bahid, tulad ng Hindi secure ang Sanggunian ng Direktang Bagay
  7. Pamamahala ng panganib. Ang paggamit ng iba't ibang mga scanner at pagsasama sa mga panlabas na sistema tulad ng Asset Management at Threat Management ay magbibigay-daan sa maraming parameter na magamit upang masuri ang antas ng panganib, upang ang pamamahala ay makakuha ng sapat na larawan ng kasalukuyang estado ng seguridad ng pag-unlad o imprastraktura.

Manatiling nakatutok at guluhin natin ang pag-scan ng kahinaan!

Pinagmulan: www.habr.com

Magdagdag ng komento