пятница, 14 октября 2016 г.

Сомнительная уязвимость: атакуем каталог приложения, чтобы обмануть... самого себя?

Это перевод Dubious security vulnerability: Attacking the application directory in order to fool yourself? Автор: Реймонд Чен.

Нам отправили примерно такой отчёт о найденной уязвимости в безопасности:
В программе XYZ.EXE есть уязвимость. Если вы поместите в каталог с XYZ.EXE файл CABINET.DLL, то программа XYZ.EXE загрузит ваш CABINET.DLL, вместо реального системного. Когда XYZ.EXE попросит повышение прав, пользователь разрешит его - и тогда "хакнутая" CABINET.DLL будет выполняться под администратором.
Ээээ... OKей.

Каталог TEMP аналогичен ванне, где воду не меняли больше года

Это перевод The TEMP directory is like a public hot tub whose water hasn’t been changed in over a year. Автор: Реймонд Чен.

Один клиент пожаловался, что он не может удалить продукт X. Когда он запускает установщик для удаления, он получает такое сообщение об ошибке:

setup.exe - Application Error
The application was unable to start correctly (0xc00000ba). Click OK to close the application.

Команда установки продукта X понятия не имела, что это за ошибка, они начали спрашивать, есть ли у кого идеи.

Почему каталог TEMP постоянно меняется?

Это перевод Why does the name of my TEMP directory keep changing? Автор: Реймонд Чен.

В техподдержку команды Оболочки (Shell) обратился клиент с таким вопросом:
Тема: Support case: 069314718055994

Один наш пользователь обнаружил, что на двух его машинах если он откроет %TEMP% из меню Пуск, то будут открываться папки C:\Users\username\AppData\Local\Temp\1\, C:\Users\username\AppData\Local\Temp\2\ и так далее. Каждый раз, когда пользователь завершает сеанс и входит снова, номер в конце пути увеличивается на 1. Номер сбрасывается при каждой перезагрузке. Откуда берутся эти подкаталоги в TEMP? Это не кажется поведением по умолчанию. Почему система создаёт эти папки?

Пользователь переустановил ОС на одной из машин, и это поведение исчезло. Но он утверждает, что раньше обе машины работали нормально, проблема началась лишь недавно. Поэтому клиент опасается, что проблема вернётся. Благодарю за любые подсказки, куда копать.

Не требуйте от ваших пользователей степени по философии, эпизод 2

Это перевод Don’t require your users to have a degree in philosophy, episode 2. Автор: Реймонд Чен.

Ранее мы выяснили, что текст справки и подсказок - это не место для логических головоломок. Не являются местом для них и диалоговые окна.

Не требуйте от ваших пользователей степени по философии

Это перевод Don’t require your users to have a degree in philosophy. Автор: Реймонд Чен.

Текст справки и подсказок - это не место для логических головоломок.

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

Это перевод Email tip: Choose a subject line that is meaningful to the recipient, not to the sender. Автор: Реймонд Чен.

Я подозреваю, что вы хотели бы, чтобы отправленные вами сообщения читались бы? В конце концов, именно поэтому вы их отправляете. Следовало бы выбрать такой заголовок сообщения, который передал бы получателю цель вашего сообщения. В противном случае получатель может пропустить/проигнорировать сообщение как не интересное.

Алгоритм поиска путей не является алгоритмом поиска с откатом

Это перевод The path-searching algorithm is not a backtracking algorithm. Автор: Реймонд Чен.

Предположим, ваша переменная PATH выглядит примерно так:
C:\dir1;\\server\share;C:\dir2
Также предположим, что вы вызываете LoadLibrary('foo.dll'), желая загрузить библиотеку C:\dir2\foo.dll. Если при этом сетевой сервер будет не в сети, то вызов LoadLibrary вернёт ошибку. Почему LoadLibrary просто не пропустит некорректные каталоги в PATH и продолжит искать далее?

Проблема танцующих кроликов

Это перевод Beware of the dancing bunnies. Автор: Ларри Остерман.

Недавно я увидел сообщение на форуме (я не помню где, иначе я бы на него сослался), которое утверждало, что правильно спроектированная система не нуждается в антивирусе, файрволе и т.п.

Я, конечно, извиняюсь, но это утверждение не умнее "Да, пожалуй, в мире найдётся спрос на целых 10 компьютеров", или "ни одной правильно написанной программе не потребуется больше 128 Кб оперативной памяти", или "ни один правильно спроектированный компьютер не нуждается в вентиляторе охлаждения".

Я объясню свою позицию в этом посте. Причина - в так называемой проблеме "танцующих кроликов".

четверг, 13 октября 2016 г.

Скорее я нахожусь с другой стороны этого герметичного люка: запись в каталог приложения

Это перевод It rather involved being on the other side of this airtight hatchway: Writing to the application directory. Автор: Реймонд Чен.

Мы получили один отчёт о найденной уязвимости безопасности, который выглядел примерно так:
В компоненте X есть уязвимость безопасности. Он загружает shell32.dll из текущего каталога. Иными словами, он уязвим для атаки на текущий каталог. Вот пример, иллюстрирующий проблему: скопируйте изменённую shell32.dll в текущий каталог и запустите программу. Заметьте, что будет запущена изменённая shell32.dll вместо системной.
Если вы попробуете выполнить указанные инструкции, то обнаружите, что результат будет зависеть от определения "запустить программу".

Почему файлы программ размещаются в каталоге Program Files?

Это перевод Why do program files go into the Program Files directory? Автор: Реймонд Чен.

Некоторые из программ сертификации ПО от Microsoft (например, Windows Logo) требуют, чтобы приложения устанавливались бы в каталог Program Files по умолчанию. Зачем нужно это требование?