zlibissä havaittiin haavoittuvuus

äskettäin uutinen zlib-kirjaston haavoittuvuudesta julkaistiin on jo luetteloitu tunnuksella CVE-2018-25032, mikä aiheuttaa puskurin ylivuodon yritettäessä pakata saapuvan datan erityisesti valmistettu merkkijono.

Nykyisessä muodossaan tutkijat osoittivat mahdollisuuden soittaa epänormaalia terminointia prosessista, joten ei ole vielä tutkittu, voiko ongelmalla olla vakavampia seurauksia.

Mainitaan, että haavoittuvuus se on ilmennyt zlib 1.2.2.2:sta lähtien ja vaikuttaa zlib 1.2.11:n nykyiseen versioon. On huomionarvoista, että haavoittuvuuden korjaavaa korjaustiedostoa ehdotettiin vuonna 2018, mutta kehittäjät eivät kiinnittäneet siihen huomiota eivätkä julkaisseet korjaavaa versiota (zlib-kirjasto päivitettiin viimeksi vuonna 2017).

Tämän virheen ilmoitti Danilo Ramos Eideticom, Inc:stä, joka hän oli vaanimassa 13 vuotta ennen kuin hänet löydettiin! Bugi esiteltiin zlib 1.2.2.2:ssa lisäten Z_FIXED-vaihtoehtoa. Vaihtoehto pakottaa käyttämään kiinteitä Huffman-koodeja. Harvinaisiin merkintöihin
paljon kaukaisia ​​otteluita, joissa odottava puskuri pakatut tiedot kirjoitetaan voidaan korvata. Tämä johtaa vioittuneeseen ulostuloon virheelliset etäisyydet ja voi johtaa rajojen ulkopuolelle, sovelluksen kaatuminen.

Haavoittuvuus ilmenee, jos syöttövirta sisältää suuren määrän osumia pakata, mihin pakkaus on tehty Huffman-koodien perusteella korjattu. Tietyissä olosuhteissa sen välipuskurin sisältö, johon pakattu tulos on sijoitettu, voi mennä päällekkäin sen muistin kanssa, johon symbolitaajuustaulukko on tallennettu. Tämän seurauksena havaitaan virheellisen pakatun tiedon muodostumista ja puskurin rajan ulkopuolella tapahtuvasta kirjoittamisesta johtuvaa kaatumista.

Haavoittuvuus sitä voidaan hyödyntää vain kiinteisiin Huffman-koodeihin perustuvalla pakkausstrategialla. Samanlainen strategia valitaan, kun Z_FIXED-vaihtoehto sisältyy koodiin (esimerkki sekvenssistä, joka aiheuttaa kaatumisen käytettäessä Z_FIXED-vaihtoehtoa). Koodista päätellen Z_FIXED-strategia voidaan valita myös automaattisesti, jos tiedoille lasketut optimaaliset ja staattiset puut ovat samankokoisia.

Ratkaisu tässä yhdistää etäisyyspuskurin ja literaalin/pituuden puskurit yhdeksi symbolipuskuriksi. Nyt kolme tavua dpuskuritila avataan jokaiselle literaalille tai pituudelle/etäisyydelle kulutettu pari, edellisen kahden tavun sijasta tämä varmistaa
että vireillä oleva puskuri ei voi korvata symbolitaulukkoa, koska suurin pakatun kiinteän koodin pituus/etäisyys on 31 bittiä ja koska jokaista kolmea tavua kohden on neljä tavua jäljellä olevaa tilaa symboliavaruudesta.

Ei ole vielä selvää, vastaavatko haavoittuvuuden hyödyntämisolosuhteet Z_DEFAULT_STRATEGY-pakkausstrategiaa, jota käytetään oletuksena.

Muussa tapauksessa haavoittuvuus rajoittuu tiettyihin järjestelmiin, joissa Z_FIXED-vaihtoehtoa käytetään nimenomaisesti. Jos näin on, haavoittuvuuden aiheuttama vahinko voi olla erittäin merkittävä, koska zlib-kirjasto on tosiasiallinen standardi ja sitä käytetään monissa suosituissa projekteissa, mukaan lukien Linux-ydin, OpenSSH, OpenSSL, apache httpd, libpng, FFmpeg, rsync, dpkg. , rpm, Git, PostgreSQL, MySQL jne.

Mainitaan myös se valitut parametrit, joissa haavoittuvuus ilmenee kun valitset oletuspakkausstrategian Z_DEFAULT_STRATEGY. Todellisissa olosuhteissa, hyökkäystä pidetään edelleen epätodennäköisenä, koska paljastettua sekvenssiä käyttävä hyödyntäminen vaatii memLevel-parametrin asettamisen arvoon 1, kun taas taso 8 on valittu oletuksena.

Esimerkki lukitussekvenssistä, kun kutsutaan "deflateInit2(&strm, 7, Z_DEFLATED, 15, 1, Z_DEFAULT_STRATEGY)" (taso=7, windowBits=15, memLevel=1).

Vihdoin On syytä mainita, että ratkaisu ei myöskään sisälly edelleen jakeluiden tarjoamissa paketeissa, joten voit seurata korjausten julkaisua jakeluittain näillä sivuilla: DebianRHELFedoraSUSEubuntu, Arch LinuxOpenBSD  FreeBSDNetBSD, ja ongelma ei vaikuta zlib-ng-kirjastoon.

Jos haluat tietää enemmän siitä, voit tutustua yksityiskohtiin Seuraavassa linkissä.


Jätä kommentti

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

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.