Puskurin ylivuoto

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 6. tammikuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 22 muokkausta .

Puskurin  ylivuoto on ilmiö, joka ilmenee, kun tietokoneohjelma kirjoittaa tietoja muistiin varatun puskurin ulkopuolelle .

Puskurin ylivuodot johtuvat yleensä ulkoisesti vastaanotettujen tietojen ja muistin virheellisestä käsittelystä, kun ohjelmointialijärjestelmä ( kääntäjä tai tulkki ) ja käyttöjärjestelmä eivät ole suojanneet vahvasti . Ylivuodon seurauksena puskurin jälkeen (tai ennen sitä) [1] olevat tiedot voivat vioittua .

Puskurin ylivuoto on yksi suosituimmista tavoista hakkeroida tietokonejärjestelmiä [2] , koska useimmat korkean tason kielet käyttävät pinokehystekniikkaa  - tietojen sijoittamista prosessipinoon , ohjelmatietojen sekoittamista ohjaustietoihin (mukaan lukien järjestelmän aloitusosoite). pinokehys ja suoritettavan funktion palautusosoite).

Puskurin ylivuoto voi aiheuttaa ohjelman kaatumisen tai jumittua, mikä johtaa palvelunestoon ( DoS ). Tietyntyyppiset ylivuodot, kuten pinokehyksen ylivuoto, antavat hyökkääjän ladata ja suorittaa mielivaltaisen konekoodin ohjelman puolesta ja sen tilin oikeuksilla, jolta se ajetaan [3] .

Esimerkkejä tunnetaan, kun järjestelmäohjelmat käyttävät tietoisesti puskurin ylivuotoja olemassa olevien ohjelmistojen tai laiteohjelmistojen rajoitusten kiertämiseen. Esimerkiksi iS-DOS- käyttöjärjestelmä ( ZX Spectrum -tietokoneille ) käytti sisäänrakennetun TR-DOS :n puskurin ylivuotoominaisuutta käynnistääkseen käynnistyslataimen konekoodeissa (mitä ei voida tehdä tavallisilla TR-DOS-työkaluilla).

Turvallisuus

Ohjelmaa, joka käyttää haavoittuvuutta murtaakseen toisen ohjelman suojauksen, kutsutaan hyväksikäytöksi . Vaarallisimpia ovat hyväksikäytöt, joiden tarkoituksena on päästä pääkäyttäjätasolle , eli toisin sanoen oikeuksien eskalaatio . Puskurin ylivuodon hyödyntäminen saavuttaa tämän välittämällä ohjelmalle erityisesti muodostetun syötteen. Tällaiset tiedot ylittävät varatun puskurin ja muuttavat puskuria seuraavat tiedot muistissa . [neljä]

Kuvittele hypoteettinen järjestelmänhallintaohjelma , joka toimii pääkäyttäjän oikeuksilla – esimerkiksi käyttäjien salasanojen vaihtamisella . Jos ohjelma ei tarkista syötetyn uuden salasanan pituutta, kaikki tiedot, jotka ylittävät niiden varastointiin varatun puskurin koon, yksinkertaisesti kirjoitetaan puskurin jälkeen. Hyökkääjä voi lisätä konekielisiä ohjeita tälle muistialueelle , esimerkiksi shell -koodin , suorittamalla mitä tahansa toimintoa pääkäyttäjän oikeuksin - lisätä ja poistaa käyttäjätilejä, vaihtaa salasanoja, muuttaa tai poistaa tiedostoja jne. Jos suoritetaan tällä muistialueella, se on sallittu ja tulevaisuudessa ohjelma siirtää ohjauksen sille, järjestelmä suorittaa siellä sijaitsevan hyökkääjän konekoodin .

Hyvin kirjoitettujen ohjelmien tulee tarkistaa syöttötietojen pituus varmistaakseen, että se ei ole suurempi kuin varattu tietopuskuri. Ohjelmoijat kuitenkin usein unohtavat sen. Jos puskuri sijaitsee pinossa ja pino "kasvaa" (esimerkiksi x86 -arkkitehtuurissa ), puskurin ylivuotoa käyttämällä voit muuttaa suoritetun funktion paluuosoitetta, koska paluuosoite sijaitsee suoritetun toiminnon varaama puskuri. Siten on mahdollista suorittaa mielivaltainen konekoodin osa prosessin osoiteavaruudessa. Puskurin ylivuotoa voidaan käyttää korruptoimaan paluuosoite, vaikka pino "kasvaisi" (tässä tapauksessa paluuosoite on yleensä ennen puskuria). [5]

