Glibc, PaX i problemy ...

Paweł Sikora pluto at pld-linux.org
Sun Jan 30 11:51:30 CET 2005


On Sunday 30 of January 2005 10:57, Kosmo wrote:
> Witam.
>
> Jakiś czas temu pisałem na liście że po upgradzie glibc'a rozwaliło mi
> maszykę. Sprawa została zbadana:
>
> Nowy glibc zaczął respektować flagi w nagłówku PT_GNU_STACK bibliotek.
> Między innymi jest tam informacja czy dana biblioteka ma mieć wykonywalny
> stos. Część binarek u nas chce mieć taki fikuśny stos (np. libgcrypt), co
> powoduje wywalenie się programu podczas ładowania bibliotek dzielonych
> (glibc wykonuje mprotect(), który zwraca EPERM) i ogólną rozwałkę systemu.
>
> Na wcześniejszym glibcu takich negatywnych efektów nie zaobserwowałem
> (wszystko miało non-exec na stosie i restrykcje na mprotect()), a na nowym
> po wyczyszczeniu tej fagi na wszystkich bibliotekach za pomocą execstack
> wszystko pięknie hula. Proponuję więc, aby czyścić tą flagę podczas
> budowania rpm'ów.

nie! nie będziemy dla popsutych programów przewalać wszystkich binarek.
jak ktoś chce używać pax-a, to powinien wiedzieć co się z tym wiąże
i kilka kłopotliwych bibliotek na serwerze sobie oflaguje odpowiednio
albo autorzy je poprawią, bo w większości przypadków wykonywalny stos,
to wina źle napisanych wstawek w asm., które z reguły go nie potrzebują.
z sytuacji są przynajmniej 3 wyjścia:

[1] dodać .section .note.GNU-stack,"", at progbits; .previous
    do plików .S które nie wykorzystują wykonywalnego stosu.
[2] kompilować te programy przekazując do gcc -Wa,--noexecstack.
[3] linkować z flagą -Wl,-z,noexecstack.

w ostateczności dla niereformowalnych wyjątków można %post puścić
execstack, a nie protezować wszystkie binaria.

-- 
/* Copyright (C) 2003, SCO, Inc. This is valuable Intellectual Property. */

                           #define say(x) lie(x)




More information about the pld-devel-pl mailing list