Turvallinen ohjelmointi

Suojattu ohjelmointi on ohjelmistokehitystekniikka  , joka estää haavoittuvuuksien vahingossa lisäämisen ja suojaa haittaohjelmia ja luvatonta käyttöä vastaan . Virheet ja loogiset virheet ovat tärkein syy ohjelmiston haavoittuvuuksiin.

Suojatut ohjelmistot ovat ohjelmistoja, jotka on kehitetty käyttämällä toimenpiteitä, joiden tarkoituksena on estää ohjelman haavoittuvuuksien esiintyminen ja poistaminen [1] .

Turvallisen ohjelmoinnin tehtävänä on suojata käyttäjän tietoja varkauksilta ja vaurioilta, ylläpitää järjestelmän hallintaa. Vaarallinen ohjelma on mahdollinen kohde hyökkääjälle, joka voi käyttää olemassa olevia haavoittuvuuksia tarkastellakseen, muuttaakseen tai poistaakseen olemassa olevia tietoja, vaikuttaa ohjelmien ja palveluiden toimintaan (käynnistää tai pysäyttää) ja ruiskuttaa järjestelmään haitallista koodia [2] .

Terminologia

Englanninkielisessä kirjallisuudessa on kaksi termiä, jotka voidaan kääntää turvalliseksi ohjelmoimiseksi.

Puolustava ohjelmointi on ohjelmistokehityksen periaate , jossa kehittäjät yrittävät ottaa huomioon kaikki mahdolliset virheet ja viat, eristää ne mahdollisimman paljon ja mahdollisuuksien mukaan palauttaa ohjelman suorituskyvyn toimintahäiriöiden sattuessa. Tämän pitäisi tehdä ohjelmistosta vakaampi ja vähemmän haavoittuva. Esimerkiksi tämän periaatteen laitteistototeutus on vahtikoiran ajastin , tarkistussummalaskenta  - pakettidatan lähetyksen virheiden havaitsemiseksi [3] .

Suojattu koodaus on tekniikka sellaisten ohjelmien kirjoittamiseen , jotka kestävät haittaohjelmien ja tunkeilijoiden hyökkäyksiä. Suojattu ohjelmointi auttaa suojaamaan käyttäjätietoja varkauksilta tai korruptiolta. Lisäksi suojaamaton ohjelma voi antaa hyökkääjälle oikeuden hallita käyttäjän palvelinta tai tietokonetta; Seuraukset voivat vaihdella palvelun epäämisestä yhdelle käyttäjälle arkaluonteisten tietojen vaarantumiseen , palvelun menettämiseen tai tuhansien käyttäjien järjestelmien vahingoittumiseen [2] .

Tärkeys

Järjestelmän turvallisuuden ja toimivuuden varmistaminen on olennainen osa sen suunnitteluvaihetta ( järjestelmän suunnittelu) [4] . Tietoturvavaatimukset tietyille IT -tuotteille ja -järjestelmille asetetaan olemassa olevien ja ennustettujen turvallisuusuhkien, noudatettavan turvallisuuspolitiikan ja myös niiden soveltamisehtojen perusteella [5] . Turvaratkaisujen käyttöönotto järjestelmän kehittämisen jälkeen on monimutkaista ja kallista. Siksi turvallisuusvaatimukset tulee ottaa huomioon alusta alkaen koko järjestelmän elinkaaren ajan [4] .

