Раз. Почему Троян?! Эта ╚полезная программа╩ содержит несколько ошибок (надеюсь, что неумышленных), используя которые злоумышленник может произвести несколько различных атак, в результате которых получит ╚защищенные╩ пароли. OpenNET довольно популярный ресурс среди администраторов, причем последние зачастую несильно высокой квалификации, и без разбора применяют приводимые решения. На скольких серверах окажется эта чудо программа, скажем, через неделю? На одном, на десяти, на сотнях┘Два. Программа, очевидно, предназначена для использования на системах доступ (причем, необязательно легальный) к которым могут иметь как минимум несколько пользователей.
Три. Вот несколько атак навскидку:
1) ОШИБКА:
Пароли длительное время доступны в открытом виде:
cat ${FILE} | gpg -d -q > /tmp/$$
УСЛОВИЯ:
Злоумышленник является пользователем root! А почему бы и нет?!
АТАКА:
Злоумышленнику нужно написать и запустить простенькую программку, которая следит за вновь созданными файлами в директории /tmp, имена которых состоят из одних цифр ($$), и сохраняет их содержимое в надежном месте.
2) ОШИБКА:
Пароли некоторое время доступны на чтение всем пользователям:
cat ${FILE} | gpg -d -q > /tmp/$$
chmod 600 /tmp/$$
${EDITOR} /tmp/$$
УСЛОВИЯ:
Нужно угадать (предсказать) диапазон возможных значений PID▓а ╚чудо программы╩. umask пользователя использующего ╚чудо программу╩ должен быть на подобии 022.
АТАКА:
Злоумышленник создает файлы в директории /tmp имена, которых определяются диапазоном возможных значения PID▓а ╚чудо программы╩. Например, файлы /tmp/{23,24,25,26,27} для диапазона [23,27]. Причем файлы должны быть доступны на запись пользователю запустившему ╚чудо программу╩. Далее атакующий ╚следит╩ за этими файлами, - ждет, когда в каком-нибудь из них появятся пароли, то есть, выполнится команда cat ${FILE} | gpg -d -q > /tmp/$$. Очевидно, что выполнение второй команды (chmod 600 /tmp/$$) завершится ошибкой, но ее результат не проверяется и в любом случае будет запущен текстовый редактор.
Внимание, вопрос. Заметит ли пользователь сообщение об ошибке? Пусть даже заметит. Если в файле паролей хранится пароль root▓а для какого-нибудь удаленного сервера, то программа злоумышленника может войти на этот сервер и просто сменить пароль root▓а. Очень вероятно, что данная процедура закончится до того как пользователь успеет разобраться, что вообще происходит.
3) ОШИБКА:
cat /dev/null > /tmp/$$
rm -rf /tmp/$$
УСЛОВИЯ:
Пока вы были в отпуске, винчестер, где хранились ╚защищенные пароли╩ посыпался bad block▓ами и его пришлось выкинуть.
АТАКА:
Атакующий подбирает выкинутый винчестер, и использую ╚недавние достижения NIST в туннельной электронной микроскопии╩ (Bruce Schneier, ⌠Applied Cryptography■, 2002) восстанавливает /tmp/$$.
Итого. Ошибки, допущенные в ╚чудо программе╩, - элементарны, поэтому и возникает ощущение, что это Троянский конь. Конечно, автор мог допустить их случайно, но тогда он совершенно некомпетентен в области, которую пытался осветить.