Jopa kokeneiden ohjelmoijien on vaikea määrittää, voiko tietty puskurin ylivuoto olla haavoittuvuus. Tämä edellyttää syvää tietämystä tietokoneen arkkitehtuurista ja kohdeohjelmasta. On osoitettu, että jopa niin pienet ylivuodot kuin yhden tavun kirjoittaminen puskurista voivat edustaa haavoittuvuuksia. [6]

Puskurin ylivuodot ovat yleisiä ohjelmissa, jotka on kirjoitettu suhteellisen matalan tason ohjelmointikielillä , kuten assembly- , C- ja C++ -ohjelmointikielillä, mikä edellyttää ohjelmoijan ohjaavan varatun muistin kokoa. Puskurin ylivuodon vianmääritys on edelleen huonosti automatisoitu prosessi. Muodolliset ohjelman varmennusjärjestelmät eivät ole kovin tehokkaita nykyaikaisilla ohjelmointikielillä. [7]

Monet ohjelmointikielet, kuten Perl , Python , Java ja Ada , hallitsevat muistin varausta automaattisesti, mikä tekee puskurin ylivuotovirheistä epätodennäköisiä tai mahdottomia. [8] Perl tarjoaa automaattisen taulukoiden koon muuttamisen puskurin ylivuotojen välttämiseksi . Tällaisten kielten ajonaikaiset järjestelmät ja kirjastot voivat kuitenkin edelleen olla alttiita puskurin ylivuodolle näiden validointijärjestelmien toteutuksen mahdollisten sisäisten virheiden vuoksi. Windowsissa on saatavilla useita ohjelmisto- ja laiteohjelmistoratkaisuja, jotka estävät koodin suorittamisen ylivuotopuskurin ulkopuolella, jos tällainen ylivuoto tapahtuu. Näitä ratkaisuja ovat DEP Windows XP SP2 : ssa , [9] OSsurance ja Anti-Execute .

Harvardin arkkitehtuurissa suoritettava koodi pidetään erillään tiedoista, mikä tekee tällaiset hyökkäykset lähes mahdottomaksi. [kymmenen]

Lyhyt tekninen yhteenveto

Esimerkki

Harkitse esimerkkiä haavoittuvasta C -ohjelmasta :

#include <string.h> int main ( int argc , char * argv []) { charbuf [ 100 ] ; strcpy ( buf , argv [ 1 ]); paluu 0 ; }

Se käyttää unsafe strcpy -toimintoa , jonka avulla voit kirjoittaa enemmän tietoja kuin mahtuu niille varattuun taulukkoon. Jos suoritat tämän ohjelman Windows -järjestelmässä , jonka argumentti on yli 100 tavua, ohjelma todennäköisesti kaatuu ja käyttäjä saa virheilmoituksen.

Tämä haavoittuvuus ei vaikuta seuraavaan ohjelmaan:

#include <string.h> int main ( int argc , char * argv []) { charbuf [ 100 ] ; strncpy ( buf , argv [ 1 ], sizeof ( buf )); paluu 0 ; }

Tässä strcpy on korvattu strncpyllä , jossa kopioitavien merkkien enimmäismäärää rajoittaa puskurin koko. [yksitoista]

Kuvaus

Alla olevat kaaviot osoittavat, kuinka haavoittuva ohjelma voi vahingoittaa pinorakennetta .

Kuva erilaisten tietojen kirjoittamisesta pinoon varattuun puskuriin

x86 - arkkitehtuurissa pino kasvaa isommista osoitteista pienempiin eli uudet tiedot sijoitetaan ennen pinossa jo olevia.

Kirjoittamalla tietoja puskuriin voit kirjoittaa sen rajojen ulkopuolelle ja muuttaa siellä olevia tietoja, erityisesti muuttaa palautusosoitetta .

