SÄrbarhetsskanning och sÀker utveckling. Del 1

SÄrbarhetsskanning och sÀker utveckling. Del 1

In professional activities, developers, pentesters, and security experts often encounter processes such as Vulnerability Management (VM) and (Secure) SDLC.
These phrases encompass various sets of practices and tools used, which are interconnected, although their users differ.

Technological progress has not yet reached the point where a single tool can replace a person in conducting an analysis of the security of infrastructure and software.
It is interesting to understand why this is the case and what problems are encountered.

Processer

The Vulnerability Management process is designed for continuous monitoring of the security of infrastructure and patch management.
The Secure SDLC process is intended to support the security of the application during development and operation.

A similar part of these processes is the Vulnerability Assessment process, which involves vulnerability scanning.
The main difference in scanning within VM and SDLC is that the former aims to detect known vulnerabilities in third-party software or configuration. For example, an outdated version of Windows or the default community string for SNMP.
In the latter case, the goal is to identify vulnerabilities not only in third-party components (dependencies) but primarily in the code of the new product.

This creates differences in tools and approaches. In my opinion, the task of finding new vulnerabilities in applications is significantly more interesting, as it does not reduce to fingerprinting versions, gathering banners, password cracking, etc.
For high-quality automated application vulnerability scanning, algorithms are needed that take into account the semantics of the application, its purpose, and specific threats.

Infrastructure scanners can often be replaced by a timer, as expressed by avleonov.The point is that, purely statistically, you can consider your infrastructure vulnerable if you haven't updated it, say, in a month.

Verktyg

Scanning, like security analysis, can be performed as a black box or a white box.

Black Box

In black box scanning, the tool must be able to interact with the service through the same interfaces that users work with.

Infrastrukturverktyg (Tenable Nessus, Qualys, MaxPatrol, Rapid7 Nexpose, osv.) söker efter öppna nÀtverksportar, samlar "bannerar", identifierar versioner av installerad programvara och söker i sin kunskapsdatabas efter sÄrbarheter i dessa versioner. De försöker Àven upptÀcka konfigurationsfel, sÄsom standardlösenord eller öppet datÄtkomst, svaga SSL-krypteringar, osv.

Webbapplikationsverktyg (Acunetix WVS, Netsparker, Burp Suite, OWASP ZAP, osv.) kan ocksÄ identifiera kÀnda komponenter och deras versioner (t.ex. CMS, ramverk, JS-bibliotek). Huvudstegen för skannern Àr crawling och fuzzing.
Under crawlingen samlar skannern information om befintliga grÀnssnitt för applikationen och HTTP-parametrar. Under fuzzing injiceras muterade eller genererade data i alla upptÀckta parametrar för att provocera fram ett fel och upptÀcka en sÄrbarhet.

SĂ„dana applikationsskannrar tillhör klasserna DAST och IAST – respektive Dynamisk och Interaktiv ApplikationssĂ€kerhetstestning.

Vit lÄda

Vid vitlÄdeskanning finns det fler skillnader.
I processen för VM fÄr skannrar (Vulners, Incsecurity Couch, Vuls, Tenable Nessus, osv.) ofta tillgÄng till system, vilket möjliggör autentiserad scanning. PÄ sÄ sÀtt kan skannern ladda ner installerade paketversioner och konfigurationsparametrar direkt frÄn systemet utan att gissa dem frÄn banners av nÀtverkstjÀnster.
Skanningen blir mer exakt och fullstÀndig.

NĂ€r det kommer till vitlĂ„deskanning (CheckMarx, HP Fortify, Coverity, RIPS, FindSecBugs, osv.) av applikationer handlar det vanligtvis om statisk kodanalys och anvĂ€ndning av lĂ€mpliga verktyg frĂ„n SAST – Statisk ApplikationssĂ€kerhetstestning.

Problem

Det uppstÄr mÄnga problem med scanning! Jag stÀlls ofta personligen inför dem i samband med att erbjuda tjÀnster för att bygga scanningprocesser och sÀker utveckling, samt vid genomförande av sÄrbarhetsanalys.

Jag vill lyfta fram tre huvudgrupper av problem som bekrÀftas av samtal med ingenjörer och chefer för informationssÀkerhetstjÀnster i mÄnga olika företag.

