Tehnoloogia tugineb kodeerimisel. Just programmeerimine on aidanud luua miljardi dollari väärtuses ettevõtteid ja viia inimesed raketiga kuule. Kuid asi ei ole ainult programmeerimises. Mõnikord on küsimus ka selles, kuidas kodeeritakse. See on ülitähtis, eriti turvalisuse vaatenurgast. Vale kodeerimistava võib süsteemides põhjustada tõsiseid turvanõrkusi.
Võtame OWASP-i 2017. aasta peamiste haavatavuste loendi. Haavatavused, näiteks süstimine ja vigane autentimine, on elemendid, millega saab arvestada arendamise etapis. Nõuetekohaste kodeerimise turbetavade järgimine päästaks süsteemid ohustatusest. OWASP-i enda Tarkvaratagamise küpsusmudel (Software Assurance Maturity Model – SAMM) on hea koht, kust alustada.
OWASP-i SAMM
Strateegia ja mõõdikud: Keskendub tarkvara turvalisuse tagamise programmi raamistiku loomisele organisatsioonis.
Poliitika ja vastavus: Eesmärk on mõista ja täita väliseid juriidilisi ja regulatiivseid nõudeid, juhindudes samas ka siseturvalisuse standarditest, et tagada vastavus organisatsiooni ärieesmärkidele sobival viisil.
Koolitamine ja juhendamine: Turvalise tarkvara arendamise elutsüklikoolituse pakkumine, mis on spetsiifiline igale rollile.
Ohu hindamine: See hõlmab riskide tuvastamist ja mõistmist projekti tasandil. Põhineb arendatava tarkvara funktsionaalsusel ja käituskeskkonna omadustel.
Turvalisusnõuded: Vajalike turvakontrollide täpsustamine, sealhulgas tarnijalepingutes. Neid kontrolle tuleks auditeerida.
Turvaline arhitektuur: Viitab tarkvaraarenduse raamistike vastuvõtmisele, turvaliste arendusmustrite tuvastamisele ja vaikimisi turvalise metoodika kinnistamisele.
Arendamise analüüs: Keerukal kujul hõlmab see tava arenduslahenduste üksikasjalikku kontrollimist andmetasandil ja põhiootuste jõustamist projektihindamise läbiviimisel ja leidude ülevaatamist enne väljastamise heakskiitmist.
Rakendamine: Tarkvara kontroll lähtekoodi ja konfiguratsiooni tasemel turvaaukude leidmiseks.
Turvalisuse testimine: See hõlmab sissetungirünnete imiteerimist ja rakendusspetsiifiliste testide automatiseerimist kogu arendusprotsessi vältel ja märkimisväärselt enne kasutuselevõttu.
Probleemide haldamine: Probleemide halduse eesmärk on haavatavusele reageerimise meeskonna loomine, veateadete koostamise protsessi juurutamine, algpõhjuste analüüsi läbiviimine ja väljalaskepõhiste mõõdikute kogumine.
Keskkonna karmistamine: Keskendub organisatsiooni tarkvara majutava käituskeskkonna kindlustamisele. Põhimõtteliselt tuleb kontrollida konfiguratsioone, installeerida kriitilised versiooniuuendused ja parandused ning võtta kasutusele võrgukaitsetööriistad.
Operatiivne võimaldamine: Selle eesmärk on koguda tarkvara loomise projektimeeskondadest turbekriitilist teavet ning edastada see tarkvara kasutajatele ja operaatoritele.
<h2>Turvalisus kavandamise faasis
Üks võimalus haavatavuste vähendamiseks on nende käsitlemine projekteerimisetapis. Määratletud turbepoliitika rakendamine arhitektuuris on hea algus. Lisaks võimaldaks lähtekoodianalüüsi rakendamine tarkvaraarenduse elutsükli igas etapis haavatavuste kiiremat kõrvaldamist.
Lisaks tegelikule kodeerimisele on sama tähtis ka usaldusväärsete ressursside olemasolu. Heaks kohaks, kust alustada, on OWASP-i Turvalise kodeerimise praktikad – lühijuhend.
Ohu modelleerimine
Ohu mudel tähistab kogu asjakohast teavet, mis mõjutab rakenduse turvalisust. See viitab tegevuste kogumile, mille eesmärk on turvalisuse parandamine. See saavutatakse eesmärkide ja nõrkade kohtade kindlaksmääramisega, millele järgneb vastumeetmete määratlemine. Üldiselt hõlmab ohu modelleerimise protsess järgmisi etappe:
1. Hindamise skoop.
2. Tuvastage ohuagendid ja võimalikud rünnakud.
3. Millised on olemasolevad vastumeetmed.
4. Tuvastage haavatavused, mida saab kasutada.
5. Seadke määratletud riskid tähtsuse järjekorda.
6. Tuvastage vastumeetmed ohu vähendamiseks.
Sobivate juurdepääsu tasemete määratlemine
Ideaalis tuleb neid põhimõtteid järgida toote/teenuse kavandamise etapis. Juurdepääsutasemed tuleks asjakohaselt määratleda, tagamaks, et süsteemi ei ohustata ühelgi hetkel. See tähendab, et kasutajatel peaks olema oma ülesannete täitmiseks vaid minimaalselt vajalikud õigused.
Sellega seotult tuleb ka siin kaaluda sisselogimisfunktsioone. Näiteks pakub tänapäeval enamik rakendusi esmakordsetele kasutajatele sisselogimise etapis vaikimisi parooli. Siin võiks pakutavad vaikeparoolid muuta keerukamaks ja panna need kehtima lühikese aja jooksul. See vähendab riski, et ründaja pääseb süsteemi.
Rakenduse lubamine valgesse nimekirja
Lubatud rakenduste loend on süsteemis töötavate lubatud rakenduste loendi koostamine. Idee on lubada vajalikke programme, mitte kanda pahatahtlikke rakendusi musta nimekirja.
Alati on oht, et ründajad asendavad lubatute nimekirjas olevad rakendused pahatahtlikega. Seetõttu on soovitatav, et rakenduste lubamise lisatarkvara puhul kasutataks lisaks tarkvaraarendajatega seotud digitaalallkirjadele krüptograafilisi räsimistehnikaid.
Lähtekoodi analüüs
Lihtsamalt öeldes viitab see lähtekoodi automatiseeritud testimisele. Keskendutakse rakenduse silumisele. Lähtekoodi analüüs on staatiline või dünaamiline. Staatilise analüüsi puhul silutakse koodi ilma seda käivitamata. Nii on sisuliselt suurem võimalus turvaaukude avastamiseks arenduse ajal enne rakenduse avaldamist. Pärast staatilist analüüsi viiakse läbi dünaamiline analüüs. See hõlmab rakenduste testimist reaalajas.
Lähtekoodi analüüsi üks suurimaid eeliseid on see, et see välistab vajaduse teha oletusi võimalike haavatavuste kohta.
Puhastage andmed
Desinfitseerimine tähendab, et midagi hoitakse puhtana kõigest kahjulikust. Sama on tähendus ka tehnoloogias. Võtame näiteks HTML-i. HTML-i puhastamine hõlmab HTML-dokumendi uurimist ja uue HTML-dokumendi koostamist, mis säilitab ainult need sildid, mis on hinnatud turvalisteks ja soovitavateks. Antud kontekstis aitab HTML-i puhastamine leevendada selliseid rünnakuid nagu saidiülene skriptimine.
Muidugi võib andmete puhastamist läbi viia mitmel kujul. Puhvri ületäitumise rünnakute vältimiseks võib lihtsalt tagada andmevälja maksimaalse pikkuse. See võib SQL-i süstimisrünnakute eest kaitsmiseks tähendada päringute varustamist parameetritega.
Andmete puhastamine on seotud ka muude aspektidega, näiteks digitaalse identiteedi platvormidel piltide üleslaadimise turvalisuse kontrollimisega. Üha rohkem andmesalvi salvestab ja jagab fotosid tuvastavate dokumentide kohta. Seetõttu tuleks korraldada turbekontroll, tagamaks, et üles laaditud sisu sisaldab käivitatava sisu asemel ainult kavandatud tüüpi kujutisi.
Takistage kontrollimatu koodi täitmine
Üks viis koodi kontrollimatu täitmise vältimiseks on eval() tüüpi funktsioonide kasutamise vältimine. See hõlmab selliseid funktsioone nagu JavaScripti funktsioon SetTmer(). Seda tüüpi funktsioonid võimaldavad kinnitamata koodi rakendamist.
Hoidke end arengutega kursis
Haavatavused ilmnevad iga päev. Oluline on neid haavatavusi tähelepanelikult jälgida. CVE Details on üks selline ressurss, mis aitab jälgida tõsiseid haavatavusi. Veebileht uuendab oma nimekirja regulaarselt.
Lõppude lõpuks on turvalisus pidevalt arenev valdkond. Ründajad leiavad süsteemidesse tungimiseks iga päev uusi lünki. Olgu tegu teie haavatavuse hindamise protseduuride või digitaalsete ekspertiisitööriistadega, turbevahendid ja mehhanismid peavad samuti olema ajakohased.
Turvalise kodeerimise tavade osas on protsess märksa keerulisem. Loodame, et antud ülevaade aitas teil paremini mõista, milles see seisneb.