RE: Linuxová hardcore otázka na víkend :-)

Tomáš Koželuh mr.death na ipq.cz
Sobota Březen 25 13:07:27 CET 2017


Nemohla by to být opravdu chyba ve verzi 4.4? Případně absence nějakého
patche? Já běžím na verzi 4.3_p48.

> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Pavel
Troller
> Sent: Saturday, March 25, 2017 6:38 AM
> To: hw-list na list.hw.cz
> Subject: Linuxová hardcore otázka na víkend :-)
> 
> Zdravím,
>   dovolím si malou otázku z prostředí Linuxu, třeba někdo bude vědět.
>   Týká se shellu bash. Včera jsem upgradoval na jednom systému na verzi
4.4.
> Tato je nově zkompilována pod glibc-2.25. Dříve jsem používal 4.1,
> kompilovanou pod glibc-2.20.
>   Od té doby nechodí KDE3.5 (instalace z roku 2009). Tento mi vyhovuje,
jsem
> na něj zvyklý a nechci ho upgradovat. Musí zůstat běžet :-).
>   Zjistil jsem, že důvodem je, že proces kdeinit nedostane řadu
proměnných,
> mezi jinými ani $PATH, které potřebuje, aby sám sebe a zbytek KDE našel.
>   Při hledání příčiny jsem zjistil, že výpis stromu procesů pod starým
> a novým bashem vypadá jinak.
> 
> Nový bash (nefunkční):
> root     28971  0.0  0.0   3736  2320 ?        Ss   Mar24   0:00
/opt/kde3.5/bin/kdm -
> nodaemon
> root     28973  1.6  3.8 220068 150616 tty10   Ss+  Mar24   9:09  \_
> /opt64/X11/bin/X :0 vt10 -auth /opt64/X11/lib/X11/xdm/authdir/A:0-3KmYhO
> root      8230  0.0  0.0   3828  2620 ?        S    05:59   0:00  \_ -:0
> patrol    8361  0.0  0.0 169112  3376 ?        Ss   06:01   0:00      \_
/bin/sh
> /opt/kde3.5/bin/startkde
> patrol    8464  0.0  0.0   2164   544 ?        S    06:01   0:00
\_ kwrapper
> ksmserver
> root      8451  0.0  0.0   2028    60 ?        S    06:01   0:00
start_kdeinit --new-
> startup +kcminit_startup
> patrol    8452  0.0  0.3  26136 13056 ?        Ss   06:01   0:00 kdeinit
Running...
> (procesu 8452 chybí spousta environmentu, 8451 ho ještě má)
> 
> Starý bash (funkční):
> root     28971  0.0  0.0   3736  2320 ?        Ss   Mar24   0:00
/opt/kde3.5/bin/kdm -
> nodaemon
> root     28973  1.6  3.8 220068 150616 tty10   Ss+  Mar24   9:07  \_
> /opt64/X11/bin/X :0 vt10 -auth /opt64/X11/lib/X11/xdm/authdir/A:0-3KmYhO
> root      4758  0.0  0.0   3828  2620 ?        S    05:49   0:00  \_ -:0
> patrol    4784  0.0  0.0 169304  3392 ?        Ss   05:49   0:00      \_
> /opt/kde3.5/bash/bash /opt/kde3.5/bin/startkde
> patrol    4876  0.0  0.4  23068 16428 ?        S    05:49   0:00
\_ ksmserver
> patrol    4878  0.0  0.3  25528 12980 ?        Ss   05:49   0:00 kdeinit
Running...
> (proces 4878 má kompletní environment)
> 
> Nerozumím hlavně tomu, proč pod novým bashem je vidět proces
start_kdeinit,
> který při spuštění starým bashem vidět není a zřejmě tam opravdu není,
neboť
> PID s nižším číslem než kdeinit je opravdu přeskočen - byl tam a již
zemřel.
> Spouštěcí bash script (startkde) se přitom vůbec nemění, až na "magický
> řádek", kde jsem přepsal původní #!/bin/sh (kde je teď nový bash) na
> #!/opt/kde3.5/bash/bash, kde je pro funkcionalitu KDE udržován starý bash.
> 
> Ten start_kdeinit už není script, ale poctivý ELF. Přesto vidím, že on
> ještě má environment kompletní (ten shell mu ho při volání tedy předá),
> ale jím spuštěný kdeinit (opět ELF) už ho nemá. Divné, že ? Jak to, že ten
> shell způsobí odlišné chování toho bináru?
> 
> Samozřejmě i ten starý bash se teď dynamicky linkuje ke glibc-2.25 a
funguje,
> z čehož soudím, že změna není v glibc, ale v bashi samotném.
> 
> Vzpomínám na SHELLSHOCK a řadu dalších vulnerabilit souvisícím s
> environmentem
> a přemýšlím, zda toto není nějaká bezpečnostní featura, která v tomto
případě
> spíše škodí než pomáhá, a zda by se nedala pro tento účel nějak
zablokovat.
> Přeci jen mít tam starý bash jen kvůli startu KDE se mi nelíbí :-).
Zdrojáky
> od té 3.5 dosud mám, v případě potřeby mohu klidně rekompilovat ten
> start_kdeinit (kde se to podle mne rozbije), ale nevím, co v něm změnit...
> Mimochodem když si pak KDE volá další věci v shellu, používá se už ten
nový
> bash a ten perfektně chodí.
> 
> Zdraví Pavel




Další informace o konferenci Hw-list