Portál AbcLinuxu, 20. července 2025 10:24


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
5.8.2012 23:00 Thyrst' | skóre: 6 | blog: a256
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Odpovědět | Sbalit | Link | Blokovat | Admin
Stane se :)
5.8.2012 23:33 Maruška
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Co by tomu řekl Jára Cimrman
Jardík avatar 6.8.2012 00:04 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Odpovědět | Sbalit | Link | Blokovat | Admin
Hmm, hodně stará informace, která byla součástí changelogu Chromia, na který bylo odkazováno v některé starší zprávičce. Bude to něco přes měsíc, co to tu bylo.
Věřím v jednoho Boha.
Jardík avatar 6.8.2012 00:11 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Jinak integer overflow je šmejd a nejčastěji se nachází o programů, co používají znaménkový int (a nebo i neznaménkový, ale znaménkový je podstatně horší, protože overflow znaménkového typu v C = může se stát cokoliv od "nic se nestalo" po smazání uživatelova adresáře, proč? Protože standard) místo neznaménkového size_t.
Věřím v jednoho Boha.
Voty avatar 6.8.2012 13:52 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Já vždycky doufám, že mi to objedná pizzu a ono pokaždý nic :(
Jednu rozbil a tu druhou ztratil.
6.8.2012 12:56 Zvedavec
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Odpovědět | Sbalit | Link | Blokovat | Admin
Cira zvedavost: Jak muze preteceni integeru dovolit utocnikovi spustit libovolny kod? Cekal bych nedeterministicke chovani, segfaulty a podobone, ale tohle fakt ne... Diky za vysvetleni.
D.A.Tiger avatar 6.8.2012 13:28 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Je to jen čirá spekulace, ale předpokládám, že to souvisí s maximální velikostí typu int na dané platformě - místo toho, aby byla hodnota uložená v proměnné ořezána tak ji program zkusí na hulváta narvat do paměti a tím ji asi protuneluje do dalšího segmetu paměti, který už však nemá alokovaný. Pokud by tam byl nachystaný vhodný exploid tak se asi tím pádem spustí. Proč to neodchytí systém a aplikaci nesestřelí, v tuto chvíli netuším. Každopádně divné mi to je taky a navíc si nemyslím, že by to bylo zas tak jednoché....
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
6.8.2012 13:48 ::: | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
taky by me zajimalo jak je to mozny

jinak ten tvuj pokus o vysvetleni, jestli jsem ho pochopil, tak neni spravne. Kdyz si predstavis kod v asm, tak tam je presne dany jak je ktery registr velky a s kolika byty pameti instrukce pracuje. Ne ze by si procesor vsimnul ze mu vyslo velky cislo a tak pouzil vetsi typ a neco prepsal :-)
Voty avatar 6.8.2012 14:07 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Nevím jak je to v tomto konkrétním příkladě, pač ten patch jsem moc nepochopil :( Ale podle normy (jak již psal Jardík) je možné, aby po přetečení znaménkového typu došlo k čemukoliv a optimalizace překladače toho obvykle dost zneužívají.
Jednu rozbil a tu druhou ztratil.
6.8.2012 13:51 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: Integer overflow v libxml2

Prikladám link na Debian Bug report log.Posledná správa hovorí čo má robiť daná úprava.Vážnosť chyby je označená ako vysoká. Na prvom linku v správičke je napisané, že ide o integer overflow.

Root v linuxe : "Root povedal, linux vykona."
D.A.Tiger avatar 6.8.2012 14:28 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Já to začínám chápat (ona v tom možná hraje roli i moje poměrně blbá angličtin) tak, že jim nepřetíká int jako takový, ale buď ukazatel na int, nebo přímo celý pole typu int. A jen blbě zvolily titulek. Každopádně jasnější by to bylo, kdybych měl někde úryvek toho kódu, žel bohu, odkaz na to jsem nenašel...
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
Jardík avatar 6.8.2012 15:01 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
No ono to může být přetečení intu. Jestli někde libxml používá int místo size_t a narazí na nějaký vstup s "velkou velikostí", tu narve do intu, tam to přeteče, nebo to přeteče po přičtení něčeho, na dané platformě se to třeba může zachovat (kromě smazání disku ^^) třeba uložením záporného čísla (třeba -1) a pak ten trotl zavolá malloc(můj_záporný_int) a ono mu to vyprskne třeba nějaký malloc(SIZE_MAX), což by mohl vysvětlovat nějaký ten patch omezující malloc na 512M. Ale popravdě netuším, co se tam děje za voloviny, nějak jsem to nezkoumal a ani se mi nechce.
Věřím v jednoho Boha.
Jardík avatar 6.8.2012 15:17 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Jinak tohle v tom patchi, to je opravdu vopičárna:
*(volatile char*)0 = '\0';
return NULL;
jejíž jediným smyslem je zabránit rozpadnutí se zřejmě rozbitého kódu, který si nic jiného než rozpadnutí nezaslouží.
Věřím v jednoho Boha.
Voty avatar 6.8.2012 15:48 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Jojo, to mě docela rozesmálo. Být překladačem, tak to klidně budu ignorovat :)
Jednu rozbil a tu druhou ztratil.
6.8.2012 16:56 Martin Mareš
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
To se u čehokoliv, co je volatile, jaksi nesmí.
Voty avatar 6.8.2012 21:31 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Pokud je to zároveň undefined behavior, tak bych řekl, že se to může. Nevidím důvod, proč by se UB nemohlo projevit právě tím, že se daný statement neprovede :)
Jednu rozbil a tu druhou ztratil.
6.8.2012 16:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Asi z nějakého důvodu nechtěli nebo nemohli použít abort() - akorát mne žádný nenapadá.
7.8.2012 09:09 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
To bude proto, že tohle je oprava od Chromia pro jejich sandbox, kde je to afaik ta korektní cesta.
When your hammer is C++, everything begins to look like a thumb.
little.owl avatar 6.8.2012 22:49 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
A to opravdu nazyvaji "oprava"?
A former Red Hat freeloader.
6.8.2012 23:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
To je jen obrat pro případ, že by někdo zavolal xmlMalloc() s parametrem větším než 2^29. Ale není mi moc jasné, proč v takovém případě prostě nevrátit NULL, jak je ve slušné společnosti zvykem, nebo když už se rozhodli nechat takový program zhavarovat, proč nepoužili funkci abort(), která je k tomu určená.
little.owl avatar 6.8.2012 23:42 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Nejspis chteji program ukoncit misto vraceni NULL nebot plno PC programatoru proste netestuje navratovou hodnotu u alokace pameti a architektura aplikaci nemusi byt pripravena na pripadne selhani; rychly fix pak proste casto neni mozny. V pripade nepouzitu abort() se mozna chteji vyvarovat pripadu kdy aplikace maji SIGABRT handler. Jen spekuluji.
A former Red Hat freeloader.
7.8.2012 06:25 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
To je možné vysvětlení. Ještě mne napadlo, že by to mohlo být kvůli nějakým platformám, kde abort() není nebo nedělá co má, ale ta funkce je předepsaná ISO normou jako součást standardní C knihovny, takže to by snad hrozit nemělo.
pavlix avatar 7.8.2012 15:56 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Ještě mne napadlo, že by to mohlo být kvůli nějakým platformám, kde abort() není nebo nedělá co má, ale ta funkce je předepsaná ISO normou jako součást standardní C knihovny
Jenže little.owl psal o případu, kdy abort() k dispozici je a podle normy se chová, tedy pokud ISO nedefinuje abort() výrazně odlišně od jiných zdrojů (první, co mi vypadlo z googlu).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.8.2012 16:26 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Čeština má holt málo časů, to "ještě mne napadlo" byla zmínka o další možnosti, o které jsem uvažoval před jeho příspěvkem (a před příspěvkem Michala Vyskočila).
pavlix avatar 7.8.2012 17:24 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Integer overflow v libxml2
Spíš já blbě čtu.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.