Problem med scanning av webbapplikationer

  1. SvÄrigheter med implementering. Skanners mÄste implementeras, konfigureras och anpassas för varje applikation, skapa en testmiljö för skanningar och integreras i CI/CD-processen för att vara effektiva. Annars blir det en meningslös formell procedur som bara ger falska positiva.
  2. Varaktighet av skanningen. Skanners har fortfarande problem med deduplicering av grÀnssnitt Àven 2019 och kan skanna tusen sidor med 10 parametrar var, i flera dagar och ÀndÄ anse dem som olika, trots att samma kod ansvarar för dem. Samtidigt mÄste beslut om distribution i produktion inom utvecklingscykeln fattas snabbt.
  3. Sparsmakade rekommendationer. Skanners ger ganska allmÀnna rekommendationer, och utvecklare kan inte alltid snabbt förstÄ hur de ska sÀnka risknivÄn, och framför allt, om de behöver göra det just nu eller om det kan vÀnta.
  4. Destruktiv pÄverkan pÄ applikationen. Skanners kan mycket vÀl utföra en DoS-attack pÄ applikationen och kan Àven skapa ett stort antal enheter eller Àndra befintliga (till exempel skapa tiotusentals kommentarer i en blogg), sÄ det Àr bÀttre att inte köra skanning i produktion utan eftertanke.
  5. LÄg kvalitet pÄ sÄrbarhetsdetektering. Skanners anvÀnder vanligtvis en fast mÀngd payloads och kan lÀtt missa en sÄrbarhet som inte passar in i deras kÀnda beteendemönster.
  6. Bristande förstÄelse av applikationens funktioner hos skanners. Skanners vet inte vad "internetbank", "betalning" eller "kommentar" Àr. De ser bara lÀnkar och parametrar, sÄ ett stort antal potentiella sÄrbarheter i affÀrslogiken förblir helt oskyddade, de kommer inte att förstÄ hur man gör en dubbel debitering, titta pÄ andras data via ID eller justera saldot via avrundning.
  7. Bristande förstÄelse av sidornas semantik hos skanners. Skanners kan inte lÀsa FAQ, de kan inte kÀnna igen captcha, de kan inte sjÀlva förstÄ hur man registrerar sig, och att de mÄste logga in igen, vad som inte gÄr att klicka pÄ "logga ut", och hur man signerar förfrÄgningar vid Àndring av parameter vÀrden. Som ett resultat kan en stor del av applikationen förbli helt oskannad.

Problem med att skanna kÀllkoden.

  1. Falska positiva. Statisk analys Àr en komplex uppgift, dÀr man ofta mÄste göra mÄnga kompromisser. Man tvingas ofta offra noggrannhet, och Àven dyra företagslösningar kan ge en enorm mÀngd falska positiva resultat.
  2. SvÄrigheter med implementering. För att öka noggrannheten och fullstÀndigheten i den statiska analysen mÄste skanningsreglerna förbÀttras, och att skriva dessa regler kan vara alltför arbetsamt. Ibland Àr det enklare att hitta alla stÀllen i koden med ett specifikt fel och ÄtgÀrda dem, Àn att skriva en regel för att detektera sÄdana fall.
  3. Brist pÄ stöd för beroenden. Stora projekt Àr beroende av mÄnga bibliotek och ramverk som utökar programmeringssprÄkets möjligheter. Om skannerens kunskapsbank saknar information om farliga punkter ("sinks") i dessa ramverk, blir det en blind flÀck, och skannern kommer inte att förstÄ koden.
  4. Varaktighet av skanningen. Att hitta sÄrbarheter i koden Àr en komplex uppgift Àven i termer av algoritmer. DÀrför kan processen ta tid och krÀva betydande berÀkningsresurser.
  5. LÄg tÀckning. Trots resursförbrukningen och den lÄnga skanningstiden mÄste utvecklarna av SAST-verktyg fortfarande göra kompromisser och analysera inte alla tillstÄnd som programmet kan befinna sig i.
  6. Reproducerbarhet av fynd. Att ange en specifik rad och anropsstack som leder till en sÄrbarhet Àr utmÀrkt, men i praktiken ger skannern ofta inte tillrÀckligt med information för att verifiera existensen av en sÄrbarhet utifrÄn. Faktum Àr att problemet kan finnas i död kod som Àr oÄtkomlig för en angripare.

