Bezpečnosť

10 typov bezpečnostných chýb

10 typov bezpečnostných chýb
Neúmyselná alebo náhodná chyba v softvérovom kóde alebo v akomkoľvek systéme, vďaka ktorému je potenciálne zneužiteľný z hľadiska prístupu k nelegitímnym používateľom, škodlivého správania ako vírusy, trójske kone, červy alebo iného škodlivého softvéru, sa nazýva chyba zabezpečenia. Výsledkom použitia softvéru, ktorý už bol zneužitý, alebo použitia slabých a predvolených hesiel je zraniteľnosť systému voči vonkajšiemu svetu. Tieto typy bezpečnostných chýb vyžadujú opravu, aby zabránili hackerom v opätovnom použití skôr použitých exploitov na získanie neoprávneného prístupu do systému. Zraniteľnosťou zabezpečenia, ktorá sa tiež nazýva bezpečnostná diera alebo slabina, je chyba, chyba alebo chyba v implementácii kódu, dizajnu a architektúry webovej aplikácie a serverov, ktorá, ak nebude adresovaná, môže mať za následok kompromitáciu systému a spôsobiť celá sieť zraniteľná voči útoku. Medzi ľudí, ktorí budú infikovaní, patrí vlastník aplikácie, používatelia aplikácie a akákoľvek iná osoba spoliehajúca sa na túto aplikáciu. Pozrime sa na najnebezpečnejšie a najbežnejšie bezpečnostné riziká webových aplikácií.

Obsah

  1. Vloženie databázy
  2. Nefunkčné overenie
  3. Citlivé vystavenie údajov
  4. Externé entity XML (XEE)
  5. Zlomená kontrola prístupu
  6. Nesprávna konfigurácia zabezpečenia
  7. Cross-site Scripting (XSS)
  8. Neistá deserializácia
  9. Používanie komponentov so známymi chybami zabezpečenia
  10. Nedostatočné zaznamenávanie a monitorovanie

Vloženie databázy:

V prípade zasielania nedôveryhodných častí údajov tlmočníkovi ako súčasť velenia cez ktorúkoľvek oblasť, ktorá prijíma vstup užívateľa i.Pri vstupe do formulára alebo v akejkoľvek inej oblasti na zadávanie údajov sa vyskytujú chyby pri vkladaní. Útočné škodlivé dotazy útočníka môžu presvedčiť tlmočníka, aby vykonal príkazy, ktoré môžu zobraziť dôverné údaje, na ktoré nemá používateľ oprávnenie pozrieť sa. Napríklad pri útoku s vložením kódu SQL, keď nie je vstup formulára správne dezinfikovaný, môže útočník vstúpiť do databázy SQL a pristupovať k jej obsahu bez autorizácie, iba zadaním škodlivého kódu databázy SQL vo forme, ktorá očakáva holý text. Akýkoľvek typ poľa, ktoré prijíma vstup používateľa, je injekčný, t.j.Parametre, premenné prostredia, všetky webové služby atď.

Aplikácia je zraniteľná voči injekčnému útoku, keď údaje poskytnuté používateľom nie sú dezinfikované a overené použitím dynamických dotazov bez úniku podľa kontextu a priamym použitím nepriateľských údajov. Injekčné chyby možno ľahko odhaliť preskúmaním kódu a použitím automatizovaných nástrojov, ako sú skenery a fuzzery. Aby sa zabránilo injekčným útokom, je možné prijať určité opatrenia, ako je napríklad oddelenie údajov od príkazov a dotazov, použitie bezpečného rozhrania API, ktoré poskytuje parametrizované rozhranie, použitie „bieleho zoznamu“ overenia vstupu na strane servera prostredníctvom nástrojov ako Snort, únik špeciálnych znakov pomocou špecifickej únikovej syntaxe atď.

Injekčný útok môže viesť k masívnej strate údajov, zverejneniu dôverných informácií, odmietnutiu prístupu a môže dokonca viesť k úplnému prevzatiu aplikácie. Niektoré ovládacie prvky SQL, ako napríklad LIMIT, je možné použiť na riadenie obrovského množstva straty údajov v prípade útoku. Niektoré typy injekčných útokov sú SQL, OS, NoSQL, LDAP injekčné útoky.

