![image](https://habrastorage.org/getpro/habr/post_images/6cf/2c8/a4c/6cf2c8a4c5ec7bc68cca4a7474c206cd.jpg)
Отладка кода, оставшегося в программном обеспечении, часто является проблемой безопасности, ожидающей своего появления. Это потому, что код отладки обычно вводится, когда вам нужно «инсайдерское представление» о том, что происходит.
Отладочные функции часто создают преднамеренные дыры в безопасности, позволяющие избежать утечки данных — что вполне нормально в собственной тестовой среде, но неприемлемо в официальном выпуске продукта.Таким образом, вы должны не только удалять код отладки, когда он больше не нужен (код, который не может быть включен по ошибке!), но также организовывать свои производственные сборки таким образом, чтобы любой отладочный код, который остался по ошибке, был отброшен или автоматически отключается при компиляции программного обеспечения.
Уязвимости
У печально известного Интернет-червя 1988 года было три трюка для копирования; самым простым и эффективным из них было подключение к вашему почтовому серверу в надежде, что ваш системный администратор оставил отладку включенной в продукте Sendmail.
Если отладка Sendmail была включена, сервер будет принимать входящие сообщения электронной почты и запускать их непосредственно в виде серии системных команд — своего рода отладочное средство, которое не имеет смысла вне контролируемой лабораторной среды.
Dlink делала что-то не менее опасное на некоторых своих последних маршрутизаторах: если вы объявили свой браузер под странным именем xmlset_roodkcableoj28840ybtide, вместо, скажем, Firefox или Safari, тогда вы можете запустить любую команду sysadmin на маршрутизаторе не зная пароль.
Чтение этого специфического заклинания "roodk cable oj" в обратном направлении делает ошибку очевидной: текстовая строка Edit by 04882 Joel: Backdoor считывается в обратном порядке. Еще несколько лет назад принтеры LaserJet компании HP провалились, так как на отгрузочных принтерах была оставлена оболочка telnet, открытая для отладки в производственном коде.
Открытая оболочка telnet означает, что любой пользователь может просто подключиться к устройству и получить доступ к командной строке, чтобы пользоваться принтером по своему усмотрению, не требуя специального программного обеспечения или пароля.
По словам исследователя по безопасности Майкла Минга, HP сделала еще один отладочный код в релизной версии, в результате чего умышленно созданный кейлогер был встроен в драйвер клавиатуры на ряде моделей ноутбуков HP. Минг говорит, что он начал изучать его, чтобы помочь другу, который хотел выяснить, как контролировать подсветку клавиатуры. Он заметил кучу текстовых строк, включая интригующие сообщения вроде этого:
ulScanCode=0x%02X, kKeyFlags=%X
CPalmDetect::KeyboardHookCallback
Не беспокойтесь, если вы не программист на C: все, что вам нужно знать, это то, что эти сообщения уведомляют, что в коде есть какой-то перехватчик клавиатуры, и что программа может поддерживать запись scancodes (идентификационные числовые коды отдельных нажатий клавиш на основе их позиций на клавиатуре) по мере ввода.
Это не помогло. Мингу пришлось намного больше копать, чтобы понять, что, установив специальную запись в реестре под названием Mask, он может запустить драйвер для записи каждого нажатия клавиши через официальную систему регистрации Windows под названием WPP. WPP не подходит для препроцессора программного обеспечения Windows Software, и
Microsoft официально сообщает, что:
Трассировка программного обеспечения WPP в первую очередь предназначена для отладки кода во время разработки.
Другими словами,
CPalmDetect :: KeyboardHookCallback
которую мы видели выше, не должна работать. К счастью, Минг сообщает, что:
Я послал сообщение о находке самой компании. Они ответили очень быстро, подтвердили наличие кейлогера (который на самом деле был отладочной трассировкой) и выпустили обновление, которое удаляет след.
Обратите внимание, что вам необходимо было бы получить права администратора, чтобы совершить настройку реестра, необходимую для запуска этого «кейлогера», поэтому риск можно считать низким.
Тем не менее, для хакера, у которого уже есть плацдарм внутри вашей сети, установка записи в реестре для захвата нажатия клавиш с помощью официального, цифрового подписанного драйвера клавиатуры намного проще, чем возиться с самим программным обеспечением драйвера или пытаться установить новый драйвер для выполнения этой работы.
Что делать?
- Если у вас есть уязвимый компьютер HP, установите обновление сейчас. (Внимание: в официальном списке HP есть более 450 различных моделей, от HP 240 G2 до ноутбука Star Wars Special Edition 15-an000.)
- Если вы программист, не оставляйте код отладки.
- Если вы являетесь тестировщиком по обеспечению качества, не верьте программистам, когда они заверяют вас, что этот код отладки безвреден и может оставаться.
Источник: тут
Комментарии (13)
Dreyk
13.12.2017 17:56качество перевода ниже среднего
любой пользователь может просто подключиться к логину устройства
а еще корявей можете написать?
Еще несколько лет назад HP провалился рядом принтеров LaserJet
это что вообще должно означать?
ну и в целом, построение фраз — сплошь калька с английского
4eyes
14.12.2017 15:13качество перевода ниже среднего
Я бы сказал «it's a good start». И проиллюстрировал…
vconst
13.12.2017 18:05Отладочные функции часто создают преднамеренные дыры в безопасности, позволяющие избежать утечки данных
Что, правда?SystemXFiles
14.12.2017 07:27Тоже резануло слух. Классно получается, чем больше уязвимостей, тем меньше шанс утечки данных. Видимо потому что это будет уже не утечка, а целый «торговый путь для караванов».
Сарказм
4eyes
14.12.2017 14:58Мингу пришлось намного больше копать, чтобы понять, что, установив специальную запись в реестре под названием Mask, он может запустить драйвер для записи каждого нажатия клавиши через официальную систему регистрации Windows под названием WPP. WPP не подходит для препроцессора программного обеспечения Windows Software, и Microsoft официально сообщает, что:
Трассировка программного обеспечения WPP в первую очередь предназначена для отладки кода во время разработки.
Другими словами, CPalmDetect :: KeyboardHookCallback которую мы видели выше, не должна работать. К счастью, Минг сообщает, что
Святые угодники! Давайте я вам помогу:
Мингу не пришлось копать слишком много, чтобы понять, что установка сцециального ключа реестра заставляет драйвер сообщать о нажатии каждой кнопки клавиатуры с помощью WPP. WPP — это сокращение от препроцессор сообщений отладки программ Windows. Microsoft официально заявляет, что «WPP в первую очередь предназначен для отладки кода в процессе разработки».
Другими словами, этот CPalmDetect::KeyboardHookCallback, который мы увидели, не должен был попасть в релиз.
К счасть, Минг сообщает, что…
4eyes
14.12.2017 15:35Отладка кода, оставшегося в программном обеспечении, часто является проблемой безопасности, ожидающей своего появления.
Отладочный код, оставшийся в программном обеспечении, ..., ожидающей своего проявления.
P.S. Считаю свой английский честным "intermediate ruglish" и искренне не понимаю, как это здесь появилось.
staticlab
Hook в программировании или лучше просто транслитерировать: "хук", — или хотя бы переводить как "перехватчик".
А перевод всё-таки стоит отмечать переводом.