Jos ohjelmalla on erityisoikeuksia (kuten ajaminen pääkäyttäjänä ), hyökkääjä voi muuttaa paluuosoitteen shellcode- osoitteeksi , jolloin hän voi suorittaa komentoja kohdejärjestelmässä korotetuilla oikeuksilla . [12]

Hyödyntäminen

Puskurin ylivuototekniikat vaihtelevat arkkitehtuurin, käyttöjärjestelmän ja muistialueen mukaan. Esimerkiksi puskurin ylivuoto kasassa (käytetään dynaamiseen muistin varaamiseen) on merkittävästi erilainen kuin puhelupinossa .

Pinon hyväksikäyttö

Tunnetaan myös nimellä Stack smashing . Tekninen käyttäjä voi käyttää pinopuskurin ylivuotoa manipuloidakseen ohjelmaa edukseen seuraavilla tavoilla:

  • puskurin vieressä olevan muistin paikallismuuttujan päällekirjoittaminen, mikä muuttaa ohjelman käyttäytymistä sen eduksi.
  • paluuosoitteen päällekirjoittaminen pinokehyksessä . Heti kun toiminto päättyy, hallinta siirtyy hyökkääjän määrittelemään osoitteeseen, yleensä sille muistialueelle, jota hänellä oli muokattava.
  • funktioosoittimen [13] tai poikkeuskäsittelijän päällekirjoittaminen , joka ottaa myöhemmin hallinnan.
  • parametrin päällekirjoittaminen toisesta pinokehyksestä tai ei-paikallisesta osoitteesta, johon on osoitettu nykyisessä kontekstissa. [neljätoista]

Jos käyttäjätietojen osoite on tuntematon, mutta se on tallennettu rekisteriin, voidaan käyttää trampoliinointimenetelmää   :  paluuosoite voidaan korvata opkoodin osoitteella , joka siirtää ohjauksen käyttäjätietojen muistialueelle. Jos osoite on tallennettu R-rekisteriin, hyppääminen komentoon, joka siirtää ohjauksen kyseiseen osoitteeseen (esimerkiksi kutsu R), suorittaa käyttäjän määrittämän koodin. Sopivien opkoodien tai muistitavujen osoitteet löytyvät DLL :stä tai itse suoritettavasta tiedostosta. Osoitteet eivät kuitenkaan yleensä voi sisältää nollamerkkejä, ja näiden opkoodien sijainnit vaihtelevat sovelluksen ja käyttöjärjestelmän mukaan. Esimerkiksi Metasploit Project ylläpiti tietokantaa sopivista opkoodeista Windows-järjestelmille (joka ei ole tällä hetkellä saatavilla). [viisitoista]

Pinon puskurin ylivuotoa ei pidä sekoittaa pinon ylivuotoon .

On myös syytä huomata, että tällaiset haavoittuvuudet löydetään yleensä fuzzing- testaustekniikalla .

Keon hyväksikäyttö

Puskurin ylivuotoa keon tietoalueella kutsutaan keon ylivuodoksi ja sitä hyödynnetään eri tavalla kuin puskurin ylivuotoa pinossa. Sovellus varaa dynaamisesti kasamuistin ajon aikana, ja se sisältää yleensä ohjelmatietoja. Hyödyntäminen tapahtuu korruptoimalla nämä tiedot erityisillä tavoilla pakottaakseen sovelluksen korvaamaan sisäiset rakenteet, kuten linkitetyissä luetteloissa olevia osoittimia. Yleinen keon puskurin ylivuotojen hyväksikäyttötekniikka on korvata dynaamisia muistiviittauksia ( kuten malloc - funktion metadata ) ja käyttää tuloksena saatua muokattua osoitinta ohjelman funktioosoittimen päällekirjoittamiseen.

Microsoftin GDI+ -tuotteen haavoittuvuus JPEG -kuvien käsittelyssä  on esimerkki vaarasta, jonka keon puskurin ylivuoto voi aiheuttaa. [16]

Vaikeuksia käytössä