Nefunkčné overenie:

Útočníci môžu pristupovať k používateľským účtom a môžu dokonca napadnúť celý hostiteľský systém prostredníctvom účtov správcu pomocou slabých miest v autentifikačných systémoch. Chyby overenia umožňujú útočníkovi narušiť heslá, tokeny relácií, autentifikačné kľúče a môžu byť pripútané k ďalším útokom, ktoré môžu dočasne a v niektorých prípadoch natrvalo viesť k neoprávnenému prístupu k ľubovoľnému inému používateľskému účtu alebo relácii. Povedzme, že používateľ má zoznam slov alebo slovník miliónov platných používateľských mien a hesiel získaných počas porušenia. Môže ich používať jeden po druhom za extrémne kratšiu dobu pomocou automatizovaných nástrojov a skriptov v prihlasovacom systéme, aby zistil, či niekto funguje. Zlá implementácia správy identít a kontroly prístupu vedie k zraniteľnostiam, ako je napríklad narušená autentifikácia.

Aplikácia je zraniteľná voči autentifikačnému útoku, keď umožňuje skúšanie rôznych používateľských mien a hesiel, povoľuje útoky slovníkov alebo útoky hrubou silou bez akejkoľvek obrannej stratégie, používa jednoduché predvolené heslá alebo heslá, ktoré sú v prípade akéhokoľvek úniku odhalené, odhalí identifikácie relácie v adrese URL, použije zlá schéma obnovy hesla, používa vzor cookies. Zlomené overenie je možné ľahko zneužiť pomocou jednoduchých nástrojov na hrubou vynútiteľnosť a slovníkových útokov s dobrým slovníkom. Týmto typom útokov je možné zabrániť pomocou viacfaktorových autentifikačných systémov, zavedením slabých kontrol hesiel spustením hesla v databáze chybných hesiel, nepoužívaním predvolených údajov, zosúladením politiky zložitosti hesiel, použitím dobrého servera správca relácií, ktorý po prihlásení vygeneruje nové náhodné ID relácie atď.

Zlomená chyba zabezpečenia môže mať za následok kompromitovanie niekoľkých používateľských účtov a účtu správcu, čo je všetko, čo musí útočník napadnúť. Tieto typy útokov vedú k krádeži identity, podvodom v oblasti sociálneho zabezpečenia, praniu špinavých peňazí a zverejňovaniu vysoko utajovaných informácií. Medzi útoky patria slovníkové útoky, hrubé vynútenie, únos relácie a útoky na správu relácie.

Citlivé vystavenie údajov:

Webové aplikácie niekedy nechránia citlivé údaje a informácie, ako sú heslá, poverenia do databázy atď. Útočník môže tieto slabo chránené údaje ľahko ukradnúť alebo upraviť a použiť ich na nelegitímne účely. Citlivé údaje by mali byť šifrované, keď sú v pokoji alebo na ceste, a mali by mať ďalšiu vrstvu zabezpečenia, inak by ich mohli útočníci ukradnúť. Útočníci môžu dostať do rúk citlivé exponované údaje a ukradnúť hašované alebo vymazané texty používateľov a údaje z databázy zo servera alebo webového prehliadača. Napríklad ak databáza hesiel používa na ukladanie hesiel nesolené alebo jednoduché hodnoty hash, chyba nahrávania súboru môže útočníkovi umožniť načítať databázu hesiel, čo povedie k odhaleniu všetkých hesiel pomocou dúhovej tabuľky vopred vypočítaných hodnôt hash.

Hlavnou chybou nie je len to, že dáta nie sú šifrované, aj keď sú šifrované, ale aj slabé generovanie kľúčov, slabé hashovacie algoritmy, slabé využitie šifry môžu mať za následok aj tieto typy jedného z najbežnejších útokov. Aby ste zabránili týmto typom útokov, najskôr klasifikujte, aký druh údajov možno podľa zákonov o ochrane súkromia považovať za citlivý, a použite kontroly podľa klasifikácie. Snažte sa neuchovávať žiadne utajované údaje, ktoré nepotrebujete, akonáhle ich použijete, umyte ich. Pri prenose údajov ich šifrujte zabezpečenými protokolmi, t.e TLS so šiframi PFS atď.

