Llwythwr deinamig
Hanfod y broblem: yn ystod gweithrediad, mae ld.so yn tynnu gwerth y newidyn LD_LIBRARY_PATH o'r amgylchedd yn gyntaf ac, gan ddefnyddio'r ffwythiant _dl_split_path(), yn ei droi'n amrywiaeth o linynnau - llwybrau i gyfeiriaduron. Os daw i'r amlwg yn ddiweddarach bod y broses gyfredol yn cael ei chychwyn gan gais SUID/SGID, yna mae'r arae a grëwyd ac, mewn gwirionedd, y newidyn LD_LIBRARY_PATH yn cael eu clirio. Ar yr un pryd, os yw _dl_split_path() yn rhedeg allan o gof (sy'n anodd oherwydd y terfyn 256 kB penodol ar faint y newidynnau amgylchedd, ond yn ddamcaniaethol bosibl), yna bydd y newidyn _dl_libpath yn derbyn y gwerth NULL, a gwiriadau dilynol o bydd gwerth y newidyn hwn yn gorfodi hepgor yr alwad i _dl_unsetenv ("LD_LIBRARY_PATH").
Darganfuwyd bregusrwydd gan arbenigwyr
Ychwanegu: Mae rhif wedi'i neilltuo i'r broblem
amd64 ac i386 (gellir addasu'r ecsbloetio ar gyfer pensaernïaeth eraill).
Mae modd manteisio ar y mater yn y gosodiad rhagosodedig ac mae'n caniatáu i ddefnyddiwr lleol difreintiedig weithredu'r cod fel gwraidd trwy amnewidiad llyfrgell wrth redeg y cyfleustodau chpass neu passwd suid. I greu'r amodau cof isel sy'n angenrheidiol ar gyfer gweithredu, gosodwch y terfyn RLIMIT_DATA trwy setrlimit.
Ffynhonnell: opennet.ru