Узнав о уязвимости ldd, опубликованной несколько дней назад тут (новость на ЛОРе, в толксах), линуксоид rg3 написал небольшой скрипт lddsafe, выводящий ту же информацию, что и ldd. Скрипт использует objdump и безопасен, так как не запускает на исполнение проверяемую программу.
Два важных предостережения:
- для работы необходим bash версии 4.0 или поздней (для быстрого выполнения в скрипте используются ассоциативные массивы, доступные только в bash 4);
- скрипт проверен только в Slackware Linux (однако багрепорты и патчи принимаются, если он не работает должным образом в других дистрибутивах).
В будущем планируется переписать скрипт на Perl, чтобы он не зависел от версии bash 4.0.
Пример выполнения скрипта:
$ lddsafe /usr/bin/xcalc
libXaw.so.7 => /usr/lib/libXaw.so.7
libXmu.so.6 => /usr/lib/libXmu.so.6
libXt.so.6 => /usr/lib/libXt.so.6
libSM.so.6 => /usr/lib/libSM.so.6
libICE.so.6 => /usr/lib/libICE.so.6
libc.so.6 => /lib/libc.so.6
ld-linux.so.2 => /lib/ld-linux.so.2
libuuid.so.1 => /lib/libuuid.so.1
libX11.so.6 => /usr/lib/libX11.so.6
libxcb.so.1 => /usr/lib/libxcb.so.1
libXau.so.6 => /usr/lib/libXau.so.6
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6
libdl.so.2 => /lib/libdl.so.2
libXext.so.6 => /usr/lib/libXext.so.6
libXpm.so.4 => /usr/lib/libXpm.so.4
libm.so.6 => /lib/libm.so.6
>>> Подробности