[devel] создание Стабильного бранча и Национальной ОС

Vladimir Lettiev thecrux на gmail.com
Ср Окт 13 16:18:46 UTC 2010


On Wed, Oct 13, 2010 at 02:00:23PM +0300, Victor Forsiuk wrote:
> > Perldoc _может_ работать от root, просто потребуется указать ключ -t
> > ( можно даже прописать alias perldoc='perldoc -t' )
> >
> 
> А теперь поместите себя, пожалуйста, в шкуру пользователя дистрибутива ALT.
> Даже суперправильного, который читает маны (oops, от такой привычки ему
> нужно отвыкать :). Он запускает perldoc, получает страшный матюк с
> нехорошими словами Error и Insecure. Логинится юзером, запускает *perldoc
> perldoc*. Вы видите в описании ключа -t текст, подсказывающий человеку, что
> это решение для запуска от root. Скорее он дойдет до секции SECURITY и
> поймет, что всё плохо: perldoc ... is known to have security issues.

perldoc при запуске от root скидывает привилегии до nobody, при этом
автоматически включается tainted режим, что запрещает использовать в 
вызовах system(), exec() или `` непроверенные данные, полученные извне.
Именно из-за tainted режима происходит ошибка вызова perldoc, поскольку
где-то в недрах ToMan.pm происходит запуск шела с коммандой, которая сформирована
из tainted переменных. Об этом собственно и говорит примечание в документации
по perldoc. С помощью ключа -t можно обойти использование модуля ToMan.pm
и получить вывод документации.

На самом деле это вопрос не праздный, почему в документации perldoc
нам прямым текстом сообщается:

  perldoc does not run properly tainted, and is known to have security issues

Где информация об известных уязвимостях в perldoc? Если они есть, то почему 
до сих пор не исправлены?


Насколько я успел раскопать, перед релизом perl 5.6.0 в 2000 году Tom Christiansen
провёл аудит кода perldoc и сделал множество исправлений безопасности, в том
числе реализовал сбрасывание привелегий для случая запуска от root. Также ввёл
опцию -U для ССЗБ (опцию правда позже убрали):

    -U  Run in insecure mode (superuser only)

Он же и написал то грозное сообщение о проблемах безопасности, предупреждая, что
запуск perldoc от root на модули из непроверенных источников - это опасно.

Если посмотреть в багтрак для perldoc, там действительно были такие проблемы,
например, создание временных файлов в каталоге /tmp/.perldoc, это потом
"исправили" добавив к имени текущий pid процесса... После исправлений
Tom Christiansen никаких проблем с безопасностью вроде бы не регистрировали.

-- 
Vladimir Lettiev aka crux ✉ theCrux на gmail.com


Подробная информация о списке рассылки Devel