Puskurin käsittely ennen sen lukemista tai suorittamista voi estää haavoittuvuuden onnistuneen hyödyntämisen. Ne voivat vähentää onnistuneen hyökkäyksen uhkaa, mutta eivät kokonaan poista sitä. Toimintoja voivat olla merkkijonon muuntaminen isoiksi tai pieniksi kirjaimille, erikoismerkkien poistaminen tai kaikkien paitsi aakkosnumeeristen merkkien suodattaminen pois. On kuitenkin olemassa temppuja näiden toimenpiteiden kiertämiseen: aakkosnumeeriset shell-koodit, [17] polymorfiset koodit , [ 18 ] itsemuuttuvat koodit ja kirjaston paluuhyökkäys . [19] Samoja tekniikoita voidaan käyttää tunkeutumisen havaitsemisjärjestelmistä piiloutumiseen . Joissakin tapauksissa, mukaan lukien merkkien muuntaminen Unicodeksi , haavoittuvuuden katsotaan sallivan DoS-hyökkäyksen , vaikka itse asiassa mielivaltaisen koodin etäsuoritus on mahdollista. [kaksikymmentä]

Ennaltaehkäisy

Erilaisia ​​temppuja käytetään puskurin ylivuotojen vähentämiseksi.

Tunkeutumisen havaitsemisjärjestelmät

Tunkeutumisen havaitsemisjärjestelmät (IDS) voivat havaita ja estää puskurin ylivuotojen etäkäyttöyritykset. Koska useimmissa tapauksissa puskurin ylivuotoon tarkoitettu data sisältää pitkiä ei operaatiota ( tai ) -käskyjä , IDS yksinkertaisesti estää kaikki saapuvat paketit , jotka sisältävät suuren määrän peräkkäisiä NOP:ita. Tämä menetelmä on yleensä tehoton, koska tällaiset taulukot voidaan kirjoittaa käyttämällä erilaisia ​​​​kokoonpanokielen ohjeita . Äskettäin krakkarit ovat alkaneet käyttää shell-koodeja salauksella , itsemuovautuvalla koodilla , polymorfisella koodilla ja aakkosnumeerisella koodilla sekä varahyökkäyksillä standardikirjastoon tunkeutuakseen IDS:ään. [21] NOPNOOP

Pino korruptiosuojaus

Pinon korruptiosuojausta käytetään havaitsemaan yleisimmät puskurin ylivuotovirheet. Tämä tarkistaa, ettei kutsupinoa ole muokattu ennen funktiosta paluuta. Jos sitä on muutettu, ohjelma päättyy segmentointivirheeseen .

On olemassa kaksi järjestelmää, StackGuard ja Stack-Smashing Protector (aiemmin ProPolice), molemmat gcc - kääntäjän laajennuksia . Gcc-4.1-stage2:sta lähtien SSP on integroitu pääkääntäjän jakeluun . Gentoo Linux ja OpenBSD sisältävät SSP:n gcc-jakeluineen. [22]

Paluuosoitteen sijoittaminen tietopinoon helpottaa mielivaltaisen koodin suorittamiseen johtavan puskurin ylivuodon toteuttamista. Teoriassa gcc:hen voitaisiin tehdä muutoksia, jotta osoite voitaisiin sijoittaa erityiseen paluupinoon , joka on täysin erillinen tietopinosta, samalla tavalla kuin se on toteutettu Forth-kielessä . Tämä ei kuitenkaan ole täydellinen ratkaisu puskurin ylivuotoongelmaan, koska myös muut pinotiedot on suojattava.

Kooditilan suojaus UNIX - tyyppisille järjestelmille

Suoritettavan koodin tilan suojaaminen voi lieventää puskurin ylivuodon vaikutuksia, jolloin useimmat haitalliset toimet ovat mahdottomia. Tämä saavutetaan osoiteavaruuden satunnaistuksella ( ASLR ) ja/tai samanaikaisen muistin käytön kieltämisellä kirjoittamista ja suorittamista varten. Ei-suoritettava pino estää useimmat shell-koodin hyväksikäytöt .

On olemassa kaksi Linux-ytimen korjaustiedostoa , jotka tarjoavat tämän suojan - PaX ja exec-shield . Mikään näistä ei vielä sisälly pääytimen jakeluun. OpenBSD on versiosta 3.3 lähtien sisältänyt W^X -nimisen järjestelmän , joka tarjoaa myös ajonaikaisen ohjauksen.

