Kirjaudu

Uutiskirje

Rekisteröidy Sektoriin ja tilaa itsellesi joko aamuisin tai iltaisin ilmestyvä uutiskirje sähköpostiisi.

Keskiviikko, 2.5.2001

Vakava tietoturva-aukko Windows 2000:ssa

Microsoft suosittelee kaikkia Windows 2000 ja IIS 5.0 -palvelimien ylläpitäjiä päivittämään järjestelmänsä Microsoftin sivuilta löytyvällä korjauspaketilla. IIS 5.0 -palvelinohjelmistossa on omainaisuus, joka mahdollistaa tulostuksen verkosta HTTP-protokollan avulla ISAPI-rajapintaa hyväksi käyttäen. Ominaisuuteen eksyneen ohjelmointivirheen vuoksi kräkkeri voi ottaa koneen haltuunsa puskurin ylivuotoa hyödyntämällä. Microsoftin tietoturva-asiantuntija Scott Culpin mukaan kräkkerit voivat virheen vuoksi tehdä järjestelmälle lähes mitä tahansa. Microsoft Internet Information Server -palvelinohjelmistoa käytetään arviolta noin viidessä miljoonassa palvelimessa, mutta tiedossa ei ole kuinka monessa käytetään tietoturva-aukon sisältävää 5.0-versiota.

Lue juttu oma, 2.5.2001 12:57. Lähde: The Register
Rekisteröidy ja kirjaudu sisään, jos haluat kommentoida.

Kommentit ( 17 uutta / 17 )
pistettä.
Näytä vain kommentit joilla on vähintään
Pakollinen kommentti Linux-käyttäjältä
Anonyymi kommentoija, 3.5.2001 04:50:23
Pisteet: 0
8-] :-) ;-D *kierii lattialla ja naurunsa seasta toteaa: "Heheh on ne nuo wintoosan koodaajat noloja"*
Re: Pakollinen kommentti Linux-käyttäjältä
Anonyymi kommentoija, 3.5.2001 08:20:54
Pisteet: 0
8-] :-) ;-D *kierii lattialla ja naurunsa seasta toteaa: "Heheh on ne nuo wintoosan koodaajat noloja"*
Yksi sana: BIND.
Re: Pakollinen kommentti Linux-käyttäjältä
Anonyymi kommentoija, 3.5.2001 22:32:21
Pisteet: 0
8-] :-) ;-D *kierii lattialla ja naurunsa seasta toteaa: "Heheh on ne nuo wintoosan koodaajat noloja"*
Yksi sana: BIND.
Toinen sana wuFTPD.
Djadja-P Re: Pakollinen kommentti Linux-käyttäjältä
Djadja-P, 4.5.2001 12:56:16
Pisteet: 0
Yksi sana: BIND.
Toinen sana wuFTPD.
Kolmas: "Apache". Neljäs: "Linux". Montakos kymmentä sellaista malloc-kutsua, jonka paluuarvoa ei tarkisteta, Linuxin kernelin koodista taas löytyikään? C-koodarit vasta opettelevat turvallista ohjelmointia...
OSS:sta nämä tapaavat lötyä (ja tulla korjatuksi nopeasti. GPL(* on "secured by obscurity" ja turva-aukot löytyvät enemmän sattumalta, mutta paljon helpommin kuin SETI löytää jotain järjellistä.

*) GPL tässä = Gates Private Licencing
--
Ammutaanhan navetassakin!
Olematon useless comment
Olematon, 2.5.2001 13:24:02
Pisteet: +1
Mikä ihme tuossa puskurissa on kun se aina vuotaa yli? Onko se joka ohjelmoijan painajainen vai vain Windowsien probleema...en tiedä kun en ole mitään pahemmin ohjelmoinut(vai liittykö se laitteisiin?).
--
directory mozilla; dmoz.org
Re: useless comment
Anonyymi kommentoija, 2.5.2001 18:31:00
Pisteet: +1
Mikä ihme tuossa puskurissa on kun se aina vuotaa yli? Onko se joka ohjelmoijan painajainen vai vain Windowsien probleema...en tiedä kun en ole mitään pahemmin ohjelmoinut(vai liittykö se laitteisiin?).
Tuota esiintyy sekä Windowsissa että unixeissakin. Unixeista noita oikeastaan enemmän löytyy, mutta Windowsissakin piilee suljettujen sorsien alla varmasti vaikka kuinka paljon vastaavia bugeja - niitä on vain vaikeampi löytää.

Iskuhan toimii niin, että merkkijonolle on varattu vaikka 100 merkkiä tilaa, ja siihen yritetään tunkea enemmän merkkejä kuin siihen mahtuisi (vaikkapa 108) ilman tarkistuksia (vanhat mutta silti yleisesti käytetyt c-funktiot kuten strcpy, strcat, jne. kirjoittelevat kiltisti yli varatun tilan). Tässä vaiheessa ohjelma lähinnä kaatuu jos hyökkäystä ei kehitellä pidemmälle.

Varsinainen tietoturvariski syntyy, kun merkkijonon vieressä pinossa tallessa oleva funktion paluuosoite ylikirjoittuu kräkkerin omalla merkkijonolla ja merkkijonoon kirjoitetulla osoitteella. Tällöin koodin ajo siirtyy uuteen osoitteeseen (usein itse merkkijono jolla puskuri ylivuodettiin), jossa on kräkkerin itse määräämää mielivaltaista konekielikoodia joka pyörii bugisen ohjelman oikeuksilla. Yleensä koodi pystyy esimerkiksi avaamaan takaoven koneelle. Tulikohan sitten taas vähän turhan sekava selitys. :)

