Theo az "ördögi" videokártyákról

Címkék

Theo de Raadt egy emlékeztetőt küldött az openbsd-misc listára, amelyben arra figyelmeztett, hogy aki nem használ a gépén X-et, annak erősen ajánlott az "aperture" letiltása biztonsági okokból.
Más operációs rendszerekkel ellentétben, ahol a root processz közvetlenül "beszél" a video kártyával a /dev/mem-en keresztül, az OpenBSD-ben nem root-ként fut az X szerver, hanem privilégium elkülönítetten. Az _x11 felhasználó futtatja jail-be zárva. Az OpenBSD egyes architektúrákon (i386, amd64, alpha, cats, macppc, és sparc64) az aperture driver-en keresztül fér hozzá a video kártya IO regisztereihez.

Az OpenBSD szerint a videokártyák "ördögi" dolgokat tartalmaznak, és az újak egyre többet. Ezért azt javasolják, hogy aki nem futtat X szervert, az tiltsa le ezt a drivert. Ez megtehető a /etc/sysctl.conf-ban:

#machdep.allowaperture=2 # See xf86(4)
machdep.allowaperture=0 # See xf86(4)

Az OpenBSD telepítő eddig is megkérdezte, hogy akar-e a felhasználó X-et futtatni:

"Do you expect to run the X Window System? [yes]"

Ekkor került beírásra a megfelelő érték a /etc/sysctl.conf-ba. Eddig az alapértelmezett válasz "yes" volt, de ez változni fog a következő OpenBSD kiadásokban. A 3.9 után "no" lesz.

Theo levele az ördögi technikákról itt.

Hozzászólások

Szerintem írják meg az OpenX-et! Akkor tényleg LESS EVIL lesz. :)
Amúgyis koncepcionálisan újra kellene írni az egészet, mert egy halom trágya. Ebben igaza van Theo-nak.

"Amúgyis koncepcionálisan újra kellene írni az egészet, mert egy halom trágya."

jaja, csak evrol evre ganyolva van, tetu lassu, xar az api-ja, nincsen normalis testreszabhato widgetkeszlete mindenki 125-felet makenyol hozza+ugyanennyit tesztel

---------------------
Ригидус а бетегадьбол

Elnezel a lenyeg mellett... A lenyeg nem a jelenlegi X implementacion van. A baj, hogy az uj videokartyaknak szukseguk van DMA-ra bizonyos funkciok implementalashoz. Es ha valami bug van egy termekben, ami hasznalja a videokartya "kenyes" funkcioit (pl. shader, ...), akkor ezzel at lehet hidalni barmilyen vedelmet (irni/olvasni lehet barmilyen fizikai memoriacimet).

Még szerencse, hogy szükségük van! Jól néznénk ki, ha nem direct memory accessel mennének. Nem. Itt sajnos arról van szó, hogy sz*r az X kódja és a driverek meg még sz*rabbak. Egy applikáció sosem kellene elérje a memóriát vagy bármi mást direkt! Tehát nem a vidkarik a hibásak, hanem a közvetlen köré épülő szoftverréteg. Valahol Theo is ezt akarta mondani, vagy pedig azt, hogy a X-et már nem merik újrarni OpenX-é ezért jól lefakkolta a modern videokarikat :D

Nem értelek. A mai OS design pont arról szól, hogy user level futási szinten levő kód nem operálhat közvetlen a memóriával, csak valamilyen trap-en keresztül. Pl. a malloc() végsősoron egy kernel trap-et idéz elő, majd a kernel priviledged szinten közvetlen elvégzi az allokációt és az adminisztrációt.
Én azt mondtam, hogy rendesen, stabilan meg kellene írni egy priv. level kódot az X-ből, ami DMA-val és közvetlen membabrálással dolgozik és ezzel egy hasonló szeparált koncepcióval felépteni rá a maradék grafikus felületet. Ergo csak egy jól tesztelt kód férne hozzá a memóriához, nem pedig akármilyen program.
TUdom, koncepcionálisan ez így is van most is az X-nél, csak a baj, hogy a valóságban nem! :-)