Tietojärjestelmä on jaettu fyysiseen ja loogiseen tasoon. Sen ymmärtäminen, mitä tarkalleen on suojattava ulkoisilta tekijöiltä, ​​auttaa tehokkaimmassa suojatoimenpiteiden valinnassa ja soveltamisessa. Selkeä raja tasojen välillä tulisi määrittää turvallisuuspolitiikan avulla, joka ohjaa tiettyä tieto- ja tietotekniikkajoukkoa , jolla on fyysiset rajat. Lisäongelmana on, että sama tietokone tai palvelin voi isännöidä sekä julkista että yksityistä tietoa. Tämän seurauksena useita suojauskäytäntöjä voidaan soveltaa samaan koneeseen tai samassa järjestelmässä. Siksi tietojärjestelmää kehitettäessä turvallisuusrajat tulee ottaa huomioon ja kuvata asiaa koskevissa dokumentaatioissa ja järjestelmän suojauskäytännöissä [4] . Sen kehittäjien on kyettävä varmistamaan järjestelmän turvallisuus suunnittelussa , kehittämisessä , hallinnassa ja konfiguroinnissa , integroinnissa, testaa kunnolla [6] .

Analyysi (manuaalinen tai automaattinen) ja suojaus on kallis toimenpide, joka lisää ohjelmistotuotteen kokonaiskustannuksia . Aikaisemmin riskien täydellinen eliminointi oli yleinen turvallisuustavoite. Nykyään tiedetään, että kaikkien riskien poistaminen ei ole kustannustehokasta. Kustannus-hyötyanalyysi olisi suoritettava jokaisesta ehdotetusta valvontajärjestelmästä. Joissakin tapauksissa turvallisemman järjestelmän edut eivät välttämättä oikeuta suoria ja välillisiä kustannuksia. Edut eivät sisällä vain rahallisten tappioiden estämistä; Kannattaa ottaa huomioon esimerkiksi maineen menetys. Suorat kustannukset sisältävät tämän tekniikan hankinta- ja asennuskustannukset; epäsuoria kustannuksia ovat järjestelmän suorituskyvyn heikkeneminen ja työntekijöiden lisäkoulutus [7] .

Periaatteet

Tällä hetkellä on olemassa erilaisia ​​tekniikoita suojattujen ohjelmistojen kehittämiseen . Mutta on joukko periaatteita, jotka otetaan huomioon kaikissa lähestymistavoissa [8] :

Neljästä viimeisestä ominaisuudesta on tullut perusta Trustworthy computing (TwC) ( Eng.  Trustworthy computing ) ("Computations that are trustworthy") - Microsoft Corporationin aloitteille , joiden päätehtävänä on kiinnittää kehittäjien huomio näiden vaatimusten varmistaminen ohjelmistokehityksen jokaisessa vaiheessa [9] .

Ohjelmiston suojausperiaatteita on monia, joista useimmat ovat samankaltaisia. Niiden yleistyksenä voidaan pitää yllä olevia periaatteita [10] .

Haavoittuvuuksien luokittelu ja tyypit

Luokittelut

Standardoitujen haavoittuvuuskuvausten käyttö yksinkertaistaa tietoturva-asiantuntijoiden työtä. Tällä hetkellä on olemassa useita suosittuja luokituksia [11] :

Nykyaikaiset koodianalysaattorit ja automatisoidut auditoijat voivat hyödyntää samanlaisia ​​haavoittuvuuksia. Tämä lisää luottamuksen tasoa tuotteeseen ja voi olla myös tärkeää raportoitaessa ohjelmistotuotteen haavoittuvuuksista [13] .

On myös muita luokituksia. Heidän kanssaan työskennellessä tulee kiinnittää huomiota tekijöihin, koska jokainen luokitusjärjestelmä on luotava alan asiantuntijoiden toimesta [14] .

Mittarit

Jokainen ohjelma on mahdollinen hyökkääjien kohde. Kun he ovat löytäneet haavoittuvuuksia sovelluksista tai palveluista, he yrittävät käyttää niitä luottamuksellisten tietojen varastamiseen, tietojen turmelemiseen, tietokonejärjestelmien ja verkkojen hallintaan [15] . Haavoittuvuuden ominaisuuksien kuvaamiseen asiantuntijat käyttävät CVSS- haavoittuvuusriskien pisteytysjärjestelmää . Se on asteikko, jonka perusteella pisteet annetaan. Mittarijärjestelmä on suunniteltu priorisoimaan haavoittuvuuksien korjaamista. Jokainen asteikko viittaa tiettyyn semanttiseen osaan, jota kutsutaan metriikaksi. Tällaisia ​​mittareita on kolme [16] [17] [11] :