Tuollaisetkin pystyttäisiin välttämään, kun laiska koodaaja jaksaisi esim. strcpy:n sijaan käyttää strncpy:tä, jolle voi määrätä kopioitavien merkkien määrän niin ettei merkkejä kopioidu liikaa. Vielä parempi ratkaisu olisi lopettaa pikkuhiljaa kyseisten ikivanhojen C-komentojen käyttö kokonaan.
dmn Re: useless comment
dmn, 3.5.2001 09:44:53
Pisteet: 0
Tuollaisetkin pystyttäisiin välttämään, kun laiska koodaaja jaksaisi esim. strcpy:n sijaan käyttää strncpy:tä, jolle voi määrätä kopioitavien merkkien määrän niin ettei merkkejä kopioidu liikaa.
Väärin! Jos käyttäjä antaa syötettä liikaa ja kopioit sen strncpy:llä, niin asiat NÄYTTÄVÄT menevät niin hyvin niin kauan kun kokeilet lukea ko. merkkijonoa, sillä strncpy ei terminoi merkkijonoa, joten ko. funkkarista saatava käytönnön hyöty on lähinnä marginaalinen. Käyttäkää vaikka snprintf:ää..
--
Schönke daan, kiitokset humpasta!
Djadja-P Re: useless comment
Djadja-P, 4.5.2001 12:50:34
Pisteet: 0
Väärin! Jos käyttäjä antaa syötettä liikaa ja kopioit sen strncpy:llä, niin asiat NÄYTTÄVÄT menevät niin hyvin niin kauan kun kokeilet lukea ko. merkkijonoa, sillä strncpy ei terminoi merkkijonoa,
Terminohan.

strcpy() ja strncpy() ovat ok kunhan niitä käytetään oikein.
--
Ammutaanhan navetassakin!
dmn Re: useless comment
dmn, 4.5.2001 14:03:55
Pisteet: 0
Terminohan.
Jopas on herralla ihmeelliset systeemit käytössä.

char *strncpy(char *dest, const char *src, size_t n);

The strncpy() function is similar, except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src, the result wil not be null-terminated.
--
Schönke daan, kiitokset humpasta!
joukojo Re: useless comment
joukojo, 2.5.2001 13:34:06
Pisteet: +1
Mikä ihme tuossa puskurissa on kun se aina vuotaa yli? Onko se joka ohjelmoijan painajainen vai vain Windowsien probleema...en tiedä kun en ole mitään pahemmin ohjelmoinut(vai liittykö se laitteisiin?).
Koodari on olettanut, että kukaan ei syötä syötteenä kuin tarpeellisen määrän (+varalla oleva) esim. tekstiä. Muistaakseni tuo vanha gets-funktio c-kielessä on hyvä esimerkki. Lukua suoritetaan kunnessa syöte loppuu, muistin ylityksestä ei oteta kantaa.

Esimerkiksi käyttämällä c-kielen funktiota fgets, jossa voidaan määrittää kuinka paljon merkkejä luetaan.

Ymmärtääkseni suurin ongelma ohjelmille syntyy tyhjistä merkkijonoista tai liian pitkistä.

- joukojo
Re: useless comment
Anonyymi kommentoija, 2.5.2001 14:26:36
Pisteet: 0
Ymmärtääkseni suurin ongelma ohjelmille syntyy tyhjistä merkkijonoista tai liian pitkistä.
Nykyään ongelman syntyvät lähinnä erilaisten tarkistusten puutteista tai vääristä toteutuksista. Näinä olio-ohjelmoinnin päivinä c-kielisiä funktioita käytetään suoraan enää harvoin.

- ohjelmoitsija velho
Re: useless comment
Anonyymi kommentoija, 2.5.2001 17:03:11
Pisteet: +1
Näinä olio-ohjelmoinnin päivinä c-kielisiä funktioita käytetään suoraan enää harvoin.
Ehkä kaupallisissa softiss. Vapaissa softissa C, erinäisten "skriptikielien" rinnalla, on kuitenkin edelleen se hallitseva kieli. Miksi? Omalla kohdallani ei ainakaan mikään taho ei ole pakottamassa käyttämään jotain kammottavaa C++:aa, ja kielet, joita ei voi natiivibinääriksi kääntää ovat automaattisesti poissuljettu. Joten kovin paljon vaihtoehtojakaan ei ole, kun vielä pitäisi tuki esim. Xlibille (sic!) löytyä. Hienoa olisi, kun kaikkia kirjastoja voisi ilman sen kummempia wrappereita kaikista kielistä käyttää, ilman mitään raskaita corba-klunssauksia. Wintoosassa kait jotenkin paremmin tuollainenkin onkin toteutettuna. Siitä kunnia heille, vaikka unkarilaisen notaation kanssa ei voikkaan kukaan täysijärkinen tulla toimeen.
jemm Re: useless comment
jemm, 2.5.2001 21:51:01
Pisteet: +1
Aiheen sivusta jatkaen:

öytyä. Hienoa olisi, kun kaikkia kirjastoja voisi ilman sen kummempia wrappereita kaikista kielistä käyttää, ilman mitään raskaita corba-klunssauksia.
Sitten sinulla on syytä tyytyväisyyteen, sillä tuollainen ajattelu on kovaa vauhtia tulossa keskeiseksi osaksi ohjelmointia. Olet saattanut ehkä kuullakin .NETistä ja Web Serviceistä... Jälkimmäisten ideana on jakaa pääsy liiketoimintalogiikkaan käyttäen avoimia tekniikoita, kuten XML:ää ja SOAPia.

Näitä Internetin ylitse saatavia objekteja voi ohjelmoida yhtä helposti, kuin paikallisiakin todella helposti (ainakin .NETissä).

Kaikki keskusteluun tarvittava on täysin käyttöjärjestelmäriippumatonta ja Microsoftin lisäksi useilta muilta firmoilta(IBM, Sun, Oracle jne) on tulossa vastaavia, yhteensopivia ratkaisuja.

Jos ja kun se toteutuu, niin sovellus voi hyvinkin koostua osista, joista osa pyörii Windows 2000:lla, osa Linuxissa ja osa Solariksessa eri puolilla maailmaa yms...

Mielenkiintoisia aikoja siis luvassa.
-Jemm
Re: useless comment
Anonyymi kommentoija, 2.5.2001 22:04:14
Pisteet: +1
Sitten sinulla on syytä tyytyväisyyteen, sillä tuollainen ajattelu on kovaa vauhtia tulossa keskeiseksi osaksi ohjelmointia. Olet saattanut ehkä kuullakin .NETistä ja Web Serviceistä... Jälkimmäisten ideana on jakaa pääsy liiketoimintalogiikkaan käyttäen avoimia tekniikoita, kuten XML:ää ja SOAPia.
Ei nyt ollut kyse aivan tosta. XML:t sun muut on aivan yhtä bloattia kuin corbat etc. Kyse oli siitä, että jos minulla on random jaettu kirjasto (.so, shared library, DLL wintoosassa), niin voisin ladata sen muistiin ja käyttää mistä tahansa kielestä ilman sen kummempia wrappereita. Nyt kun käytännössä tarvitaan ei-C++/C/objective C -kielille jokaiselle erikseen wrapperikirjasto, jotta esimerkiksi C:llä kirjoitettuja kirjastoja voisi käyttää. Arvata saattaa, ettei joka kielelle ole joka kirjastolle wrapperia. Tämä tietenkin vaatisi jonkun liityntäspesifikaation, ja muutoksia kääntäjiin. Mutta miksi kielistä ei voida tehdä interoperatiivisia ilman, että käytetään jotain raskaita protokollia?
jemm Re: useless comment
jemm, 2.5.2001 22:51:12
Pisteet: 0
yse oli siitä, että jos minulla on random jaettu kirjasto (.so, shared library, DLL wintoosassa), niin voisin ladata sen muistiin ja käyttää mistä tahansa kielestä ilman sen kummempia wrappereita. Nyt kun Tämä tietenkin vaatisi jonkun liityntäspesifikaation, ja muutoksia kääntäjiin. Mutta miksi kielistä ei voida tehdä interoperatiivisia ilman, että käytetään jotain raskaita protokollia?
Ahaa. No tuosta taas tulee mieleen .NETin Common Language Runtime (CLR), jolle sovitetut kielet keskustelevat keskenään saumattomasti. Tämä edellyttää, että ulospäin näkyvät osat on kirjoitettu Common Language Specificaatioiden (CLS) mukaisesti (yhteiset tyypit, liittymät yms).

Esim. VB.NET voi periyttää C++ tai C#:lla tehdyn objektin, jota kutsutaan vaikka Cobol.NETistä, jos joku tuollaista tarvitsisi :)

Toki COMilla ja vastaavilla on päästy jo eri kielten väliseen keskusteluun interfacejen kautta, mutta se ei ole käytännössä ihan yhtä saumatonta ja helppoa, kuin .NETissä.
-Jemm
wizard11 vai aukkoja...
wizard11, 3.5.2001 10:12:27
Pisteet: 0
No miettikää jos kaikki aina toimis kuin unelma ja olis suunniteltu 50v eteenpäin, ei olis paljookaan "alan" töitä kun ei tarttis aina olla rähmimässä jonkun konetta ja sitä paitsi kaikki käyttäis vielä dossia tai 3.1 windowsia?
Dr Death