Huomaa, että tämä suojausmenetelmä ei estä pinon korruptiota. Usein se kuitenkin estää hyväksikäytön "hyötykuorman" suorittamisen onnistuneesti. Ohjelma ei pysty lisäämään shell-koodia kirjoitussuojattuun muistiin, kuten olemassa oleviin suoritettavan koodin segmentteihin. Ei myöskään ole mahdollista suorittaa käskyjä ei-suoritettavassa muistissa, kuten pinossa tai kasassa .

ASLR tekee hyökkääjän vaikeaksi määrittää ohjelman koodissa olevien toimintojen osoitteita, joilla hän voisi suorittaa onnistuneen hyökkäyksen, ja tekee ret2libc :n kaltaisista hyökkäyksistä erittäin vaikeita, vaikka ne ovat silti mahdollisia valvotussa ympäristössä tai jos hyökkääjä on oikein. arvaa oikean osoitteen.

Jotkut prosessorit , kuten Sun 's Sparc , Transmetan Efficeon ja uusimmat AMD : n ja Intelin 64-bittiset prosessorit, estävät erityisellä NX-bitillä merkittyjen muistialueiden koodin suorittamisen . AMD kutsuu ratkaisuaan NX :ksi ( englanniksi No eXecute ) ja Intel XD :ksi ( englanniksi eXecute Disabled ). [23]  

Ajonaikainen kooditilan suojaus Windowsille

Nyt on saatavilla useita erilaisia ​​ratkaisuja suoritettavan koodin suojaamiseen Windows -järjestelmissä sekä Microsoftilta että kolmansilta osapuolilta.

Microsoft tarjosi DEP-nimisen ratkaisunsa ( englanniksi  Data Execution Prevention  - "data execution prevention"), sisältäen sen Windows XP :n ja Windows Server 2003 :n Service Pack -paketteihin . DEP hyödyntää uudempia Intel- ja AMD - suorittimia , jotka on suunniteltu ylittämään 32-bittisten prosessorien 4 Gt osoitettavan muistin raja. Tätä tarkoitusta varten joitain palvelurakenteita on lisätty. Nämä rakenteet sisältävät nyt varatun NX-bitin. DEP käyttää tätä bittiä estääkseen hyökkäykset, joihin liittyy poikkeuskäsittelijän osoitteen muuttaminen (ns. SEH exploit ). DEP suojaa vain SEH -hyökkäyksiltä , ​​se ei suojaa suoritettavalla koodilla olevia muistisivuja. [9]

Lisäksi Microsoft on kehittänyt Windows Serverille suunnitellun pinon suojausmekanismin. Pino merkitään ns. "informanttien" ( englanniksi  canary ) avulla, joiden eheys sitten tarkistetaan. Jos "ilmoittaja" on vaihdettu, pino on vioittunut. [24]

On myös kolmansien osapuolien ratkaisuja, jotka estävät datalle tai ASLR-mekanismin toteuttamiseen tarkoitetuilla muistialueilla sijaitsevan koodin suorittamisen.

Turvallisten kirjastojen käyttäminen

Puskurin ylivuotojen ongelma on yhteinen C- ja C++-ohjelmointikielille , koska ne eivät piilota yksityiskohtia puskurien matalan tason esityksestä tietotyyppien säiliöinä . Puskurin ylivuotojen välttämiseksi puskureita hallitsevan koodin luomisen ja muokkaamisen korkea taso on siis ylläpidettävä. Abstraktien tietotyyppikirjastojen käyttö , jotka suorittavat keskitetyn automaattisen puskurinhallinnan ja sisältävät ylivuototarkistuksen, on yksi tekninen lähestymistapa puskurin ylivuodon estämiseen. [25]

Kaksi päätietotyyppiä, jotka sallivat puskurin ylivuodon näillä kielillä, ovat merkkijonot ja taulukot . Siten puskurin ylivuotojen estämiseen ja/tai havaitsemiseen kehitettyjen merkkijonojen ja luettelotietorakenteiden kirjastojen käyttö välttää monia haavoittuvuuksia. Tällaisten ratkaisujen hinta on suorituskyvyn lasku, joka johtuu tarpeettomista tarkastuksista ja muista kirjastokoodin suorittamista toimista, koska se on kirjoitettu "kaikkiin tilanteisiin", ja kussakin tapauksessa osa sen suorittamista toiminnoista voi olla tarpeettomia.

Historia

