Pull to refresh

Comments 25

Как показали специалисты по информационной безопасности, штрих-коды, если говорить о всей системе, включая считывающие устройства, довольно уязвимы.
Реализаций декодеров бар-кодов — тысячи. Да что там — создание простейшей читалки входит в список лабораторных работ 2-3 курса для студентов многих технических вузов. Как можно утверждать, что у любой программы этого типа, получающей на вход бинарную последовательность или картинку, а на выходе выдающей строку есть общий эксплоит?
А никто не фильртрует инпут. похоже. И, так как это клавиатура, можно подать с неё последовательность win-r,c,a,l,c,.,e,x,e
А разве можно сканером передать нажатие и отпускание Win?
Вы посмотрите не реализации сканеров. Обычно они эмулируют клавиатуру и передают цифры-буквы как будто их ввели с клавиатуры. Тут то и открывается простор для творчества.
Правило — «фильтруй все входящие данные» никто не отменял, будь то штрих-код, данные с RFID-меток и прочее-прочее. Странно, что только ща эти исследователи раскопали данную проблему.
да бред же полный чувак несет.

У нас только при мне (уже 12 лет) везде сканеры штрихкодов, и раньше они втыкались в разрыв клавиатуры, а теперь это USB HID. И с одной стороны, конечно, на клавиатуре можно набрать команду загрузки трояна, с другой — поля ввода все валидируются, и если вместо идентификтаора чего-либо (числовой), набрать (считать сканером) 'drop table users' или что-то в этом роде. просто ничего не случится.
Ну а если там TAB нажать — оно переключится из поля вывода на какую-нибудь кнопку? ALT-F4? :)
Не секрет, что обезопаситься от реакции на горячие клавиши мягко говоря несложно.
Если создатели вышеописаных терминалов этого не сделали, то либо в виду паталогической лени, либо в силу попыток руководства экономить на спичках.
Тут проблема в том, что на сканере штрихкода — клавиатура для управления-то есть. А разницы между этими двумя клавиатурами — никакой, с точки зрения софта (все ж plug&play, клавиатуры все одинаковые, только на разных портах). То есть, блокируя возможность управлять со штрих-ридера — мы блокируем возможность управлять устройством вообще.
TAB, наверное переключится, Alt-F4 ничего не даст, даже если его получится засунуть в Code128.

И хочу обратить внимание, у нас ПО работает в «тепличных условиях», доступ имеет только персонал, который несет ответственность за всё, что происохдит внутри (примерно как кассир супермаркета, о котором говорят в соседних комментариях).

Если автор этого бреда говорил о терминалах, которые «на улице», то я не представляю, насколько левым должно быть ПО, без хоть какой-либо валидации ввода, насколько левыми должны быть требования к такому ПО, и процедуры приемки.

Если все эти очевидные меры защиты мало кого волнуют, я почти уверен — «дырка» в виде сканера штрихкодов, даже не в первой десятке проблем безопасности.
Не уверен, что программный интерфейс операционных систем вообще позволяет различить данные, поступающие с разных клавиатур. По-моему, там просто программе приходит сообщение о том, что на какой-то из клавиатур нажали «A» — как отличить где надо фильтровать (штрих-код), а где — не надо (управляющие клавиши)?
а причем тут программный интерфейс операционных систем?

Да, разумеется, в систему всё то, что прочтут сканером, попадает «как будто набрали на клавиатуре». Но это, простите, не дырка в виде сканера, это фича способа подключения.

Еще раз акцентирую — у нас просто программа, которая запускается на рабочем месте. И эта программа, в каждом поле ввода проверяет, а что именно ей ввели. Я проверил, про Alt-F4 ничего не происходит, но Alt-F4 не получится засунуть в Code128.

Люди, которые разрабатывают терминалы, обычно отрывают в ОС всё (или прячут, вы, например, слышали, что бывает Windows 2000 embedded?), что не касается их прикладной программы, которая суть и есть терминал.

