V súčasnosti je vyvinuté veľké množstvo nástrojov na automatizáciu vyhľadávania zraniteľností programu. Tento článok sa bude venovať niektorým z nich.

Úvod

Statická analýza kódu je softvérová analýza, ktorá sa vykonáva na zdrojovom kóde programov a je implementovaná bez skutočného vykonania študovaného programu.

Softvér často obsahuje rôzne chyby zabezpečenia v dôsledku chýb v programovom kóde. Chyby, ktoré sa počas vývoja programov vyskytnú, v niektorých situáciách vedú k zlyhaniu programu a v dôsledku toho je narušená normálna prevádzka programu: v takom prípade často dochádza k zmene a poškodeniu údajov, k zastaveniu programu alebo dokonca systému. Väčšina zraniteľností súvisí s nesprávnym spracovaním údajov prijatých zvonka alebo s ich nedostatočným overením.

Na identifikáciu slabých miest sa používajú rôzne nástroje, napríklad statické analyzátory zdrojového kódu programu, ktorých prehľad je uvedený v tomto článku.

Klasifikácia bezpečnostných zraniteľností

Ak dôjde k porušeniu požiadavky na správnu činnosť programu na všetkých možných vstupných údajoch, je možný výskyt takzvaných bezpečnostných chýb. Zraniteľnosti zabezpečenia môžu viesť k tomu, že na prekonanie bezpečnostných obmedzení celého systému ako celku je možné použiť jeden program.

Klasifikácia zraniteľností ochrany v závislosti od chýb softvéru:

  • Prepad nárazníka. Táto zraniteľnosť vyplýva z nedostatku kontroly nad hranicami poľa v pamäti počas vykonávania programu. Keď príliš veľký dátový paket pretečie vyrovnávacou pamäťou obmedzenej veľkosti, obsah buniek cudzej pamäte sa prepíše a program zlyhá a ukončí sa. Na základe umiestnenia medzipamäte v procesnej pamäti sa vyskytujú pretečenia medzipamäte v zásobníku (pretečenie medzipamäte zásobníka), haldy (pretečenie medzipamäte medzipamäte) a oblasti statických údajov (pretečenie vyrovnávacej pamäte bss).
  • Poškodená chyba vstupu. Zraniteľnosti týkajúce sa poškvrneného vstupu môžu vzniknúť, keď sa vstup používateľa odovzdá bez dostatočnej kontroly tlmočníkovi nejakého externého jazyka (zvyčajne Unixového shellu alebo SQL). V takom prípade môže používateľ určiť vstupné údaje tak, aby spustený tlmočník vykonal príkaz, ktorý je úplne odlišný od príkazu určeného autormi zraniteľného programu.
  • Naformátujte chyby zraniteľnosti reťazca. Tento typ chyby zabezpečenia je podtriedou chyby poškvrneného vstupu. Vyskytuje sa z dôvodu nedostatočnej kontroly parametrov pri použití formátových I / O funkcií printf, fprintf, scanf atď. Štandardnej knižnice C. Tieto funkcie berú ako jeden z parametrov reťazec znakov, ktorý určuje formát pre vstup alebo výstup následných argumentov k funkcii. Ak si používateľ môže nastaviť formátovanie sám, môže táto chyba zabezpečenia vzniknúť v dôsledku neúspešného použitia funkcií formátovania reťazca.
  • Zraniteľnosti v dôsledku časových chýb (podmienky závodu). Problémy spojené s multitaskingom vedú k situáciám nazývaným „závodné podmienky“: program, ktorý nie je navrhnutý na spustenie v prostredí multitaskingu, si môže myslieť, že napríklad súbory, ktoré používa, nemôže byť upravený iným programom. Výsledkom je, že útočník, ktorý včas nahradí obsah týchto pracovných súborov, môže program prinútiť k vykonaniu určitých akcií.

Samozrejme, okrem uvedených sú aj ďalšie triedy bezpečnostných chýb.

