LINUX.ORG.RU

TWiki insecure dependency

 , , ,


0

1

такое дело - на свежий deb8 поставил свежую twiki. И все бы хорошо, но периодически вываливает ошибка:

-T switch at /usr/share/perl5/CGI/Session/Driver/file.pm line 107

и twiki категорически отказывается показывать что-либо, кроме этой ошибки, пока не почистишь куки. Ошибка известна твиккерам: http://twiki.org/cgi-bin/view/Support/SID-02145

но судя по тому, что там пишут, там никто толком не понимает, что это и откуда. В багтрекере ихнем открыт баг: http://develop.twiki.org/~twiki/cgi-bin/view/Bugs/Item7721

и висит уже полгода, чувак, на которого баг повесили, тоже не понимает, что происходит. Советует вставлять print в разные части file.pm, я вставлял, не помогает. Регистрация у них там отключена, никак на этого товарища не выйти.

Может кто сталкивался и решил для себя эту проблему?

Еще пишут, что баг начинается от версии perl 5.10, каков наилучший путь замены на deb8 текущего perl 5.20.2-3+deb8u6 на < 5.10?

Еще пишут, что баг начинается от версии perl 5.10, каков наилучший путь замены на deb8 текущего perl 5.20.2-3+deb8u6 на < 5.10?

Это самый идиотский способ решения проблемы. -T - это taint mode, практически уникальная фича перла, позволяющая увеличить безопасность веб-сервисов и скриптов, работающих под рутом. Суть этого режима в том, что данные, полученные из вне, могут быть использованы строго определенным образом, чтобы предотвратить уязвимости вроде SQL-инъекций или выполнения чужого кода eval'ом.

annulen ★★★★★ ()
Ответ на: комментарий от annulen

Соответственно при даунгрейде перла ты просто заглушишь эту ошибку, создающую потенциальную уязвимость. Есть гораздо более простой способ это сделать - убрать '-T' в локальной копии file.pm, но лучше закрыть дырку

annulen ★★★★★ ()
Ответ на: комментарий от annulen

уязвимости нет

http://develop.twiki.org/~twiki/cgi-bin/view/Bugs/Item7721 тут пишут, что уязвимость та давно закрыта, но что-то в коде CGI::Session или Twiki считает иначе.

в том файле в указанной строке имеется: sysopen(FH, $path, $mode, $self->{UMask}) or return $self->set_error( «store(): couldn't open '$path': $!» );

никаких -T там нет

moveax3 ()
Ответ на: уязвимости нет от moveax3

Another not-too-convincing workaround is to get rid of the -T switch in the TWiki bin files

В http://twiki.org/cgi-bin/view/Support/SID-02145 опеределили, что $path is tainted. Знаичт, $path нужно сделать безопасным для использования, например прогнать через регулярку, захватывающую разрешенные пути, и взять $1

annulen ★★★★★ ()
11 ноября 2016 г.

Решение

Решение в следующем: после обьявления my $path = $self->_file($sid); добавить строку добавить строку: ($path) = $path =~ m/^(.*)$/;

то и будет тот самый untaint путем прогона через регулярку, о котором верно писал @annulen, но которое я, в силу незнания perl не мог реализовать

проблема не в twiki, а в CGI:Session, решение нашлось тут https://foswiki.org/Tasks/Item13938

moveax3 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.