Tieto typy chýb zabezpečenia môžu viesť k odhaleniu veľmi citlivých informácií, ako sú údaje o kreditnej karte, zdravotné záznamy, heslá a akékoľvek ďalšie osobné údaje, ktoré môžu viesť ku krádeži identity, bankovým podvodom atď.

Externé entity XML (XEE):

Zle nakonfigurované procesory XML spracúvajú odkazy na externé entity v dokumentoch XML. Tieto externé entity možno použiť na načítanie údajov interných súborov, ako napríklad / etc / passwd súboru alebo na vykonávanie iných škodlivých úloh.  Zraniteľné procesory XML možno ľahko zneužiť, ak útočník môže nahrať dokument XML alebo zahrnúť XML atď. Tieto zraniteľné entity XML je možné zistiť pomocou nástrojov SAST a DAST alebo manuálne kontrolou závislostí a konfigurácií.

Webová aplikácia je zraniteľná voči útoku XEE z mnohých dôvodov, napríklad ak aplikácia prijíma priamy vstup XML z nedôveryhodných zdrojov, v aplikácii sú povolené definície typov dokumentov (DTD), aplikácia používa na spracovanie identity SAML, pretože SAML používa XML na identitu. vloženia atď. Útoky XEE je možné zmierniť tak, že sa vyhnete serializácii citlivých údajov pomocou menej komplikovaných dátových formátov, i.e JSON, oprava procesorov XML, ktoré aplikácia momentálne používa a dokonca aj knižnice, deaktivácia DTD vo všetkých analyzátoroch XML, overenie funkčnosti nahrávania súborov XML pomocou overenia XSD atď.

Aplikácia zraniteľná voči týmto typom útokov môže viesť k útoku DOS, útoku Billion Laughs, skenovaniu interných systémov, skenovaniu interného portu, vykonaniu vzdialeného príkazu, ktorý má vplyv na všetky údaje aplikácie.

Nefunkčné riadenie prístupu:

Kontrola prístupu poskytuje používateľom oprávnenie na vykonávanie konkrétnych úloh. K zraniteľnosti pri zlomenom prístupe dochádza, keď používatelia nie sú správne obmedzovaní v úlohách, ktoré môžu vykonávať. Útočníci môžu túto chybu zabezpečenia zneužiť, čo môže viesť k prístupu k neoprávneným funkciám alebo informáciám. Povedzme, že webová aplikácia umožňuje používateľovi zmeniť účet, z ktorého je prihlásený, iba zmenou adresy URL na účet iného používateľa bez ďalšieho overovania.  Využitie zraniteľnosti riadenia prístupu je útokom každého útočníka, túto zraniteľnosť je možné nájsť manuálne, ako aj pomocou nástrojov SAFT a DAFT. Tieto chyby zabezpečenia existujú kvôli nedostatku testovania a automatickej detekcie webových aplikácií, aj keď najlepším spôsobom, ako ich nájsť, je urobiť to manuálne.

Zraniteľnosti obsahujú stupňovanie privilégií i.Ak ste používateľom, nie ste správcom alebo správcom, keď ste používateľom, obchádzaním kontrol riadenia prístupu iba úpravou adresy URL alebo zmenou stavu aplikácie, manipuláciou s metadátami, umožnením zmeny primárneho kľúča ako primárneho kľúča iného používateľa, atď. Aby sa zabránilo týmto druhom útokov, musia byť mechanizmy riadenia prístupu implementované v kóde na strane servera, kde útočníci nemôžu upravovať riadenie prístupu. Na zmiernenie týchto druhov útokov je potrebné zabezpečiť vynútenie jedinečných obchodných limitov aplikácií podľa doménových modelov, zakázanie výpisov adresárov servera, upozornenie správcu na opakované neúspešné pokusy o prihlásenie, zneplatnenie tokenov JWT po odhlásení.

Útočníci môžu pôsobiť ako ďalší používatelia alebo správcovia, ktorí používajú túto chybu zabezpečenia na vykonávanie škodlivých úloh, ako je vytváranie, odstraňovanie a úprava záznamov atď. Ak údaje nie sú zabezpečené ani po ich porušení, môže dôjsť k ich masívnej strate.