Kaksi viimeistä metriikkaa ovat luonteeltaan apuvälineitä ja niitä käytetään vain perusmetriikan indikaattoreiden säätämiseen eri erityispiirteet huomioiden [18] .

Haavoittuvuuksien tyypit

Luettelo yleisistä virheistä, jotka vaarantavat nykyaikaisten ohjelmien turvallisuuden [19] :

On mahdotonta luetella kaikkia tunnettuja haavoittuvuuksia , koska uusia ilmaantuu joka päivä. Tämä luettelo sisältää yleisiä haavoittuvuuksia, joihin on helppo sitoutua, mutta joiden seuraukset voivat olla katastrofaalisia. Esimerkiksi Blaster-madon leviäminen johtui vain kahden koodirivin virheestä [22] .

Puolustus

Oikea strategia bugeilta ja haavoittuvuuksilta suojautumiseen on estää ja estää niitä. Tämä edellyttää, että kehittäjä tarkistaa jatkuvasti syötetyt tiedot. Esimerkiksi paras tapa suojautua puskurin ylivuotohyökkäyksiltä on varmistaa, että syöttötiedot eivät ylitä sen puskurin kokoa, johon ne on tallennettu. Tietokantaan lähetettävät tiedot vaativat validoinnin suojautuakseen hyökkäyksiltä, ​​kuten SQL-injektiolta. Jos tietoja lähetetään verkkosivulle, se on tarkistettava XSS :ää vastaan . Liiallinen tarkistusten määrä vaikeuttaa kuitenkin ohjelman lähdekoodin kehittämistä ja voi puolestaan ​​johtaa uusien virheiden ilmaantumiseen, joten tämä strategia tulisi yhdistää muihin [23] .

Kääntäjä tai käyttöjärjestelmä voi tarjota virhesuojausmekanismeja . GCC-kääntäjä sallii _builtin_object_size () -funktion käytön saada objektin koko osoittimella tähän objektiin, joten sen käyttö tekee kopiointitoimenpiteestä turvallisempaa. MSVC , kun käytetään /RTCs -lippua, mahdollistaa käännösajan tarkistuksen paikallisten muuttujien ylivuotojen varalta, alustamattomien muuttujien käytön ja pinon osoittimen vioittumisen, joka johtuu sopimattomista kutsukäytännöistä. CRED (C range error detector) -teknologian ja pinon suojatun osan edessä olevien erityisten lisäosien ( StackGuard , SSP ) käyttö mahdollistaa osittain taulukon ylivuotoon ja pinon tuhoutumiseen liittyvien hyökkäysten havaitsemisen ja estämisen [24] .

Käyttöjärjestelmä voi myös ohjata ohjelman suorittamista. Tämä strategia voi olla hyödyllinen, jos tämän ohjelman lähdekoodia ei tunneta. ASLR (Address Space Schema Randomization) on käyttöjärjestelmän suojausominaisuus, joka on suunniteltu estämään mielivaltaisen koodin suorittaminen. ASLR on tällä hetkellä tuettu sekä Linuxissa että Windowsissa . Suojaustasoa nostetaan käyttämällä ei-suoritettavaa pinoteknologiaa: W^X, PaX [24] .

Tyypillisiä verkkopalveluita vastaan ​​tehtyjä hyökkäyksiä ovat SQL-injektio, XSS, CSRF ja clickjacking . Nykyaikaiset puitteet auttavat kehittäjiä luomaan turvallisia verkkosovelluksia. Valmiiden ratkaisujen avulla et joudu käsittelemään lukuisia saapuvien tietojen tarkastuksia: HTTP -pyyntöotsikoista niiden sisältöön. Se tarjoaa myös turvallisemman tavan työskennellä tietokannan kanssa  - ORM [25] [26] .