Prehľad existujúcich analyzátorov

Na zisťovanie slabín zabezpečenia v programoch sa používajú nasledujúce nástroje:

  • Dynamické ladiace programy. Nástroje, ktoré umožňujú ladiť program počas jeho vykonávania.
  • Statické analyzátory (statické debuggery). Nástroje, ktoré využívajú informácie zhromaždené počas statickej analýzy programu.

Statické analyzátory označujú tie miesta v programe, kde možno chybu nájsť. Tieto podozrivé časti kódu môžu obsahovať chybu alebo byť úplne bezpečné.

Tento článok poskytuje prehľad niekoľkých existujúcich statických analyzátorov. Poďme sa na každú z nich pozrieť bližšie.

Správa zraniteľnosti je identifikácia, hodnotenie, klasifikácia a výber riešenia na riešenie slabých miest. Správa zraniteľnosti je založená na úložiskách informácií o zraniteľnosti, jedným z nich je Prospective Monitoring Vulnerability Management System.

Naše riešenie riadi vznik informácií o slabých miestach v operačných systémoch (Windows, Linux / Unix), kancelárskom a aplikačnom softvéri, hardvérovom softvéri, nástrojoch na zabezpečenie informácií.

Zdroje dát

Databáza systému riadenia zraniteľnosti softvéru Prospective Monitoring sa automaticky aktualizuje z nasledujúcich zdrojov:

  • Databáza ohrození bezpečnosti informácií (BDU BI) FSTEC Ruska.
  • Národná databáza zraniteľnosti (NVD) NIST.
  • Red Hat Bugzilla.
  • Sledovač chýb zabezpečenia Debianu.
  • Zoznam adresátov CentOS.

Tiež používame automatizovanú metódu na doplnenie našej databázy zraniteľností. Vyvinuli sme prehľadávač webových stránok a syntaktický analyzátor dát, ktorý každý deň analyzuje viac ako sto rôznych zahraničných a ruských zdrojov pre množstvo kľúčových slov - skupiny sociálnych médií, blogy, mikroblogy, médiá zamerané na informačné technológie a bezpečnosť informácií. Ak tieto nástroje nájdu niečo, čo zodpovedá podmienkam vyhľadávania, analytik ručne skontroluje informácie a vstúpi do databázy zraniteľností.

Ovládajte chyby softvéru

Pomocou systému Vulnerability Management System môžu vývojári kontrolovať prítomnosť a stav zistených zraniteľností v súčastiach ich softvéru od tretích strán.

Napríklad v modeli Hewlett Packard Enterprise Secure Software Developer Life Cycle (SSDLC) je ústredné riadenie knižnice tretích strán.

Náš systém monitoruje prítomnosť zraniteľností v paralelných verziách / zostaveniach jedného softvérového produktu.

Funguje to takto:

1. Vývojár nám poskytne zoznam knižníc a komponentov tretích strán, ktoré sa používajú v produkte.

2. Denne kontrolujeme:

b. či existujú metódy na odstránenie skôr objavených zraniteľností.

3. Ak sa stav alebo hodnotenie zraniteľnosti zmenilo v súlade so zadaným modelom role, upozorníme to vývojára. To znamená, že rôzne vývojové tímy tej istej spoločnosti dostanú upozornenia a uvidia stav zraniteľností iba pre produkt, na ktorom pracujú.

Frekvencia výstrah systému riadenia zraniteľnosti je prispôsobiteľná, ale ak sa zistí chyba zabezpečenia so skóre CVSS vyšším ako 7,5, vývojári dostanú okamžité výstrahy.

Integrácia s ViPNet TIAS