Nesprávna konfigurácia zabezpečenia:

Najbežnejšou chybou zabezpečenia je nesprávna konfigurácia zabezpečenia. Hlavným dôvodom tejto chyby je použitie predvolenej konfigurácie, neúplnej konfigurácie, konfigurácií Adhoc, zle nakonfigurovaných hlavičiek HTTP a podrobných chybových správ obsahujúcich viac informácií, ako by mal používateľ v skutočnosti vedieť. Na ktorejkoľvek úrovni webovej aplikácie môže dôjsť k chybnej konfigurácii zabezpečenia, t.e databáza, webový server, aplikačný server, sieťové služby atď. Útočníci môžu využiť neopravené systémy alebo získať prístup k nechráneným súborom a adresárom na neoprávnené zadržanie systému. Napríklad aplikácia nadmerne podrobne zobrazuje chybové správy, ktoré útočníkovi pomáhajú spoznať chyby v aplikačnom systéme a spôsob jeho fungovania. Na detekciu týchto typov bezpečnostných chýb je možné použiť automatické nástroje a skenery.

Webová aplikácia obsahuje tento typ chyby zabezpečenia, ak v nej nechýba opatrenia na zvýšenie zabezpečenia v ktorejkoľvek časti aplikácie, sú otvorené zbytočné porty alebo umožňuje nepotrebné funkcie, používajú sa predvolené heslá, spracovanie chýb odhalí útočníkovi informatívne chyby, používa ju neopravený alebo zastaraný bezpečnostný softvér atď. Dá sa tomu zabrániť odstránením nepotrebných funkcií kódu, t.j.minimálna platforma bez zbytočných funkcií, dokumentácie atď., umožňujúcich aktualizovať a opravovať bezpečnostné diery ako súčasť procesov správy opráv, použitie procesu na overenie účinnosti prijatých bezpečnostných opatrení, použitie procesu opakovateľného vytvrdzovania je ľahké nasadiť iné prostredie, ktoré je správne uzamknuté.

Tieto typy zraniteľností alebo chýb umožňujú útočníkovi získať neoprávnený prístup k dátam systému, čo vedie k úplnému zneužitiu systému.

Cross-Site Scripting (XSS):

Zraniteľnosti XSS sa stávajú v okamihu, keď webová aplikácia začlení nedôveryhodné údaje na novú webovú stránku bez oprávneného schválenia alebo úniku, alebo obnoví aktuálnu webovú stránku pomocou údajov poskytnutých klientom, pričom použije rozhranie API prehliadača, ktoré dokáže vytvárať HTML alebo JavaScript.  Chyby XSS sa vyskytujú v prípade, že webová stránka umožňuje používateľovi pridať do cesty adresy URL vlastný kód, ktorý môžu ostatní používatelia vidieť. Tieto chyby sa používajú na spustenie škodlivého kódu JavaScript v prehľadávači cieľa. Povedzme, že útočník môže obeti poslať odkaz obsahujúci odkaz na webovú stránku ktorejkoľvek spoločnosti. Toto spojenie môže mať v sebe zabudovaný škodlivý kód JavaScript. V prípade, že webová stránka banky nie je primerane zabezpečená proti útokom XSS, po kliknutí na odkaz sa škodlivý kód spustí v prehliadači obete.

Cross-Site Scripting je chyba zabezpečenia, ktorá je prítomná takmer v ⅔ webových aplikácií. Aplikácia je zraniteľná voči XSS, ak ukladá neočakávaný vstup používateľa, ktorý môže vidieť iný používateľ, a to pomocou štruktúr JavaScriptu, jednostránkových aplikácií a rozhraní API, ktoré na stránku účinne začleňujú informácie, ktoré sú ovládateľné útočníkom, proti DOM XSS. Útoky XSS je možné zmierniť použitím rámcov, ktoré uniknú a dezinfikujú vstupy XSS od prírody, ako je React JS, atď., Spoznaním obmedzení rámcov a ich zakrytím pomocou vlastných prípadov, únikom nepotrebných a nedôveryhodných údajov HTML všade,.e v atribútoch HTML, URI, Javascript atď., použitie kontextového kódovania v prípade úpravy dokumentu na strane klienta atď.

Útoky založené na XSS sú troch typov, t.e Zrkadlené XSS, DOM XSS a Uložené XSS. Všetky typy týchto útokov majú značné množstvo dopadu, ale v prípade Stored XSS je dopad ešte väčší, t.e kradnutie prihlasovacích údajov, zasielanie škodlivého softvéru obeti atď.

Neistá deserializácia:

Serializácia údajov znamená brať objekty a prevádzať ich do ľubovoľného formátu, aby sa tieto údaje mohli neskôr použiť na iné účely, zatiaľ čo deserializácia údajov znamená opak. Deserializácia rozbaľuje tieto serializované údaje na použitie aplikácií. Neistá deserializácia znamená temperovanie údajov, ktoré boli serializované tesne pred rozbalením alebo deserializáciou.  Neistá deserializácia vedie k vzdialenému spusteniu kódu a používa sa na vykonávanie ďalších úloh na škodlivé účely, ako je napríklad eskalácia privilégií, injekčné útoky, opakované útoky atď. Existuje niekoľko nástrojov na odhalenie týchto druhov chýb, ale na overenie problému je často potrebná ľudská pomoc. Využívanie deserializácie je trochu ťažké, pretože exploity nebudú fungovať bez niektorých manuálnych zmien.

Keď aplikácia deserializuje škodlivé objekty poskytnuté útočiacim subjektom. To môže viesť k dvom typom útokov, t.Útoky súvisiace s dátovou štruktúrou a objektmi, v ktorých útočník upravuje logiku aplikácie alebo vykonáva vzdialený kód a typické útoky na neoprávnenú manipuláciu s dátami, pri ktorých sa používajú existujúce dátové štruktúry s upraveným obsahom, napríklad útoky súvisiace s kontrolou prístupu.  Serializáciu je možné použiť pri vzdialenej procesnej komunikácii (RPC) alebo medziprocesovej komunikácii (IPC), ukladaní údajov do pamäte cache, webových služieb, servera vyrovnávacej pamäte databáz, súborových systémov, autentifikačných tokenov API, súborov cookie HTML, parametrov formulára HTML atď. Útoky deserializácie možno zmierniť nepoužívaním serializovaných objektov z nedôveryhodných zdrojov, implementáciou kontrol integrity, izolovaním kódu bežiaceho v prostredí s nízkym privilegovaním, monitorovaním prichádzajúcich a odchádzajúcich sieťových pripojení zo serverov, ktoré sa často deserializujú.

Používanie komponentov so známymi chybami zabezpečenia:

Väčšina vývojárov vo webovej aplikácii používa rôzne komponenty, ako sú knižnice, rámce a softvérové ​​moduly. Tieto knižnice pomáhajú vývojárovi vyhnúť sa zbytočnej práci a poskytujú potrebné funkcie. Útočníci hľadajú chyby a zraniteľné miesta v týchto komponentoch, aby koordinovali útok. V prípade zistenia medzery v zabezpečení v komponente môžu byť všetky stránky, ktoré používajú rovnaký komponent, zraniteľné. Exploitácie týchto zraniteľností sú už k dispozícii, zatiaľ čo zápis vlastného exploitu od nuly si vyžaduje veľa úsilia. Toto je veľmi častý a rozšírený problém, použitie veľkého množstva komponentov pri vývoji webovej aplikácie môže viesť k tomu, že ani nebudete poznať a rozumieť všetkým použitým komponentom, oprava a aktualizácia všetkých komponentov je beh na dlhú trať.

Aplikácia je zraniteľná, ak vývojár nevie verziu použitého komponentu, softvér je zastaraný, t.j.e operačný systém, DBMS, bežiaci softvér, runtime prostredia a knižnice, skenovanie zraniteľností sa nerobí pravidelne, vývojári netestujú kompatibilitu opraveného softvéru. Tomu sa dá zabrániť odstránením nepoužívaných závislostí, súborov, dokumentácie a knižníc, pravidelnou kontrolou verzie klientských a serverových komponentov, získavaním komponentov a knižníc z oficiálnych a dôveryhodných zabezpečených zdrojov, sledovaním neotiahnutých knižníc a komponentov, zabezpečením plánu na pravidelnú aktualizáciu a opravu zraniteľných komponentov.