Vahinko

Hyökkääjät voivat käyttää haavoittuvuuksia koskevia tietoja virusten kirjoittamiseen . Esimerkiksi yksi ensimmäisistä tunnetuista verkkomatoista ( Morris-virus ) vuonna 1988 hyödynsi Unix- sormidaemonin haavoittuvuuksia, kuten puskurin ylivuotoa levittääkseen koneiden välillä. Silloin tartunnan saaneiden autojen määrä oli noin 6 tuhatta [27] , ja taloudelliset vahingot vaihtelivat US Accounts Chamberin mukaan 10-100 miljoonan dollarin välillä [28] .

Vuonna 2016 tietokonevirukset aiheuttivat 450 miljardin dollarin vahinkoa maailmantaloudelle [29] [30] .

Vuonna 2017 WannaCry- viruksen aiheuttaman vahingon arvoksi arvioitiin miljardi dollaria. Infektioita on raportoitu ainakin 150 maassa [31] [32] [33] . Virus käytti EternalBlue - hyödynnystä SMB -protokollan puskurin ylivuotohaavoittuvuuden hyväksi [34] [35] [36] [37] .

Muistiinpanot

  1. GOST R 56939-2016, 2016 , Termit ja määritelmät, s. 2.
  2. 1 2 Secure Coding Guide -oppaan esittely .
  3. Puolustava ohjelmointi .
  4. 1 2 3 Engineering Principles for Information Technology Security, 2004 , Security Foundations.Principle 2, pp. 7.
  5. Information Technology Security Assessment Criteria, 2002 , General Provisions, ss. III-IV.
  6. Tietotekniikan turvallisuuden suunnitteluperiaatteet, 2004 , Security Foundations, s. 6-8.
  7. Tietotekniikan turvallisuuden suunnitteluperiaatteet, 2004 , Security Foundations. Periaate 5, s. kahdeksan.
  8. Nykyaikaiset tekniikat luotettavien ja turvallisten ohjelmien kehittämiseen, 2008 , s. 25-26.
  9. Nykyaikaiset tekniikat luotettavien ja turvallisten ohjelmien kehittämiseen, 2008 , s. 26.
  10. Turvallisen ohjelmoinnin HOWTO - Turvallisen ohjelmiston luominen, 2015 , Turvallisuusperiaatteet, s. 7-8.
  11. 1 2 Hakkerilehti: Me mittaamme haavoittuvuuksia, 2009 , s. 48-51.
  12. OSVDB: FIN, 2016 .
  13. Hacker Magazine: Haavoittuvuuksien mittaaminen, 2009 , Luokittimien käyttäminen skannereissa, s. 51: ”Nykyaikaiset automatisoidut auditoijat räätälöidään yleensä tietyn tietopohjan mukaan. Ensinnäkin se on arvostettu ja toiseksi hyödyllinen. Esimerkiksi valmistautuessaan jonkin nykyaikaisen standardin (NERC-CIP, PCI , FISMA, GLBA tai HIPAA) mukaiseen sertifiointiin, ylläpitäjälle annetaan mahdollisuus saada malliraportti, joka vastaa tilintarkastajan antamaa asiakirjaa.
  14. Hacker Magazine: Measuring Vulnerabilities, 2009 , Selected Classifications, pp. 51: "Joskus voit nähdä täysin itse tehtyjä luokituksia Webissä ... Luonnollisesti tällaisella järjestelmällä ei ole paljon painoa, koska sen pitäisi olla todellisten asiantuntijoiden laatimassa, jotka ymmärtävät ongelman olemuksen."
  15. Johdatus suojatun koodauksen oppaaseen yhdellä silmäyksellä.
  16. Common Vulnerability Scoring System, 2006 , s.86.
  17. CVSS: Specification .
  18. CVSS:Specification , 1.2. Pisteytys: "Perusmittaria voidaan tarkentaa laskemalla ajallisia ja kontekstuaalisia mittareita, jotta ne kuvastavat paremmin haavoittuvuuden käyttäjälle aiheuttamaa riskiä."
  19. Ohjelmistoturvallisuuden 24 kuolemansyntiä: ohjelmointivirheet ja niiden korjaaminen, 2009 , Johdanto.
  20. Muotomerkkijonon haavoittuvuuden etsintämenetelmä, 2015 , Johdanto: "Jopa 90-luvun teoksissa osoitettiin, että virheellinen muotoilu merkkijonon kanssa voi johtaa vakaviin ohjelmiston tietoturvahaavoittuvuuksiin, kuten mielivaltaisen koodin suorittamiseen, oikeuksien eskaloitumiseen ja arkaluonteisia tietoja."
  21. Tietojen suojaus tietokonejärjestelmissä, 1975 , h) Psykologinen hyväksyttävyys: "On erittäin tärkeää, että käyttöliittymä on käyttäjäystävällinen, jotta käyttäjät soveltavat suojamekanismeja intuitiivisesti ja yksinkertaisesti oikealla tavalla. Jos käyttäjän mentaaliset esitykset suojaustavoitteista ovat yhdenmukaisia ​​hänen käytännössä käyttämiensä mekanismien kanssa, virheiden määrä minimoidaan. Jos käyttäjä joutuu kääntämään ajatuksensa suojauksesta täysin eri kielelle, hän tekee väistämättä virheitä.
  22. Suojattu koodaus C:ssä ja C++:ssa, 2013 , Kuva 1.2. W32.Blaster.Wormin käyttämä virheellinen logiikka: "W32.Blaster.Worm-madon käyttämät logiikkavirheet on esitetty kuvassa. 1.2. Vika on, että while-silmukkaa riveillä 21 ja 22 (jota käytetään isäntänimen poimimiseen pitkästä merkkijonosta) ei ole rajattu tarpeeksi."
  23. Suojattu koodaus C:ssä ja C++:ssa, 2013 , 2.6 Runtime Protection Strategies: Input Validation.
  24. 1 2 Suojattu koodaus C- ja C++-kielissä, 2013 , 2.6 Runtime Protection Strategies.
  25. Django Security .
  26. Ruby on Rails Security .
  27. Notes of a Computer Virus Researcher, 2005 , Taulukko 3.1, s. 90.
  28. Malware History, 2010 , NSA vs. Morris: $100 Million in Damage, s. 23.
  29. CNBC International: Kyberrikollisuus maksaa maailmantaloudelle 450 miljardia dollaria .
  30. The New Paper: Kyberrikollisuus maksoi maailmantaloudelle viime vuonna 620 miljardia dollaria .
  31. RBC: WannaCry-viruksen aiheuttaman vahingon arvoksi arvioitiin miljardi dollaria .
  32. 6abs: WannaCry-viruksen aiheuttama vahinko ylitti miljardin dollarin .
  33. Hi-Tech Mail.ru: Asiantuntijat nimesivät ennätysmäärän WannaCry-viruksen aiheuttamia vahinkoja .
  34. MS17-010: EternalBluen suuri sivuttamaton uima-altaan ylivuoto SRV Driverissa .
  35. WannaCry lunnasohjelma, jota käytetään laajalle levinneissä hyökkäyksissä kaikkialla maailmassa .
  36. CNews: Virusten aiheuttamat taloudelliset vahingot .
  37. Nettotappiot: Tietoverkkorikollisuuden maailmanlaajuisten kustannusten arviointi .

Kirjallisuus

Lue lisää

  • Seacord RC CERT C - suojattu  koodausstandardi . - 2008. - P. Pearson Koulutus. - 720p. — ISBN 9780132702461 .

Linkit