A Google új maximális besorolású CVE-t rendel a támadások során kihasznált libwebp hibához

A Google új CVE-azonosítót (CVE-2023-5129) rendelt a libwebp biztonsági sebezhetőségéhez, amelyet 0day-ként használtak ki a támadásoknál, és amelyet két hete javítottak ki. A CVE-2023-5129 libwebp sebezhetőség átminősítése különösen fontos, mivel kezdetben észrevétlen maradt, mint potenciális biztonsági fenyegetés számos libwebp-t használó projektnél, beleértve az 1Password-öt, Signal-t, Safari-t, Mozilla Firefox-ot, Microsoft Edge-t, Opera-t, az Android natív webböngészőket, LibreOffice-t stb.

Részletek itt.

Hozzászólások

Nesze neked opensource... aminek mindenki tudja ellenőrizni a forráskódját. Persze, csak épp aki észreveszi a hibákat az nem jelzi, hanem szépen eladja az NSO Group-nak.

Olvasd el a hivatkozott cikket, hogy miért nem volt könnyű megtalálni. Azt meg, hogy aki megtalálja az inkább pénzt keres vele, azt meg lehet sejteni abból, ha találkoztál már életedben rosszindulatú emberrel.

A leírás végére én komolyan izgultam, hogy a végén az derül ki, hogy elméleti hiba van huffman tábla méretszámoló algoritmusban. De aztán végül nem, mégiscsak implementációs baj ez, de itt tényleg komoly elméleti munka kellett, hogy sikerüljön olyan huffman táblát konstruálni, ami szerkezetileg (mint bináris fa) helyes, de nem valid huffman kódot reprezentál, de a validáló algoritmus csak azután képes rájönni hogy invalid, miután már túlírta (valid kód worst case méretre lefoglalt) puffert.

Az a legérdekesebb, hogy akik kijavították a hibát, igazából nem értették hogy működik az exploit és elvileg helytelen fixet csináltak. Lekezelték azt az esetet, ami valójában nem lehetséges: hogy egy valid kód táblája nagyobbra nőjön, mint amekkorára elméletileg lehet. De a megoldásuk side-effectként javította ki a tényleges hibát, mert most előbb kiderül, hogy invalid a kódtábla, minthogy a pufferbe beíródna.

Szóval igen, ez borzasztó komplex exploit volt. Ez nem egy tipikus manyeyeballs bug.

Régóta vágyok én, az androidok mezonkincsére már!

> komoly elméleti munka kellett, hogy sikerüljön olyan huffman táblát konstruálni

az ilyen hibakat ugy szoktak keresni/megtalalni hogy random biteket modositgatnak valid fileokban addig amig el nem crashel tole.

anno az mplayer/ffmpeget is teszteltuk es nagyon sok bug elojott ilyen modon :(

Erre külön ki is térnek a cikkben, hogy a fuzzing hogyhogy nem fogta meg. Állítólag olyan szinten cornercase volt a validáló algoritmusnak, hogy kb termodinamikai szinten volt valószínűtlen, hogy a fuzzing random beletaláljon. Csak úgy sikerült puffertúlcsordulást csinálni, hogy 4 féle huffman táblát kellett egyszerre felvenni (nem néztem utána, hogy miért van 4 huffman tábla, talán a multi-zone kódolás miatt? abból 4 zóna lehet, de az mintha csak a lossy üzemmódban lenne, az exploit meg a lossless üzemmódot támadja). Az első 3 tábla valid és pont a maximális méretet használja (ami eleve nem túl valószínű valós fileokon), majd a 4. volt nagyon speciálisan invalid.

Régóta vágyok én, az androidok mezonkincsére már!

Név, weboldal, bögre, póló, tetoválás van már rá?