Hardvérový a softvérový komplex systému ViPNet Threat Intelligence Analytics System automaticky detekuje počítačové útoky a detekuje incidenty na základe udalostí zabezpečenia informácií prijatých z rôznych zdrojov. Hlavným zdrojom udalostí pre ViPNet TIAS je ViPNet IDS, ktorý analyzuje prichádzajúce a odchádzajúce sieťové prenosy pomocou zásad rozhodovacích pravidiel AM AM vyvinutých „Perspective Monitoring“. Niektoré podpisy sú napísané s cieľom zistiť zneužitie slabých miest.

Ak ViPNet TIAS zistí bezpečnostný incident, pri ktorom sa zneužila zraniteľnosť, potom sa všetky informácie týkajúce sa zraniteľnosti automaticky vložia do karty incidentu z CMS, vrátane metód eliminácie alebo kompenzácie negatívnych dopadov.

Systém riadenia incidentov pomáha aj pri vyšetrovaní incidentov informačnej bezpečnosti a poskytuje analytikom informácie o indikátoroch kompromisu a potenciálnych uzloch informačnej infraštruktúry ovplyvnených incidentom.

Monitorovanie zraniteľností v informačných systémoch

Ďalším prípadom použitia systému riadenia zraniteľnosti je skenovanie na požiadanie.

Zákazník nezávisle na sebe vygeneruje zoznam systémového a aplikačného softvéru a komponentov nainštalovaných v uzle (AWP, server, DBMS, PAC SZI, sieťové zariadenie), pomocou vstavaných nástrojov alebo nami vyvinutého skriptu, systémového a aplikačného softvéru a komponentov, prenesie tento zoznam do CMS a dostane správu o zistených zraniteľnostiach a pravidelných oznámeniach o nich postavenie.

Rozdiely medzi systémom a bežnými skenermi zraniteľnosti:

  • Nevyžaduje inštaláciu monitorovacích agentov na uzloch.
  • Nevytvára záťaž v sieti, pretože samotná architektúra riešenia neposkytuje agentov a skenovacie servery.
  • Nezaťažuje hardvér, pretože zoznam komponentov je tvorený systémovými príkazmi alebo odľahčeným skriptom otvoreného zdroja.
  • Eliminuje možnosť úniku informácií. Perspektívne monitorovanie nemôže spoľahlivo vedieť nič o fyzickom a logickom umiestnení alebo funkčnosti uzla v informačnom systéme. Jedinou informáciou, ktorá opúšťa kontrolovaný obvod zákazníka, je súbor txt so zoznamom softvérových komponentov. Obsah tohto súboru je skontrolovaný a zákazník ho nahrá do CMS.
  • Aby systém fungoval, nepotrebujeme účty na kontrolovaných uzloch. Informácie zhromažďuje administrátor stránky vo svojom vlastnom mene.
  • Bezpečná výmena informácií prostredníctvom ViPNet VPN, IPsec alebo https.

Pripojenie k službe na správu zraniteľností Prospective Monitoring pomáha zákazníkovi splniť požiadavku ANZ.1 „Identifikácia, analýza zraniteľností informačného systému a rýchle odstránenie novo identifikovaných zraniteľností“ objednávok FSTEC č. 17 a 21. Naša spoločnosť je držiteľom licencie FSTEC Ruska na technickú ochranu dôverných údajov informácie.

Náklady

Minimálne náklady sú 25 000 rubľov ročne pre 50 uzlov pripojených k systému s platnou zmluvou o pripojení

V niektorých prípadoch je výskyt zraniteľností spôsobený použitím vývojových nástrojov rôzneho pôvodu, ktoré zvyšujú riziko sabotážnych chýb v programovom kóde.

Zraniteľnosti sa objavujú v dôsledku pridania komponentov tretích strán alebo bezplatného kódu (open source) do softvéru. Cudzí kód sa často používa „ako je“ bez dôkladnej analýzy a testovania bezpečnosti.

Jeden by nemal vylúčiť prítomnosť interných programátorov v tíme, ktorí zámerne zavádzajú do vytváraného produktu ďalšie nezdokumentované funkcie alebo prvky.

Klasifikácia zraniteľností softvéru

Zraniteľnosti vznikajú v dôsledku chýb, ktoré sa vyskytnú počas fázy návrhu alebo pri písaní softvérového kódu.

V závislosti od štádia vzniku sa tento typ hrozby delí na chyby zabezpečenia týkajúce sa návrhu, implementácie a konfigurácie.

  1. Chyby v dizajne je najťažšie odhaliť a opraviť. Jedná sa o nepresnosti algoritmov, záložiek, nezrovnalosti v rozhraní medzi rôznymi modulmi alebo v protokoloch pre interakciu s hardvérom, zavádzanie neoptimálnych technológií. Ich eliminácia je časovo veľmi náročný proces, a to aj preto, že sa môžu objaviť v zjavných prípadoch - napríklad pri prekročení stanoveného objemu premávky alebo pri pripojení veľkého množstva ďalších zariadení, čo komplikuje zabezpečenie požadovanej úrovne bezpečnosti a vedie k vzniku spôsobov, ako obísť bránu firewall.
  2. Zraniteľnosti implementácie sa objavujú vo fáze písania programu alebo zavádzania bezpečnostných algoritmov do neho. Toto je nesprávna organizácia výpočtového procesu, syntaktické a logické chyby. Existuje však riziko, že chyba by mohla viesť k pretečeniu nárazníka alebo k iným problémom. Ich nájdenie trvá dlho a ich eliminácia znamená opravu určitých častí strojového kódu.
  3. Chyby konfigurácie hardvéru a softvéru sú bežné. Ich častým dôvodom je nedostatočný vývoj kvality a nedostatok testov na správne fungovanie ďalších funkcií. Do tejto kategórie môžu spadať aj príliš jednoduché heslá a predvolené účty ponechané nezmenené.

Podľa štatistík sa zraniteľnosť obzvlášť často nachádza v populárnych a veľmi rozšírených produktoch - desktopových a mobilných operačných systémoch, prehľadávačoch.

Riziká používania zraniteľných programov

Programy, v ktorých sa nachádza najväčší počet chýb zabezpečenia, sú nainštalované takmer na všetkých počítačoch. Kybernetickí zločinci majú priamy záujem na nájdení takýchto nedostatkov a písaní pre nich.

Pretože od odhalenia zraniteľnosti po zverejnenie opravy (opravy) trvá dlho, existuje veľa príležitostí na infikovanie počítačových systémov prostredníctvom bezpečnostných dier v kóde. V takom prípade stačí používateľovi otvoriť iba raz, napríklad škodlivý súbor PDF s zneužitím, po ktorom útočníci získajú prístup k údajom.

V druhom prípade dôjde k infekcii podľa nasledujúceho algoritmu:

  • Používateľ dostane e-mail s phishingom od dôveryhodného odosielateľa e-mailom.
  • K listu je pripojený exploitný súbor.
  • Ak sa používateľ pokúsi súbor otvoriť, počítač je infikovaný vírusom, trójskym koňom (ransomware) alebo iným škodlivým programom.
  • Kybernetickí zločinci získavajú neoprávnený prístup do systému.
  • Cenné dáta sa kradnú.

Výskum uskutočňovaný rôznymi spoločnosťami (Kaspersky Lab, Positive Technologies) ukázal, že takmer v každej aplikácii vrátane antivírusov sa vyskytujú chyby zabezpečenia. Preto je pravdepodobnosť inštalácie softvérového produktu, ktorý obsahuje chyby rôzneho stupňa kritickosti, veľmi vysoká.

