GHOST ( CVE- 2015-0235 ) vain nousi esiin. Kuinka voin nopeasti tarkistaa, onko järjestelmäni turvallinen? Ihannetapauksessa yhden rivin komentokomennolla.

ZDNet-artikkelin mukaan ”sinun on sitten käynnistettävä järjestelmä uudelleen”. Ihannetapauksessa testi osoittaisi myös tämän …

Kommentit

  • Ehdotan mainostamista ryhmään ” ensisijainen kysymys ”
  • Suuri kysymys. Harmi, että hyväksyit vastauksen, joka ei suinkaan ole yksirivinen komentokomento, mutta vaatii täydellisen kehittäjän työkaluketjun asennuksen. Kriittisillä laitteilla, kuten reitittimillä, enimmäkseen

ei ole gcc: tä. Jotkin laitteet eivät voi ’ edes itse isännöidä.

  • Sinä ’ olet oikeassa @BenVoigt. Laitoin palkkion vastaukselle yhdellä linjalla, joka ’ ei vaadi dev-työkaluja.
  • Laitteessa, joka voi ’ t itseisäntä, uClibc ja dietlibc ovat paljon todennäköisempiä kuin glibc. Varmista, että ’ olet todella käynnissä glibc: llä, ennen kuin vedät ristikääntäjän.
  • Vastaa

    Näyttää siltä, että voit ladata Chicagon yliopistosta työkalun, jonka avulla voit testata järjestelmääsi haavoittuvuuden varalta .

    Tämä ei korjaa tai käynnistä mitään uudelleen se kertoo sinulle vain, onko järjestelmäsi haavoittuva.

    $ wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c $ gcc GHOST.c -o GHOST $ ./GHOST [responds vulnerable OR not vulnerable ] 

    Suorittamalla tämän yhdellä etäpalvelimistani saan:

    user@host:~# wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c --2015-01-27 22:30:46-- https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c Resolving webshare.uchicago.edu (webshare.uchicago.edu)... 128.135.22.61 Connecting to webshare.uchicago.edu (webshare.uchicago.edu)|128.135.22.61|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1046 (1.0K) [text/x-csrc] Saving to: `GHOST.c" 100%[============================================>] 1,046 --.-K/s in 0s 2015-01-27 22:30:48 (237 MB/s) - `GHOST.c" saved [1046/1046] user@host:~# gcc GHOST.c -o GHOST user@host:~# ./GHOST vulnerable 

    kyseisen komentosarjan lähdekoodi näyttää tältä seuraavalta koodilohkolta , mutta sinun on kuitenkin ensin tutkittava alkuperäkoodi . Kuten muut ovat huomauttaneet, jos suoritat koodin mielivaltaisesti Internetistä tietämättä mitä se tekee, voi tapahtua huonoja asioita :

    /* * GHOST vulnerability check * http://www.openwall.com/lists/oss-security/2015/01/27/9 * Usage: gcc GHOST.c -o GHOST && ./GHOST */ #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANARY "in_the_coal_mine" struct { char buffer[1024]; char canary[sizeof(CANARY)]; } temp = { "buffer", CANARY }; int main(void) { struct hostent resbuf; struct hostent *result; int herrno; int retval; /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/ size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1; char name[sizeof(temp.buffer)]; memset(name, "0", len); name[len] = "\0"; retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); if (strcmp(temp.canary, CANARY) != 0) { puts("vulnerable"); exit(EXIT_SUCCESS); } if (retval == ERANGE) { puts("not vulnerable"); exit(EXIT_SUCCESS); } puts("should not happen"); exit(EXIT_FAILURE); } 

    Muokkaa : Olen lisännyt mahdollisen soittokirjan tänne , jos sitä käytetään kenellekään, jos sinulla on paljon järjestelmiä testata sitten mahdollista, voit tehdä sen nopeasti.

    Jos palvelimesi on haavoittuvainen ja käyttää käytettävissä olevia korjaustiedostoja, alla olevan keskustelun mukaisesti on erittäin suositeltavaa, että käynnistät järjestelmän uudelleen .

    Kommentit

    • @KasperSouren No, kyllä. Jos se on haavoittuva, asenna korjaustiedosto / päivitys ja käynnistä se uudelleen.
    • @KasperSouren Mitä kysyt ’ uudelleen, on rehellisesti sanottuna vähän typerää. Tämä vastaus vastaa täydellisesti kysymykseesi: miten löydän tämän haavoittuvuuden. Se ’ on kaikki mitä pyysit. ” yhden linjan pyytäminen ” on myös vähän typerää. Suoritin hänen lähettämänsä testin kaikille palvelimilleni alle 2 minuutissa. Se on ’ kuollut yksinkertainen. Juuri ” sammutus -r nyt ”, kun olet ’ valmis ….. ..
    • Päivitin, suoritin testin, en ’ t käynnistänyt uudelleen. Palasin tähän vasta vasta, kun sain selville, että minun on käynnistettävä uudelleen. Näin voi käydä monille ihmisille, ja heidän palvelimensa saattavat olla haavoittuvia ja hakkeroitua väärästä turvallisuustunnestaan huolimatta. Joten ei ole niin typerää saada tämä suora, jos mahdollista, IMHO.
    • GHOST.c POC on peräisin alkuperäisestä Qualysista neuvonta .
    • @KasperSouren -testi voi kertoa sinulle, että uudet ohjelmat käyttävät glibc: n turvallista versiota. Sinulla saattaa kuitenkin olla taustalla käynnissä olevia ohjelmia, jotka käynnistettiin ennen päivitystä, ja siksi olet ladannut vanhan version.

    Vastaa

    PHP: n yksi linja:

    php -r "$e="0";for($i=0;$i<2500;$i++){$e="0$e";gethostbyname($e); }" 

    Pythonin yksi linja:

    python -c "import socket;y="0"*50000000;socket.gethostbyname(y)" 

    Jos ne antavat sinulle segfaulteja (kyllä, Python-segmentti, harvinainen näyte), olet ”haavoittuva”. En tiedä, pidätkö Pythonia ”kehittäjätyökaluna”, mutta PHP on yleinen ohjelma.

    Jos kohdelaite on reititin, en tiedä mitään, mitä voisit tehdä sillä, mikä kertoisi sinulle, paitsi kaivautua valmistajan määrityksiin ja / tai odottaa valmistajan neuvoja ja laiteohjelmistopäivityksiä.

    Kommentit

    • Onko mahdollista yhdistää tämä sudo lsof | grep libc- | grep DEL" -sarjaan? Jos toisessa kommentissa vältetään tämä ihmiset ajattelevat ’ olevan turvassa, kun vanha libc on edelleen käytössä. Tämän lisäyksen myötä annan palkkion heti ’.
    • Se ’ sa shell-komento, joten voit puuttua asioihin & &. Ja tämä komento on vasta, kun olet päivittänyt glibc-paketit.Jos päivitit ’, nämä yksi vuoraus epäonnistuu. Joten täytetäänkö päivitys vommamd väliin?
    • Käytin php-tiedostoa SUSE 11SP3: ssa, enkä nähnyt mitään segfaultia ennen korjausta tai sen jälkeen. Onko sinulla ideoita?
    • @marcin Se on ’ mielenkiintoista. Vedin nämä Internet-lähteistä, ja monet ihmiset ilmoittavat rikkoneen. Tekeekö silmukan määrän lisääminen mitään? (Mitä se on ’ arvoinen, Pythonin segfault erottelee myös joissakin korjaustiedostoissa … ei sanaa miksi ’ s.
    • Uchicago-koodilla pelaamisesta näyttää siltä, että jos yrität ylittää yli 4 tavua, gethostbyname () palauttaa virheen (EINVAL) ylivuotamisen sijaan. C: llä voit hallita tarkalleen mitä korvaa. PHP: n tai Pythonin kanssa korvattavat tiedot voivat olla tärkeitä ja erottelevia, tai ei ehkä mitään; se ’ ll riippuu järjestelmän tarkasta rakenteesta. Ja Python-segmentti gethostbyname("0"*50000000) näyttää minulle pikemminkin virheenä Pythonissa. (Ghost Python?)

    vastaus

    aaronfayn vastaus kattoi jo sen, onko taustalla oleva järjestelmäsi haavoittuva, mutta se ei tunnista, onko ohjelmia, jotka ovat edelleen käynnissä glibc: n vanhalla versiolla päivityksen jälkeen. Toisin sanoen voit päivittää käynnistämättä uudelleen kyseisiä prosesseja, ja komentosarja ilmoittaa ”ole haavoittuva”, vaikka vanha, haavoittuva kirjasto on edelleen käytössä.

    Tässä on yksi tapa tarkistaa, onko olemassa mitään dynaamisesti linkitetyt ohjelmat, jotka käyttävät edelleen glibc: n vanhaa versiota:

    sudo lsof | grep libc- | grep DEL 

    Jos tuloksia on, glibc: n poistetut versiot ovat käytössä ja niitä käyttävät prosessit saattavat olla haavoittuvainen.

    Tämä ei tietenkään kata tapausta, johon glibc oli staattisesti linkitetty. Hyvä (?) Uutinen on, että glibc: tä on staattisesti linkitetty binääritiedostoon, sekä siksi, että ja koska se aiheuttaa joitain muita ärsytyksiä ja vaikeuksia. Jos sinulla on ohjelmia, jotka käyttävät staattisesti käännettyä glibc: tä (jota et melkein varmasti tue), sinun on käännettävä ne uudelleen.

    Kommentit

    • lsof +c0 -f -- /usr/lib64/libc-*.so | grep "(deleted)$" hieman tarkemmin, näyttää prosessien täydelliset nimet ja etsii linkkejä poistettuihin tiedostoihin.

    Vastaa

    Jos sinulla on tili Redhatissa, voit käyttää heidän ”GHOST-tunnistinta” osoitteessa tämä URL-osoite . Sen pieni komentosarja, joka kertoo, onko glibc haavoittuvainen.

    Red Hat on nyt palannut ja totesi, että heidän ilmaisinkomentonsa on virheellinen. Huomaa, että myös RHEL6.6: lla on huolta käytettäessä yum –securityä haavoittumisen korjaamiseen, koska se on ohitettu https://bugzilla.redhat.com/show_bug.cgi?id=1186717 .

    Kommentit

    • RedHat-työkalu tarkistaa vain glibc-RPM-version ja vain tietää RedHat-versioista (ja luultavasti johdannaisista). Se ei todellakaan toimi missään muussa käyttöjärjestelmässä.
    • Tätä ei myöskään ole enää ladattavissa, mikä todennäköisesti tekee virheistä.

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *