Amikor egy biztonsági javítás nagyobb gondot okoz, mint amit javít ...

Címkék

Az eredeti biztonsági hiba önmagában nem volt "annyira" veszélyes. Ahhoz, hogy kihasználásával egy támadó egy minimális támadást összeállíthasson és azzal egy programot összeomlaszthasson, számos előfeltétel teljesülésére volt szükség. Majd jött a "javítás", ami nyomán egy sokkal komolyabb biztonsági probléma mutatkozott be. Kiderült, hogy bizonyos körülmények közt segfault idézhető elő magában a glibc-ben, így bármely, glibc-t használó program összeomlaszthatóvá vált. Ráadásul, a hiba a javítás után sokkal könnyebben triggerelhető lett:

While performing this work on CVE-2021-33574, Nikita Popov, one of our Team members, identified a problem with the upstream glibc. It turns out that it is possible to cause a situation where a segmentation fault could be triggered in a specific code path within the library. This can, in turn, lead to the application using the library to crash, resulting in a Denial-of-Service issue.

Bear in mind that glibc provides the main system primitives and is linked with most, if not all, other Linux applications, including other language compilers and interpreters. It is the second most important component of a system after the Kernel itself.

A hibát felfedező TuxCare (pontosabban egyik alkalmazottja, Nikita Popov) mind a hiba leírását, mind a javítást beküldte a glibc-t karbantartó csapatnak. A javítás bekerült az upstream glibc-be. Részletek itt.

Hozzászólások

Szerkesztve: 2021. 08. 17., k – 19:04

Az f4×4. A glibc-t amúgy is szeretjük, jó bloat valami, de ha még bugok is vannak benne, kiadásról kiadásra egyre súlyosabbak, akkor még sokkal finomabb.

Úgy néz ki, hogy a glibc 2.33.5 érintett, a 2.34-esben hozzák ki a javítást. Ez a verzió egyelőre még csak Fedorán jelent meg, ott is csak a Rawhide tárolóiban. Archon még a Testingben sincs (vagyis AMD64-es verzió nincs, ARM64-es van). Az, meg hogy Debian-, Ubuntu-alapú disztrók mikor kapják meg, az meg végképp rejtély. Csak hogy az élvezeteket fokozzuk.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

De, lehet úgy is, hogy visszaportolják a 2.33.6-ba. Csak történjen akkor valami. Bár a rolling világában inkább az új verzió jelenik meg és nem portolgatnak vissza, mert a rolling nem arról szól, hogy régi verziók legyenek foltozva, hanem az újak jöjjenek ki.

Az egész annyiból furcsa, mert egy ilyen sebezhetőségnél 24 órán belül szoktak lépni, de 48 órán ritkán esik kívül. De ez mostanában az Archon kezd általános lenni, az 5.13-as kernellel 2 hetet késtek, a 91-es Thunderbird-del több napja késnek, új glibc-vel 2 napja késnek. Az még oké, hogy a Core-ben nincs, de hogy a Testingben se legyen? Nagyon remélem, hogy ez csak a covid utáni nyaralási láz hatása, mert ha hosszú távon így marad, váltanom kell vagy Fedorára, vagy valami Archnál frissebbre.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Mondjuk lehet ezt kéne, ebben igazatok van. Csak azt nem értem, hogy eddig nem volt vele gond évekig, az új verziók jöttek kb. 24-48 órán belül, még karácsonyi időszakban is. Most vagy a covid vitte el az összes fejlesztőt, vagy még mindig nyaralási láz van, de még az utóbbi se lenne baj, csak akkor tegyék közzé közleményben, hogy szeptember első hetéig akadozás várható a csomagok frissülésénél vagy valami. Tisztában vagyok vele, hogy ez egy ingyenes, közösségi OS, nem lehet határidőket elvárni, de ez így akkor is gáz, hogy ilyen hirtelen változás, egyszerre csak csend és finxxxag, az ember meg néz, hogy mi van.

Sőt, vannak csomagok, amiknek 2-3 karbantartója is van, pl. a kernel, de a glibc is ilyesmi lesz, mivel annyira alap csomag. Eddig nem is hittem, hogy olyan egyszeri user segítségére szorulnának, mint én vagyok, annál profibbnak tűntek eddig.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Nem szeretném, hogy a főnököm légy. Csak pislogok az embertelen elvárásaidon. A fejlesztő is ember, szüksége van pihenésre, nyaralásra. A programozás munka, mégha az is lehet örömteli. Az élet meg az, ami a munkán kívül van, amiért az ember a munkát végzi. Mondom ezt fejlesztőként úgy, hogy nagyon változatos a munkám, ráadásul hol hardware, hol firmware fejlesztés, és nagyon szeretem.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Eddig tartották ezt a rendszert, ezért is alakult ki ez az elvárásom. Mondom, itt nem a határidő a lényeg, hanem a kommunikáció teljes hiánya. Na, mindegy, úgy néz ki, hogy ebből ilyen LTS disztró lesz mégis, a végén az ubuntusok is irigykedni fognak, hogy micsoda retró rendszert futtatok, csak akkor néha a hátam mögé kell nézni, nehogy betámadjon hátulról egy T-rex.

Meg itt azt kell érteni, hogy ez nem főnökösködés és hajtás. A bleeding edge rolling a friss verziókról szól. Aki pihenni akar, az elmegy ubuntus, debianos karbantartónak, ott jó sokat lehet pihenni, windowsos fejlesztőként még többet. De az ilyen Arch jellegű disztrókat pont azért hozták létre eleve, meg karbantartók azért csatlakoztak, mert látták, hogy a pihenés meg a régi csomagverziók milyen gondokat okoznak. Feltennék Fedorát én is, de 1) nem full rolling, 2) nem akarom a Red Hat corporate bloatjait, csodapatcheit a rendszeremen tudni, ugyanezt az OpenSuse Tumbleweed vonaláról is el tudom mondani. Másról meg nem tudok, ami friss. Sajnos a Gentoo sem a legfrissebb, még ha a legújabb profillal is telepítem, ha meg 9999-es csomagokkal telepítem, akkor tényleg eltörik.

Ez épp olyan, mint a FOSS projektek. Ott sem azért nyitott a kód, hogy a főnökükként belenézz, meg neked dolgozzanak ingyért. Hanem mert belátták a fontosságát, szem előtt tartják a fenntarthatóságot, megbízhatóságot, ergo saját maguknak csinálják, csak ha akarod, hasznonélvezője lehetsz.

Másnapi szerkesztés: sőt, rollingnál kötelező a fenntartóknak is haladni a verziókkal, mivel az egész ökoszisztéma arra épül, hogy frissek a verziók. Ebben a műfajban, ha hátradőlnek, akkor szépen elkezdenek dolgok nem működni, fokozatosan szétesni az egész, hiszen kielégítetlen verziófüggőségek miatt kártyavárként, meg dominósorként borul a többi csomag. Meg mire azon kapják magukat, hogy csinálni kéne, a csomagok már nem is egy, hanem sok verzióval tartanak előrébb. Ez nem az én elvárásom, hanem a rolling természetéből adódóan működés miatt van ez. Jó, elvileg ez a pár nap késedelem még nem meghatározó, mert azért olyan gyorsan nem avulnak, de múltkor az a 2 hetes kernelmegjelenési csúszás már kezdett oltári kínos lenni, és máris több csomaggal afelé tartunk. A másik, amit itt látni kell, hogy ilyen rolling disztrónál a build szervereket automatizált mechanizmusok szépen gitezik le meg autoforgatják, csomagolják script alapján az új csomagverziókat, szóval nem úgy megy, hogy a csomagfenntartónak csákánnyal a hátán kemény verítékes munkája van benne minden egyes verziónál. Néha ugyan patchet kell alkalmazni, meg forgatási-futási probléma miatt belenyúlni, de messze nem minden csomagnál.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Raynes, a csomag készítés folyamata minden disztrónál így megy, verziókövetőzött, buildszerveres. Sehol nem a saját gépen készíti el a csomagot a karbantartó, max csak teszt jelleggel, működik-e a csomag, ha igen commit, buildszerver meg elkészíti és repóba hányja automatizálva. 

Amúgy lehet nem itt kéne hőbörögni, hanem megkérdezni a megfelelő csatornán, hogy miért késnek ezzel-azzal. Lehet stabilitási probléma, vár egy masik csomag frissítésére, vagy tényleg csak simán nem ér rá a m8r, de legalább megtudod nem csak konteózol a hup.hu-n... 

Gondoltam itt is van pár archos emberke, aki tud valamit. Jelezni fogom az Arch fórumán is természetesen. Mondom, nem az a baj, hogy nem jön az új verzió, hanem mellé 0 kommunikáció társul, akkor tegyék közzé, hogy ideje nincs, vagy stabilitási problémába futott, vissza van tartva a csomag, dolgozik rajta, türelem. Egy ilyen másfél sor elég lenne az Arch főoldalára a hírek szekcióba, mert ugyebár nem dísznek van az oldaluk, meg nem csak az iso-k letöltésére. Ez nem konteó, szimplán anitszociálisság és/vagy lustaság. Ennyi. Ami még mindig nem zavarna annyira, ha mondjuk első alkalom lenne, de kezd egyre sűrűbb lenni, ráadásul a kernelt még megoldottam AUR-ból, meg a Thunderbird-öt is meglehet, de pl. glibc-nél nincs AUR-os csomag sem.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Nem értem mi mondanivalója lenne. Nem nyitottam sehol issue-t. Ez nem bug, nem feature request, nem régi issue újraküldése, amit ki kéne farmolni, hanem létező sechole, amit a szokásukkal ellentétben már 12 napja nem foltoznak. Ettől függetlenül is az Arch automata rendszere a glibc 2.33-5 csomagot már 23 napja out of date figyelmeztetéssel látta el, sérülékenységtől eltekintve már akkor is egy új verzió volt betervezve, normál ügymenetben. Itt valami nagyon nem kerek. Eddig lustaságból nem jeleztem az Arch fórumon, most már fogom, akkor is, ha most nemsokára jön az új verzió, mert ez a rendszeres késedelem kezd általános jellegű lenni, ami zavar. Ide sem azért írtam több ízben, mert ugyanazt az issue-t küldeném be, hanem ti vitatkoztok, hogy így vagyok eltájolva, úgy fotelszakértő, és csak próbálok blogolás jelleggel rávilágítani, hogy nem.

Tippem szerint azért nem frissíti a csomagfenntartó, mert az CVE-k szerint a glibc 2.34-ben is van már sérülékenység, igaz egyel alacsonyabb besorolású, talán azért vár vele. Közben AUR-ból próbáltam forgatni a glibc-git csomagot, de beleállt fordítási hibával a földbe. Most egy másik AUR csomaggal próbálom, glibc-dso, de 8 magos gépen 30 perce fordult, végtelen loopban, ezért lelőttem. Ez valami spéci verzió lehet, mert valami testscript dolgozott egy szálon, majd újra és újralinkelte az egész cumót, látszólag végtelen ciklusban, amit nem értek. Tényleg csak azért lőttem le, mert ennek 10 percnél nem lenne szabad tovább tartania, meg a kimenetből egyértelműen látszott, hogy valami testscript vizsgálta a binárist, és annak alapján mindig végig ld-zte ugyanazt a kört, ennek nem sok értelme van.

Meg itt szerintem még mindig elbeszélünk egymás mellett. Ez a frissülés nem az én elvárásom, hanem a bleeding edge rolling ökoszisztéma működik így. Aki ebben benne van, akár felhasználóként, akár csomagfenntartóként, az tudja mibe száll bele, már mikor belekezd! Lehet ez nektek Ubuntu LTS, meg Debian usereknek morbid, de ne felejtsük el, hogy mindig mindenki morbid valakinek a szemszögéből, pl. egy Windows user titeket sem ért, hogy hogyan lehet Linuxot használni, mikor tiszta önszivatás, és a desktop éve nem jött el, meg az Adobe Fotóbolt, Májkrémszaft Iroda és a Apex Legends se megyen rajta, meg hogy lehet ingyenes programot fejleszteni, miből élnek akkor a fejlesztők, meg mi tartja fent a kódminőséget, ha egyszer az ingyenmunka nem motivál. Azt hiszem te is nehezen magyaráznád el nekik, hogy ez nem a te elvárásod, meg nem neked dolgoznak, nem értenék. Ezért is van ennyi disztró, meg ennyi különböző unixlike rendszer, mert mindegyik mögött más filozófia, és mindset van. Most vegyük ki az Ubuntu forkokat, amik sokszor csak re-skin-ek, azoknak tényleg nincs sok értelme.

Sokáig nem volt bajom a glibc-vel, csak egy normál n+1. csomagnak tűnt, de már kezdem látni, hogy az alpine-osok, meg kiss-esek miért próbálkoznak musl-lel. A glibc valóban bloat, már Gentoo-n is észleltem, hogy nem épp röpke fordítási idejű (bár ott csak valami 10 perc körül volt a fordítása egy 2 magos 4 szálas ősrégi laptopon), most elnézve ezt a folyamatos CVE tengert, ami körbeveszi, már érthető mi a baj vele. Meg ilyenkor bizonyosodik be, amiről a suckless gárda mindig papol, hogy az átteketinthetetlen, feature bloat kódméret hova vezet. Fenntarthatatlansághoz, kód átláthatatlanságához, sechole-ek tengeréhez, amit egyre nehezebb úgy javítani, hogy ne hozzon be újabbakat.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Az, meg hogy Debian-, Ubuntu-alapú disztrók mikor kapják meg, az meg végképp rejtély.

Megkockáztatom, hogy nem is érintettek. Debian Bullseye 2.31-essel jön, az eredeti bugban az ha jól látom még nem érintett. Ubuntu nem tudom, de ha érintett is, még gyaníthatóan nem patchelték bele a nagyobb bugot...

Archon meg nem is lesz testingben, már ha a repo keresőben nézegeted :D Rajta van az out-of-date flag, core csomag, gyanítom hamar meglesz.

Minden projektnek kellene egy-két év pihenő, mikor semmilyen új dolgot nem visznek bele, csak hibajavítás és kódtisztítás folyik, esetleg egyes modulok újraírása új biztonsági elvek mentén.

Ez használni kellene Windows-tól kezdve az ilyen szabad szoftveres projektekig mindenre. Vagy milyen megoldás jöhet még szóba? 

A problema, hogy a piac nem igenyli/fizeti meg a minoseget.

Pl. a Windows fejlesztese pont arrol szol hogy kirugjuk a teszteloket es "majd a felhasznalok tesztelnek elesben".

 

Egyebkent az OpenBSD pont arrol szol, hogy a leheto legbiztonsagosabb rendszert hozzuk letre; es uj dolgokat alig adunk hozza.