Puskurin ylivuoto ymmärrettiin ja osittain dokumentoitiin jo vuonna 1972 Computer Security Technology Planning Study -tutkimuksessa. [26] Varhaisin dokumentoitu puskurin ylivuodon haitallinen käyttö tapahtui vuonna 1988. Se perustui yhteen useista hyökkäyksistä, joita Morris-mato itse levitti Internetissä. Ohjelma käytti hyväkseen Unix finger -palvelun haavoittuvuutta . [27] Myöhemmin, vuonna 1995, Thomas Lopatik löysi itsenäisesti uudelleen puskurin ylivuodon ja listasi löydökset Bagtrak- luetteloon . [28] Vuotta myöhemmin Elias Levy julkaisi Phrack -lehdessä vaiheittaisen johdannon puskurin ylivuotojen käyttämisestä pinon kanssa, Smashing the Stack for Fun and Profit . [12]

Siitä lähtien ainakin kaksi tunnettua verkkomatoa on käyttänyt puskurin ylivuotoja suuren määrän järjestelmiä tartuttamiseen. Vuonna 2001 Code Red -mato käytti hyväkseen tätä haavoittuvuutta Microsoftin Internet Information Services (IIS) 5.0 -tuotteessa [29] ja vuonna 2003 SQL Slammer sai tartunnan Microsoft SQL Server 2000 -käyttöjärjestelmää käyttävissä koneissa . [kolmekymmentä]

Vuonna 2003 lisensoiduissa Xbox -peleissä esiintyvän puskurin ylivuodon hyödyntäminen mahdollisti lisensoimattomien ohjelmistojen käytön konsolissa ilman laitteistomuutoksia niin kutsuttujen modchipsien avulla . [31] PS2 Independence Exploit käytti myös puskurin ylivuotoa saavuttaakseen saman tuloksen PlayStation 2 :lla . Samanlainen Wii Twilightin hyväksikäyttö hyödynsi tätä The Legend of Zelda: Twilight Princessin haavoittuvuutta .

Katso myös