Так вот, моя ключевая мысль в том, что если эти люди «на следующем этапе, после USB-HID», не сделали ничего, то получения «неожиданного ввода» через сканер (суть через клавиатуру) — это проблема не из первого десятка важности.
Такое возможно только для очень ограниченного приложения, которое пользователем не управляется, а только принимает данные. Кассовый аппарат, например — уже в такие рамки не загонишь (так как имеется клавиатура кассира с «плохими кнопками», которые можно «нажать» через штрих-код, плюс еще — управляющие комбинации какие-то, для сервисных целей). Ну и, опять же, всякие magic-комбинации самой операционки — не отфильтруешь. То есть для сложной системы, где разработчик не заморачивается с вводом и самостоятельным распознаванием кнопок через какой-нибудь rawinput, а также настройкой самой операционки для отключения magic-комбинаций — дырка действительно существует.
вы рассказываете очень странные вещи, которые совершенно не совпадают с моим реальным опытом.

У нас система сложнее, чем кассовый терминал.

На оборудовании, где я встречал Windows 2000 embedded, тоже вполне себе нормальные приложения, и если вдруг внезапно не застать экран загрузки, или не знать пароль выхода «в систему», то вообще никак не догадается, что там внутри Windows.

Вы уверены, что magic-комбинации не фильтруются?
Вы уверены. что magic-комбинации можон закодировать в штрихкодах?

А теперь идем и читаем в статье
И если сканер поддерживает протокол Code128, где используются символы ASCII, злоумышленник может создать штрих-код, который заставляет компьютерную систему сканера выполнять сторонние действия, вплоть до установки трояна.


Хочу Code128 штрихкод, в котором будет Alt-F4, хотя-бы или Win-R.

И еще раз выскажу свой тезис — если разработчик embedded-систмы (терминала), не заморачивается безопасностью — гнать в шею такого разработчика. А люди, которые таким «незамороченым» заказывают разработку, сами себе злобные, пусть их системы ломают через штрихкоды, пусть терпят миллионы убытков.
Операционные системы — они разные бывают :)
Некоторые вполне себе позволяют получать ввод только из выбранного источника ( например /dev/usb0 ) или из нескольких, но обработку каждого вести отдельно.
UFO just landed and posted this here
Полагаю, все системы, в которых нашли уязвимость на уровне штрих-кодов, точно так же были уязвимы и на уровне клавиатурного ввода. Речь просто идет об отсутствии контроля над входными данными в целом, а не о какой-то особенности сканеров штрих-кодов. Которые в общем случае ничем от других устройств ввода не отличаются.
У меня сейчас на столе сканер от Metrologic. Прочитав его мануал, я понял что по USB его к терминалам самообслуживания лучше не подключать. По-умолчанию он эмулирет клавиатуру. Потом он ещё конфигурируется штрихкодами, в том числе его переключить с USB-клавиатуры на USB-serial и обратно.
то есть до страницы, как поставить «пароль» на вход в режим конфигурации, и прочее ограничения вы не дочитали?

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

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

Промышленные сканеры, чаще всего подключаются на какой-либо Serial-порт (rs232), и через считывание специальных штрихкодов свои настройки не умеют менять.
Можно оставлять, изменение режимов приведёт к невозможности нормальной работы, которую обслуживающий инженер быстро починит, отсканировав ШК сброса к заводским настройкм и серию ШК выбора нужного режима работы (они распечатаны подряд на одном листке).
Точно также нельзя «промышленный» сканер давать в чужие руки, т.к. злоумышленник может заклеить один из USB-контактов, что тоже приведёт к неработоспособности сканера.
Промышленные так ставят, что только считыватель доступен, остальное всё глубоко и недоступно.

Вопрос-то не столько в работоспособности, сколько в способе пробраться дальше сканера. В общем, как бы то ни было, я не считаю что какой бы сканер не был — это просто ввод, который мы по-большему счету не контролируем. И всё, что оттуда валится, нужно валидировать, отсекать лишнее, прикладывать к этому усилия, ни на кого не надеясь.
Иначе ни о какой безопасности речи быть не может.
Где-то я читал про схожие методы… А, вспомнил: Пелевин «Зенитные кодексы Аль-Эфесби»
Sign up to leave a comment.

Articles