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] :
- suorituskyky ja hyödyllisyys ( usability , Englanti usability ) ;
- turvallisuus ( englanniksi security ) - kyky suojautua ulkoisilta uhilta, hyökkäyksiltä ja ylläpitää suorituskykyä sen jälkeen, kun ne on otettu huomioon ja poistettu;
- luotettavuus ( englanniksi reliability ) - ennustettava, oikea ja varma toiminta virheellisten alkutietojen tapauksessa;
- luottamuksellisuus ( englanniksi privacy ) - varmistaa turvallisen ja oikean työn luottamuksellisten tietojen kanssa;
- Liiketoiminnan eheyden ja oikeellisuuden varmistaminen ( englanniksi business integrity ) - ohjelman ylläpidon selkeä organisointi, läpinäkyvyyden, laillisuuden ja käyttäjän työn oikeellisuuden valvonta.
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] :
- CVE (Common Vulnerabilities and Exposures) - sanakirja tiettyjen tuotteiden haavoittuvuuksista;
- CWE(Common Weakness Enumeration) - tietokanta haavoittuvuuksista. Hankkeen päätavoitteena on tarjota kuvauksia yleisistä haavoittuvuuksista, tapoista estää, havaita ja korjata niitä;
- Security Focus BID;
- OSVDB(Open Sourced Vulnerability Database) – kolmen voittoa tavoittelemattoman organisaation luoma "avoin tietokanta haavoittuvuuksista". Lopetti työt 5.4.2016. Blogi jatkaa toimintaansa [12] ;
- Secunia - nauha tunnetun tanskalaisen Secunian haavoittuvuuksista tietokone- ja verkkoturvallisuuden alalla;
- IBM ISS X Force.
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] :
- Base ( englanniksi base ) - haavoittuvuusominaisuudet, jotka eivät riipu ajasta ja suoritusympäristöstä. Kuvaa haavoittuvuuden hyödyntämisen vaikeutta, mahdollista vahinkoa luottamukselliselle, eheydelle ja tiedon saatavuudelle;
- Temporal ( englanniksi temporal ) - mittari, joka ottaa huomioon aikatekijän, esimerkiksi ajan haavoittuvuuden korjaamiseen;
- Kontekstuaalinen ( englanniksi ympäristö ) - mittari, joka ottaa huomioon ohjelmiston ympäristön tiedot.
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
- ↑ GOST R 56939-2016, 2016 , Termit ja määritelmät, s. 2.
- ↑ 1 2 Secure Coding Guide -oppaan esittely .
- ↑ Puolustava ohjelmointi .
- ↑ 1 2 3 Engineering Principles for Information Technology Security, 2004 , Security Foundations.Principle 2, pp. 7.
- ↑ Information Technology Security Assessment Criteria, 2002 , General Provisions, ss. III-IV.
- ↑ Tietotekniikan turvallisuuden suunnitteluperiaatteet, 2004 , Security Foundations, s. 6-8.
- ↑ Tietotekniikan turvallisuuden suunnitteluperiaatteet, 2004 , Security Foundations. Periaate 5, s. kahdeksan.
- ↑ Nykyaikaiset tekniikat luotettavien ja turvallisten ohjelmien kehittämiseen, 2008 , s. 25-26.
- ↑ Nykyaikaiset tekniikat luotettavien ja turvallisten ohjelmien kehittämiseen, 2008 , s. 26.
- ↑ Turvallisen ohjelmoinnin HOWTO - Turvallisen ohjelmiston luominen, 2015 , Turvallisuusperiaatteet, s. 7-8.
- ↑ 1 2 Hakkerilehti: Me mittaamme haavoittuvuuksia, 2009 , s. 48-51.
- ↑ OSVDB: FIN, 2016 .
- ↑ 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.
- ↑ 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."
- ↑ Johdatus suojatun koodauksen oppaaseen yhdellä silmäyksellä.
- ↑ Common Vulnerability Scoring System, 2006 , s.86.
- ↑ CVSS: Specification .
- ↑ CVSS:Specification , 1.2. Pisteytys: "Perusmittaria voidaan tarkentaa laskemalla ajallisia ja kontekstuaalisia mittareita, jotta ne kuvastavat paremmin haavoittuvuuden käyttäjälle aiheuttamaa riskiä."
- ↑ Ohjelmistoturvallisuuden 24 kuolemansyntiä: ohjelmointivirheet ja niiden korjaaminen, 2009 , Johdanto.
- ↑ 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."
- ↑ 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ä.
- ↑ 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."
- ↑ Suojattu koodaus C:ssä ja C++:ssa, 2013 , 2.6 Runtime Protection Strategies: Input Validation.
- ↑ 1 2 Suojattu koodaus C- ja C++-kielissä, 2013 , 2.6 Runtime Protection Strategies.
- ↑ Django Security .
- ↑ Ruby on Rails Security .
- ↑ Notes of a Computer Virus Researcher, 2005 , Taulukko 3.1, s. 90.
- ↑ Malware History, 2010 , NSA vs. Morris: $100 Million in Damage, s. 23.
- ↑ CNBC International: Kyberrikollisuus maksaa maailmantaloudelle 450 miljardia dollaria .
- ↑ The New Paper: Kyberrikollisuus maksoi maailmantaloudelle viime vuonna 620 miljardia dollaria .
- ↑ RBC: WannaCry-viruksen aiheuttaman vahingon arvoksi arvioitiin miljardi dollaria .
- ↑ 6abs: WannaCry-viruksen aiheuttama vahinko ylitti miljardin dollarin .
- ↑ Hi-Tech Mail.ru: Asiantuntijat nimesivät ennätysmäärän WannaCry-viruksen aiheuttamia vahinkoja .
- ↑ MS17-010: EternalBluen suuri sivuttamaton uima-altaan ylivuoto SRV Driverissa .
- ↑ WannaCry lunnasohjelma, jota käytetään laajalle levinneissä hyökkäyksissä kaikkialla maailmassa .
- ↑ CNews: Virusten aiheuttamat taloudelliset vahingot .
- ↑ Nettotappiot: Tietoverkkorikollisuuden maailmanlaajuisten kustannusten arviointi .
Kirjallisuus
- Kaspersky K. Tietokonevirustutkijan muistiinpanot . - Peter, 2005. - s. 93, 103-104, 117-122. — 316 s. — ISBN 5469003310 .
- GOST R 56939-2016: Tietoturva. Turvallisten ohjelmistojen kehittäminen. Yleiset vaatimukset / Liittovaltion teknisten määräysten ja metrologian virasto. - Standartinform, 2016. - 24 s.
- GOST R ISO/IEC 25010-2015: Tietotekniikka. Järjestelmä- ja ohjelmistosuunnittelu. Järjestelmien ja ohjelmistojen vaatimukset ja laadunarviointi (SQuaRE). Laatumallit järjestelmistä ja ohjelmistotuotteista / Federal Agency for Technical Regulation and Metrology. - Standartinform, 2015. - 36 s.
- Venäjän valtion tekninen komissio . Ohjeasiakirja. Tietotekniikan turvallisuus. Tietotekniikan turvallisuuden arviointikriteerit . - 2002. - P. III-IV. - 48 p.
- Liiketoiminnan tietoturva. Tutkimus liiketoiminnan tietoturvan nykyisistä trendeistä. : Tutkimus / Kaspersky Lab. - 2014. - s. 14.
- Komarov A. Mittaamme haavoittuvuuksia // Hacker : Journal. - 2009. - Nro 04 (124) . - s. 48-51.
- Safonov V. O. Nykyaikaiset tekniikat luotettavien ja turvallisten ohjelmien kehittämiseen // Tietokonetyökalut koulutuksessa : Journal. - 2008. - Nro 06 . - s. 25-33.
- Vakhrushev I.A., Kaushan V.V., Padaryan V.A., Fedotov A.N. Muotoile merkkijonon haavoittuvuuden hakumenetelmä // Proceedings of ISP RAS. - 2015. - T. 27 , nro 4 . - S. 23-38 . - s. 25-33.
- Howard M., LeBlanc D., Viega J. 24 Ohjelmistosuojauksen kuolemansyntiä : Ohjelmointivirheet ja niiden korjaaminen . - McGraw Hill Professional, 2009. - 464 s. — ISBN 9780071626767 .
- Seacord RC Secure -koodaus C- ja C++ -muodoissa . - 2. - Addison-Wesley, 2013. - 600 s. — ISBN 9780132981972 .
- Stoneburner G., Hayden C., Feringa A. Tietotekniikan turvallisuuden suunnitteluperiaatteet (A Baseline for Achieving Security) (englanti) / National Institute of Standards and Technology . - Versio A. - 2004. - 33 s.
- Wheeler D.A. Suojattu ohjelmointi HOWTO - Suojatun ohjelmiston luominen . - 2015. - 186 s.
- Haittaohjelmahistoria (englanniksi) / BitDefender . - 2010. - s. 23-24. - 71 s.
- Howard M., LeBlanc D. Suojatun koodin kirjoittaminen . - 2. - Microsoft Press, 2002. - S. 43. - 512 s. — ISBN 9780735615885 .
Lue lisää
- Seacord RC CERT C - suojattu koodausstandardi . - 2008. - P. Pearson Koulutus. - 720p. — ISBN 9780132702461 .
Linkit
- Bondarenko, Maria . WannaCry-viruksen aiheuttaman vahingon arvoksi arvioitiin miljardi dollaria , Moskova: RBC (25. toukokuuta 2017). Haettu 23. lokakuuta 2017.
- Matjuhin, Grigory . Asiantuntijat nimesivät ennätysmäärän WannaCry-viruksen aiheuttamia vahinkoja Moskovassa: Hi-Tech Mail.ru (25. toukokuuta 2017). Haettu 23. lokakuuta 2017.
- Borovko, Roman . Virusten aiheuttamat taloudelliset vahingot , Moskova: CNews Analytics (2003). Haettu 23. lokakuuta 2017.
- Secure Coding Guide -oppaan esittely . https://developer.apple.com/ . Apple Inc. . Haettu: 23.10.2017.
- Django Software Foundation . Turvallisuus Djangossa . https://www.djangoproject.com/ _ Haettu: 5. joulukuuta 2017.
- Ruby on Rails -turvaopas . http://rubyonrails.org/ . Haettu: 5. joulukuuta 2017.
- Graham, Luke . Kyberrikollisuus maksaa maailmantaloudelle 450 miljardia dollaria: toimitusjohtaja , Yhdysvallat: CNBC International (7. helmikuuta 2017). Haettu 23. lokakuuta 2017.
- Aurinko, David . Kyberrikollisuus maksoi maailmantaloudelle viime vuonna 620 miljardia dollaria , Singapore: The New Paper (5. heinäkuuta 2017). Haettu 23. lokakuuta 2017.
- WannaCry-viruksen aiheuttama vahinko ylitti 1 miljardin dollarin (englanniksi) , USA: 6abc (25. toukokuuta 2017). Arkistoitu alkuperäisestä 15. lokakuuta 2017. Haettu 23. lokakuuta 2017.
- William Gamazo Sanchez (haavoittuvuustutkimus). MS17-010: EternalBluen suuri sivuttamaton uima-altaan ylivuoto SRV-ohjaimessa . http://blog.trendmicro.com/ . Trend Micro (2. kesäkuuta 2017). Haettu: 23.10.2017.
- WannaCry lunnasohjelma, jota käytetään laajalle levinneissä hyökkäyksissä kaikkialla maailmassa . https://securelist.com/ . ZAO Kaspersky Lab (12. toukokuuta 2017). Haettu: 23.10.2017.
- M. Tim Jones. Puolustava ohjelmointi (englanniksi) (linkki ei saatavilla) (1. helmikuuta 2005). Haettu 12. marraskuuta 2017. Arkistoitu alkuperäisestä 13. marraskuuta 2017.
- OSVDB: FIN (englanti) (downlink) . https://blog.osvdb.org/ (5. huhtikuuta 2016). Haettu 3. joulukuuta 2017. Arkistoitu alkuperäisestä 28. toukokuuta 2016.
- Yleinen haavoittuvuuspisteytysjärjestelmä v3.0 : Specification Document . https://www.first.org/ . ENSIMMÄINEN. Haettu: 12.11.2017.