Muistiinpanot

  1. Erickson, 2010 , 0x320 puskurin ylivuoto, s. 139.
  2. Wheeler, 2004 , 6. Vältä puskurin ylivuoto, s. 71.
  3. Erickson, 2010 , 0x321 Stack Buffer Overflow, s. 142.
  4. Erickson, 2010 , 0x300 Exploits, s. 135-139.
  5. ↑ "HP-UX (PA-RISC 1.1) Overflows" , kirjoittanut Zhodiac  . Phrack . Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 3. joulukuuta 2014.
  6. ↑ "Frame Pointer Overwrite" , tekijä klog  . Phrack . Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 3. joulukuuta 2014.
  7. Wheeler, 2004 , 6.1. Vaarat C/C++:ssa, s. 71.
  8. Wheeler, 2004 , 6.4. Muut kielet, s. 80.
  9. ↑ 1 2 Data Execution Prevention (DEP  ) . vlaurie.com. Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 18. joulukuuta 2008.
  10. Windows CE  :n hakkerointi . Phrack . Käyttöpäivä: 14. joulukuuta 2014. Arkistoitu alkuperäisestä 3. joulukuuta 2014.
  11. Tee itse puskurin ylivuoto #2 . Xakep-lehti. Käyttöpäivä: 8. joulukuuta 2014. Arkistoitu alkuperäisestä 11. joulukuuta 2014.
  12. ↑ 1 2 "Smashing the Stack for Fun and Profit" by Aleph One  . Phrack . Käyttöpäivä: 8. joulukuuta 2014. Arkistoitu alkuperäisestä 6. helmikuuta 2013.
  13. ↑ CORE-2007-0219: OpenBSD :n IPv6 mbufs etäytimen puskurin ylivuoto  . securityfocus.com. Käyttöpäivä: 8. joulukuuta 2014. Arkistoitu alkuperäisestä 12. helmikuuta 2012.
  14. Modernit  ylivuotokohteet . Pakettimyrsky. Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 23. lokakuuta 2016.
  15. Metasploit Opcode -tietokanta  . Metasploit . Haettu 15. toukokuuta 2007. Arkistoitu alkuperäisestä 12. toukokuuta 2007.
  16. Microsoft Technet Security Bulletin MS04-028  (englanniksi)  (linkki ei ole käytettävissä) . Microsoft . Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 4. elokuuta 2011.
  17. ia32 aakkosnumeeristen  kuorikoodien kirjoittaminen . Phrack . Haettu 14. joulukuuta 2014. Arkistoitu alkuperäisestä 10. maaliskuuta 2014.
  18. Polymorfinen  kuorikoodimoottori . Phrack . Käyttöpäivä: 14. joulukuuta 2014. Arkistoitu alkuperäisestä 11. joulukuuta 2014.
  19. Kehittynyt return-into-lib(c) hyödyntää  . Phrack . Käyttöpäivä: 14. joulukuuta 2014. Arkistoitu alkuperäisestä 14. joulukuuta 2014.
  20. Mielivaltaisen shellkoodin luominen Unicode Expanded Stringsissa  (englanniksi) (PDF). Ohje Net Security. Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 5. tammikuuta 2006.
  21. Päivä, DJ; Sch. of Comput., Univ. Derby, Derby, Iso-Britannia; Zhengxu Zhao; Minhua Ma. Paluu-libc-puskurin ylivuotohyökkäysten havaitseminen verkon tunkeutumisen havaitsemisjärjestelmillä   // IEEE . - 2010. - S. 172-177 . - ISBN 978-1-4244-5805-9 . - doi : 10.1109/ICDS.2010.37 .
  22. Wheeler, 2004 , 6.3. Compilation Solutions in C/C++, s. 79.
  23. Ominaisuudet  _ _ Ubuntu . Haettu 9. joulukuuta 2014. Arkistoitu alkuperäisestä 8. elokuuta 2019.
  24. Perla, Oldani, 2011 , LUKU 6 Windows.
  25. Wheeler, 2004 , 6.2. Kirjastoratkaisut C/C++:ssa, s. 73.
  26. Computer Security Technology Planning Study  (englanniksi) (PDF)  (linkki ei saatavilla) . Computer Security Resource Center (CSRC). Käyttöpäivä: 8. joulukuuta 2014. Arkistoitu alkuperäisestä 21. heinäkuuta 2011.
  27. "A Tour of The Worm", kirjoittanut Donn Seeley,  Utahin yliopisto . world.std.com. Haettu 3. kesäkuuta 2007. Arkistoitu alkuperäisestä 20. toukokuuta 2007.
  28. Bugtraq- tietoturva-postituslista-arkisto  . www.security-express.com. Haettu 3. kesäkuuta 2007. Arkistoitu alkuperäisestä 1. syyskuuta 2007.
  29. eEye Digital Security  . eEye Digital Security. Haettu 3. kesäkuuta 2007. Arkistoitu alkuperäisestä 25. kesäkuuta 2007.
  30. Microsoft Technet Security Bulletin MS02-039  (englanniksi)  (linkkiä ei ole saatavilla) . Microsoft . Haettu 8. joulukuuta 2014. Arkistoitu alkuperäisestä 7. maaliskuuta 2008.
  31. Hakkeri rikkoo Xbox-suojauksen ilman mod  -sirua . gamesindustry.biz Haettu 3. kesäkuuta 2007. Arkistoitu alkuperäisestä 27. syyskuuta 2007.

Kirjallisuus

  • James Foster, Mike Price. Hakkerointisuojaus: sockets, exploits, shellcode = Sockets, Shellcode, Porting, & Coding. - M . : Kustantaja DMK-press, 2006. - S. 35, 532. - 784 s. - ISBN 5-9706-0019-9 .
  • John Erickson. 0x320 puskurin ylivuoto // Hakkerointi : hyväksikäytön taito. – 2. painos. - Pietari. : Symbol-Plus, 2010. - S.  139 . — 512 s. — ISBN 978-5-93286-158-5 .
  • David A. Wheeler. Luku 6. Vältä puskurin ylivuoto // Secure Programming for Linux and Unix HOWTO . - 2004. - s. 71. - 188 s.
  • Enrico Perla ja Massimiliano Oldani. LUKU 6 Windows // Opas ytimen hyväksikäyttöön: Ytimen hyökkäys. - 2011. - s. 334. - 442 s. — ISBN 978-1-59749-486-1 .

Linkit

Kirjastot ja muut suojat