Ngarkues dinamik
Thelbi i problemit: gjatë funksionimit, ld.so së pari nxjerr vlerën e ndryshores LD_LIBRARY_PATH nga mjedisi dhe, duke përdorur funksionin _dl_split_path(), e kthen atë në një grup vargjesh - shtigje drejt drejtorive. Nëse më vonë rezulton se procesi aktual është nisur nga një aplikacion SUID/SGID, atëherë grupi i krijuar dhe, në fakt, ndryshorja LD_LIBRARY_PATH pastrohet. Në të njëjtën kohë, nëse _dl_split_path() mbaron memoria (gjë që është e vështirë për shkak të kufirit të qartë prej 256 kB në madhësinë e variablave të mjedisit, por teorikisht i mundur), atëherë ndryshorja _dl_libpath do të marrë vlerën NULL dhe kontrollet pasuese të vlera e kësaj ndryshore do të detyrojë të kapërcejë thirrjen te _dl_unsetenv("LD_LIBRARY_PATH").
Dobësi e gjetur nga ekspertët
Shtim: Problemit i është caktuar një numër
amd64 dhe i386 (shfrytëzimi mund të përshtatet për arkitektura të tjera).
Problemi është i shfrytëzueshëm në instalimin e paracaktuar dhe lejon një përdorues lokal të paprivilegjuar të ekzekutojë kodin si rrënjë nëpërmjet zëvendësimit të bibliotekës kur ekzekuton shërbimet chpass ose passwd suid. Për të krijuar kushtet e memories së ulët të nevojshme për funksionimin, vendosni kufirin RLIMIT_DATA nëpërmjet setrlimit.
Burimi: opennet.ru