Problem med skanning av infrastruktur.

  1. OtillrÀcklig inventering. I stora infrastrukturer, sÀrskilt de som Àr geografiskt Ätskilda, Àr det ofta svÄrast att förstÄ vilka vÀrdar som behöver skannas. Med andra ord Àr skanningsuppgiften tÀtt kopplad till asset management-uppgiften.
  2. DÄlig prioritering. NÀtverkskanners ger ofta mÄnga resultat med brister som i praktiken inte kan utnyttjas, men som formellt har hög risknivÄ. Konsumenten fÄr en rapport som Àr svÄr att tolka och det Àr oklart vad som behöver ÄtgÀrdas först.
  3. Sparsmakade rekommendationer. I kunskapsbasen för skannern finns ofta bara mycket allmÀn information om sÄrbarheten och hur den kan ÄtgÀrdas, sÄ administratörer fÄr vÀnda sig till Google. Situationen Àr nÄgot bÀttre med whitebox-skannrar, som kan ge specifika kommandon för att ÄtgÀrda problem.
  4. Manuell arbete. I infrastrukturer kan det finnas mÄnga noder, vilket innebÀr att det potentiellt finns mÄnga sÄrbarheter som rapporterna mÄste analyseras manuellt för vid varje iteration.
  5. DÄlig tÀckning. Kvaliteten pÄ skanningen av infrastrukturen beror direkt pÄ mÀngden kunskapsbas om sÄrbarheter och programvaruversioner. Men, Det visar sig vara, Àven för marknadsledare Àr kunskapsbasen inte heltÀckande, och i databaserna för gratislösningar finns det mycket information som saknas hos ledarna.
  6. Problem med patchning. Oftast innebÀr patchning av sÄrbarheter i infrastrukturen att uppdatera ett paket eller Àndra en konfigurationsfil. Ett stort problem hÀr Àr att systemet, sÀrskilt legacy-system, kan bete sig oförutsÀgbart som en följd av uppdateringen. I praktiken mÄste integrations tester genomföras pÄ den levande infrastrukturen i produktion.

Metoder.

Vad ska man dÄ göra?
Mer om exempel och hur man kan hantera mÄnga av de nÀmnda problemen kommer jag att berÀtta om i följande delar, men för nu kommer jag att ange de huvudsakliga omrÄdena som kan arbetas med:

  1. Aggering av olika skanningverktyg. Genom att anvÀnda flera skannrar korrekt kan man uppnÄ en betydande ökning av kunskapsbasen och kvaliteten pÄ upptÀckten. Man kan hitta fler sÄrbarheter Àn de sammanlagda resultaten av alla skannrar som körs var för sig, samtidigt som man kan bedöma risknivÄn mer exakt och ge fler rekommendationer.
  2. Integration av SAST och DAST. Man kan öka tÀckningen för DAST och noggrannheten för SAST genom informationsutbyte mellan dem. FrÄn kÀllkoderna kan information om befintliga rutter hÀmtas, och med hjÀlp av DAST kan man kontrollera om sÄrbarheten Àr synlig utifrÄn.
  3. MaskininlĂ€rningℱ. År 2015 om (och Ă€nnu) pratade jag om tillĂ€mpningen av statistik för att ge skannrarna hackerintuitiv och pĂ„skynda dem. Detta Ă€r definitvt materia för framtida utveckling av automatisk sĂ€kerhetsanalys.
  4. Integrering av IAST med autotester och OpenAPI. Inom CI/CD-pipeline Àr det möjligt att skapa en skanningsprocess baserad pÄ verktyg som fungerar som HTTP-proxy och funktionella tester som körs över HTTP. Tester och OpenAPI/Swagger-kontrakt kommer att ge skannern den information som saknas om dataflöden, vilket gör det möjligt att skanna applikationen i olika tillstÄnd.
  5. Korrekt konfiguration. För varje applikation och infrastruktur behöver en lÀmplig skanningsprofil skapas, som tar hÀnsyn till antalet och typen av grÀnssnitt samt anvÀnda teknologier.
  6. Anpassning av skannrar. Ofta kan applikationen inte skannas utan att skannern anpassas. Ett exempel Àr en betalgateway dÀr varje förfrÄgan mÄste signeras. Utan att skriva en koppling till gatewayens protokoll kommer skannrar att utan eftertanke försöka göra förfrÄgningar med felaktig signatur. Det Àr ocksÄ nödvÀndigt att skriva specialiserade skannrar för specifika typer av sÄrbarheter, sÄsom Insecure Direct Object Reference
  7. Riskhantering. Genom att anvÀnda olika skannrar och integrera med externa system som Asset Management och Threat Management kan en mÀngd olika parametrar anvÀndas för att bedöma risknivÄer, sÄ att ledningen kan fÄ en adekvat bild av det aktuella sÀkerhetstillstÄndet för utvecklingen eller infrastrukturen.

HÄll dig uppdaterad och lÄt oss störa sÄrbarhetsskanningen!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster