Eskejpovani pro su

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pondělí Říjen 15 15:39:42 CEST 2012


On Mon, 15 Oct 2012, Ladislav Vaiz wrote:

> su -c 'dpkg -i $1' root
>
> Chtel bych, aby se $1 predal dpkg tak, jak je a nebylo mozno predhodit 
> shellu spoustenem pod rootem nejaky skodlivy kod.
>
> Jak to udelat bezpecne?

To jsou dva různé problémy. Přesněji řečeno ta první záležitost (jak 
znemožnit manipulaci se shellem) je podmínka nutná ale nikoli postačující 
pro druhou (jak to udělat bezpečně).

Samotné předání parametru by zase až tak složité být nemělo, mělo by 
stačit něco jako:   su -c 'dpkg -i "$0"' root "$1"

Problém je ale spíš jinde.

V první řadě je to otázka za tomu, kdo to su spouští (root to asi není,
to by to su bylo celkem zbytečné), můžete věřit, že tam pošle očekávaný 
příkaz a nepřidá si k tomu dpkg něco vlastního.

Druhá otázka je, do jaké míry lze věřit samotnému dpkg, že se nezachová 
nějakým nepěkným způsobem, když mu někdo předhodí nějaký opravdu ošklivý 
parametr. Nebo nějaká ošklivá environmentová proměnná.

A konečně třetí, nejobecnější, otázka zní, zda lze instalaci balíku 
považovat za bezpečnou operaci. Ten, kdo by mohl chtít do cesty k balíku 
strkat shellové příkazy, by tam stejně dobře mohl zkusit dát balík, jehož 
instalací se vyrobí nějaká (nová) bezpečnostní díra.

-- 
Pavel Kankovsky aka Peak                          / Jeremiah 9:21        \
"For death is come up into our MS Windows(tm)..." \ 21st century edition /


Další informace o konferenci Linux