Aby ste minimalizovali počet dier v softvéri, je potrebné použiť SDL (Security Development Lifecycle). Technológia SDL sa používa na zníženie počtu chýb v aplikáciách vo všetkých fázach ich vytvárania a údržby. Pri navrhovaní softvéru teda špecialisti na informačnú bezpečnosť a programátori simulujú kybernetické hrozby s cieľom nájsť zraniteľné miesta. Počas programovania sú do procesu zahrnuté automatické nástroje, ktoré okamžite hlásia potenciálne chyby. Vývojári sa snažia výrazne obmedziť funkčnosť, ktorá je k dispozícii neovereným používateľom, a tak znížiť útočnú plochu.

Aby ste minimalizovali dopad a poškodenie zraniteľnosťou, je potrebné dodržiavať niektoré pravidlá:

  • Okamžite nainštalujte opravy (opravy) vydané vývojármi pre aplikácie alebo (najlepšie) povoľte režim automatickej aktualizácie.
  • Pokiaľ je to možné, neinštalujte pochybné programy, ktorých kvalita a technická podpora vyvolávajú otázky.
  • Na vyhľadanie bezpečnostných chýb a v prípade potreby na aktualizáciu softvéru použite špeciálne skenery zraniteľnosti alebo špecializované funkcie antivírusových produktov.

Ďalším spôsobom, ako sa na tento problém pozerať, je, že spoločnosti musia rýchlo zareagovať, keď je aplikácia zraniteľná. To si vyžaduje, aby IT oddelenie dokázalo definitívne sledovať nainštalované aplikácie, komponenty a opravy pomocou automatizačných a priemyselných štandardných nástrojov. V priemysle existuje úsilie štandardizovať softvérové \u200b\u200bznačky (19770-2), čo sú súbory XML nainštalované s aplikáciou, komponentom alebo opravou, ktoré identifikujú nainštalovaný softvér, a v prípade komponentu alebo opravy, ktorej aplikácie sú súčasťou. Značky obsahujú smerodajné informácie o vydavateľovi, informácie o verzii, zoznam súborov s názvom súboru, bezpečný hash súboru a veľkosť, pomocou ktorej je možné potvrdiť, že nainštalovaná aplikácia je v systéme a binárne súbory neboli upravené treťou stranou. Tieto štítky sú digitálne podpísané vydavateľom.

Ak je známa zraniteľnosť, oddelenia IT môžu pomocou svojho softvéru na správu majetku okamžite identifikovať systémy so zraniteľným softvérom a môžu podniknúť kroky na aktualizáciu systémov. Značky môžu byť súčasťou opravy alebo aktualizácie, pomocou ktorej je možné overiť, či je oprava nainštalovaná. Týmto spôsobom môžu oddelenia IT využívať zdroje, ako je napríklad NIST National Vulnerability Database, ako nástroj na správu svojich nástrojov na správu aktív, takže keď spoločnosť NVD predloží zraniteľnosť, môže IT okamžite porovnať nové chyby so svojimi. už teraz.

Existuje skupina spoločností pracujúcich prostredníctvom neziskovej organizácie IEEE / ISTO s názvom TagVault.org (www.tagvault.org) s vládou USA na štandardnej implementácii ISO 19770-2, ktorá umožní túto úroveň automatizácie. V určitom okamihu budú tieto značky zodpovedajúce tejto implementácii pravdepodobne povinné v prípade softvéru predávaného vláde USA v určitom okamihu v najbližších niekoľkých rokoch.

Je teda dobrým zvykom nezverejňovať informácie o tom, ktoré aplikácie a konkrétne verzie softvéru používate, ale ako už bolo uvedené, môže to byť ťažké. Chcete sa ubezpečiť, že máte presný a aktuálny softvérový inventár, ktorý sa pravidelne porovnáva so zoznamom známych chýb zabezpečenia, napríklad NVID od NVD, a že IT môžu podniknúť okamžité kroky na pripomenutie hrozby. Toto je spolu s najnovšou detekciou prieniky, antivírusové skenovanie a ďalšie metódy blokovania životného prostredia, bude prinajmenšom veľmi ťažké ohroziť vaše prostredie, a ak / keď sa to stane, nebude to po dlhú dobu zistené.