Tieto chyby zabezpečenia vedú k menším dopadom, ale môžu tiež viesť k ohrozeniu servera a systému. Mnoho veľkých porušení sa spoliehalo na známe chyby zabezpečenia komponentov. Použitie zraniteľných komponentov narúša obranu aplikácie a môže byť východiskovým bodom pre rozsiahly útok.

Nedostatočné zaznamenávanie a sledovanie:

Väčšina systémov neprijíma dostatočné opatrenia a kroky na zisťovanie úniku údajov. Priemerná doba odozvy incidentu je 200 dní po jeho vzniku, čo je veľa času na vykonanie všetkých nepríjemných vecí pre útočiacu entitu. Nedostatočné protokolovanie a monitorovanie umožňuje útočníkovi ďalej útočiť na systém, udržiavať jeho zadržanie v systéme, manipulovať, zadržiavať a extrahovať údaje podľa potreby. Útočníci využívajú nedostatočné sledovanie a reakciu vo svoj prospech na útok na webovú aplikáciu.
K nedostatočnému zaznamenávaniu a monitorovaniu dochádza kedykoľvek. I.e protokoly aplikácií, ktoré nie sú monitorované kvôli neobvyklým činnostiam, auditovateľné udalosti, ako sú neúspešné pokusy o prihlásenie a vysoké hodnoty transakcií, nie sú správne protokolované, varovania a chyby generujú nejasné chybové správy, žiadne upozornenie na spúšťač v prípade testovania pomocou automatizovaných nástrojov DAST, neschopnosť detekovať alebo rýchlo upozorniť aktívne útoky atď. Tieto je možné zmierniť zabezpečením toho, aby bolo možné zaznamenať všetky prihlasovacie údaje, zlyhania riadenia prístupu a overenie vstupu na strane servera na identifikáciu škodlivého používateľského účtu, a uchovať ich dostatok času na oneskorené forenzné vyšetrovanie, a to zaistením toho, že generované protokoly budú vo formáte kompatibilný s centralizovanými riešeniami správy protokolov, zabezpečením kontroly integrity pri transakciách vysokej hodnoty, vytvorením systému na včasné varovanie o podozrivých činnostiach atď.

Väčšina úspešných útokov začína kontrolou a skúmaním zraniteľností v systéme. Povolenie týchto testov zraniteľnosti môže viesť k ohrozeniu celého systému.

Záver:

Zraniteľnosti zabezpečenia vo webovej aplikácii ovplyvňujú všetky entity súvisiace s touto aplikáciou. O tieto chyby zabezpečenia sa musí starať, aby používateľom poskytovali bezpečné a zabezpečené prostredie. Útočníci môžu pomocou týchto zraniteľností napadnúť systém, zmocniť sa ho a eskalovať privilégiá. Dopad napadnutej webovej aplikácie je možné vizualizovať od odcudzených údajov o kreditnej karte a krádeže identity po únik vysoko dôverných informácií atď. v závislosti na potrebách a vektoroch útoku škodlivých entít.

Hry Ako zobraziť počítadlo FPS v hrách Linux
Ako zobraziť počítadlo FPS v hrách Linux
Hranie na systéme Linux získalo veľký tlak, keď spoločnosť Valve v roku 2012 oznámila podporu systému Linux pre klienta Steam a ich hry. Od tej doby s...
Hry Ako sťahovať a prehrávať Sid Meier's Civilization VI v systéme Linux
Ako sťahovať a prehrávať Sid Meier's Civilization VI v systéme Linux
Úvod do hry Civilization 6 predstavuje moderné poňatie klasického konceptu predstaveného v sérii hier Age of Empires. Myšlienka bola dosť jednoduchá; ...
Hry Ako inštalovať a hrať Doom na Linuxe
Ako inštalovať a hrať Doom na Linuxe
Úvod do Doom Séria Doom vznikla v 90. rokoch po vydaní pôvodného Doomu. Bol to okamžitý hit a od tej doby herná séria získala množstvo ocenení a origi...