Bug 12615

Summary: Weak permissions on .beam files
Product: Sisyphus Reporter: Nikolay A. Fetisov <naf>
Component: ejabberdAssignee: Anton Farygin <rider>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: rider
Version: unstable   
Hardware: all   
OS: Linux   

Description Nikolay A. Fetisov 2007-08-23 08:56:32 MSD
В 1.1.3-alt2 в каталоге /var/lib/ejabberd помимо баз Mnesia находятся также 
каталоги ebin/ и priv/ с библиотеками ejabberd. Права на эти  каталоги 
выставлены в 750, ejabberd:ejabberd; на файлы в них - в 640, ejabberd:ejabberd.

Правильнее было бы, наверное, вынести исполняемые файлы за пределы каталога с 
рабочими базами. Или, как минимум, поставить на эти каталоги права 755 
root:root, на файлы в них - 644 root:root, и на /var/lib/ejabberd - 01750 
ejabberd:ejabberd.
Comment 1 Mikhail Yakshin 2007-08-23 23:52:03 MSD
> Правильнее было бы, наверное, вынести исполняемые файлы за пределы
> каталога с рабочими базами.

Насколько я знаю об erlang - исходя из бесед с теми, кто на нем пишет - эти
файлы могут менять свое содержимое в процессе работы сервера. Так как /usr,
скажем, может быть смонтирован в ro (и это правильно), изменяемые файлы кладутся
в /var. Насколько я могу судить - это общеупотребительная практика для erlang,
именно там оно их и ищет и бороться с этим - сильно себе дороже. Так делает по
умолчанию make install и т.п., так же работает пакет в Debian/FreeBSD и т.п.

> Или, как минимум, поставить на эти каталоги права 755 root:root,
> на файлы в них - 644 root:root, и на /var/lib/ejabberd - 01750
> ejabberd:ejabberd.

Объясните, пожалуйста, подробнее, в чем смысл этих изменений?
Comment 2 Nikolay A. Fetisov 2007-08-24 01:13:46 MSD
(In reply to comment #1)
> Насколько я знаю об erlang - исходя из бесед с теми, кто на нем пишет - эти
> файлы могут менять свое содержимое в процессе работы сервера. 

Насколько я понимаю после очень поверхностного знакомства с общими положениями 
Erlang - BEAM-файлы являются скомпилированными в байт-код объектами. Они 
действительно _могут_ _быть_ изменены в процессе работы сервера - т.к. одной из 
особенностей Erlang является возможность динамически обновлять код без 
прерывания работы программы. Однако именно такая особенность вместе с 
возможностью самой программы писать в эти файлы очень и смущает.


> ... Так делает по
> умолчанию make install и т.п., так же работает пакет в Debian/FreeBSD и т.п.

Не совсем так, в Debian эти файлы расположены 
в /usr/lib/erlang/lib/ejabberd-<version>/ :
http://packages.debian.org/cgi-bin/search_contents.pl?searchmode=filelist&word=ejabberd&version=stable&arch=i386
Аналогичная ситуация в FC8.

> > Или, как минимум, поставить на эти каталоги права 755 root:root,
> > на файлы в них - 644 root:root, и на /var/lib/ejabberd - 01750
> > ejabberd:ejabberd.
> 
> Объясните, пожалуйста, подробнее, в чем смысл этих изменений?

Смена владельца запретит непривилегированному пользователю ejabberd изменение, 
замену и добавление новых файлов в указанные каталоги.
Установка sticky bit на /var/lib/ejabberd не даст возможность из-под 
непривилегированного пользователя переименовать каталоги ebin и priv, с 
дальнейшим созданием новых каталогов с теми же именами и размещением в них 
новых (изменённых) объектов.

Хотя лучше вынести их отдельно в %_libdir .
Comment 3 Vladimir V. Kamarzin 2007-08-24 08:05:15 MSD
(In reply to comment #0)

> и на /var/lib/ejabberd - 01750 
> ejabberd:ejabberd.

Это нарушает ALT Linux Security Packaging Policy:
http://docs.altlinux.ru/alt/devel/ch01s03.html#id2884290:
Владельцы каталогов

Пакеты НЕ ДОЛЖНЫ содержать каталоги, принадлежащие псевдо-пользователям. Вместо
этого следует использовать каталоги, принадлежащие root, с установленным sticky
bit и доступом группы по записи. 

Обоснование: Псевдо-пользователь не должен иметь право изменять атрибуты
каталогов, а также файлы и каталоги, созданные другими пользователями; нарушение
этого правила, как правило приводит к возможности осуществления pseudouser/root

Т.о. надо 01770 root:ejabberd /var/lib/ejabberd
Comment 4 Mikhail Yakshin 2007-11-12 00:56:11 MSK
Fixed in 1.1.4, которая сейчас должна уйти в Сизиф.