Сейчас мои продукты, плоды трёхлетней заказной разработки, внедряются в Роспатент. Этот длинный путь завершается выдачей аттестата соответствия на требования информационной безопасности. Аттестат - это формальная бумажка, которая подтверждает, что продукт развернут у Заказчика и хакеры ему не страшны. Наблюдая работу IT-безопасников, хочу поделиться парой баек. Начну с классического анекдота:
– У нас дыра в безопасности!
– Ну хоть что-то у нас в безопасности...
Байка №1
В первой половине 2000-х я работал программистом в компании ВИТАИ, которая занималась разработкой и внедрением собственной системы контроля и управления доступом (СКУД). Компания оснащала шлюзы, турникеты и двери магнитными замками, считывателями, дактилоскопами (сканер отпечатка пальцев) и прочими штуками, которые управлялись с компьютера. В то время это было не то чтобы Rocket Science, но примерно как сейчас беспилотный трамвай, который обещают запустить в Москве. Однажды эта компания поставила в Бутырскую тюрьму шлюз, в который был установлен дактилоскоп. Посетитель заходил в шлюз, прикладывал палец к считывателю, отпечаток пальца проверялся и человека пропускали через проходную...
Как-то раз адвокат зашёл в этот шлюз, приложил палец несколько раз, а IT-система его не распознала. Она посчитала, что в шлюзе - нарушитель. О ужас! Нарушитель надел на себя шкуру адвоката, взял его портфель и паспорт, а сейчас он прорывается внутрь охраняемого периметра! По регламенту IT-система блокировала шлюз и вызывала дежурный наряд. Несчастный нарушитель сидел внутри, ждал и боялся того, как вооружённые люди с дубинками будут его принимать с другого конца шлюза.
Нарушителя не было, был Адвокат собственной персоной. Дело в том, что IT-система с каждым проходом посетителя через шлюз немного портила скан эталонного пальца в базе данных. За один проход через шлюз эталон портился несильно и был похож на оригинальный отпечаток человека. Со временем изменения накапливались и реальный отпечаток пальца начинал значительно отличаться от эталонного. В итоге человека блокировало внутри шлюза, а навстречу ему выдвигались улыбчивые люди в синем камуфляже.
Байка №2
В те же 2000-е мне довелось работать в компании Автолик, которая, в том числе, выдавала аттестаты на режимные помещения. Правила работы с секретной информацией гласят, что помещение, в котором обрабатывается секретная информация, должно быть защищено от утечек информации по:
акустическому каналу,
виброакустическому каналу,
радиоканалу,
и ряду других каналов.
Выдача аттестата выглядит так: приезжают дядьки со специальной аппаратурой, ходят с антеннами по помещению и вокруг него. Что-то замеряют, затем записывают эти цифирьки и уезжают. Через несколько дней звонят и говорят: “Ваше помещение не готово к выдаче аттестата, вам нужно установить радио/вибро глушилки в таких-то местах в n-ном количестве”. Заказчик устанавливает предписанную аппаратуру и процесс проверки повторяется. Аттестат действует несколько лет и после истечения этого срока нужно проходить повторную аттестацию.
В одной организации была секретная комната, у которой истекал сертификат. Сертификат выдали не мы, но за повторной аттестацией они обратились к нам. Ходят наши специалисты с антеннами по помещению, что-то измеряют и видят, что показания странные. Скорее всего глушилки сломались - такое может произойти за годы года. Ребята взяли в руки проект защиты помещения, в котором нарисованы места расположения глушилок и начали их проверять. Оказалось, что вместо двух глушилок стояли пластиковые ловушки от тараканов.
Байка №3
В 2014-м году я работал в ДИТ г. Москвы и отвечал за цифровизацию ЗАГСов. Единой федеральной IT-системы ЗАГСа в то время не существовало, но межуровневый обмен информацией никто не отменял. Межуровневый обмен - это когда ЗАГС Урюпинска что-то направляет в Московский ЗАГС***. На рынке IT-систем для ЗАГС в то время было два крупных игрока: Находка и Инсофт, у которых форматы хранения записей актов гражданского состояния не всегда совпадали.
Однажды мне на работу приходит письмо из одного областного ЗАГС, отправленное Почтой России. В конверте сопроводительное письмо с текстом: “Направляем вам на сверку персональные данные по такому-то запросу бла-бла-бла-бла”. Помимо письма в конверте лежит 3,5” дискета, на которой записаны эти самые данные. Получилось как смерть Кощея: персональные данные на дискете, дискета в конверте, а конверт по Почте России. На дискете, Карл! По Почте России, Карл!
Байка №4
Мой друг, @taksebeСергей Козырев, в 2018-м году посетил Positive Hack Days - международный форум по практической безопасности. Это весомое отраслевое мероприятие по IT-безопасности.
При входе на форум стояли рамки металлоискателей и проводилась проверка билетов. До входа в зону проверки можно было пойти направо и войти в уборную. В уборной было два выхода: один до поста, а второй после поста проверки билетов. То есть можно было войти в туалет до охраны, а затем выйти из него после охраны. Билет был не нужен.
Вместо заключения
Вы знаете почему я вам не расскажу более свежие байки? Потому, что я их вам не расскажу! ;-) Есть шутка, что конец света наступит не тогда, когда придут всадники апокалипсиса, а сразу после того как аварийная сигнализация начнёт работать по протоколу TCP/IP.
Всё это не столько смешно, сколько опасно. Например, существует уязвимость устройств с системой подачи инсулина, которая позволяет злоумышленнику, находясь поблизости, управлять устройством: запланировать новую дозу или же ввести дозу инсулина немедленно. Конкретный пример, того, что цифровизация медицинских устройств без должного контроля их безопасности ни к чему хорошему не приведёт.
Комментарии (42)
Wesha
10.12.2021 20:39Есть шутка, что конец света наступит не тогда, когда придут всадники апокалипсиса, а сразу после того как аварийная сигнализация начнёт работать по протоколу TCP/IP.
К сожалению.
В нашем condo association пришло время менять старый, проводной домофон 2001 года выпуска на новый. Все новые предложения — только IPшные, проводные больше никто не делает. На мои предупреждения, что если что-нибудь ляжет на аплинке, то этому домофону наступит капут; что когда производитель накроется, то домофон работать перестанет; что его можно хакнуть и т. п. разбивались о глухое непонимание "ну так он же дешевле". В общем, четырьмя голосами против одного будут ставить :/
PereslavlFoto
10.12.2021 22:28То есть вы не стали покупать дорогой и устаревший домофон, да?
Wesha
10.12.2021 22:44+4Не "дорогой и устаревший", а "подороже, но устойчивый к неавторизованному доступу, отключению Интернета, хакерским атакам и т.п."
А с учётом того, что один этот домофон защищает 500 квартир...
PereslavlFoto
10.12.2021 22:47Значит, от 500 квартир на собрании было пятеро, 4 за дешёвое решение, а 1 не стал оплачивать дорогое решение, потому что оно не нужно?
Я всё-таки не понимаю, почему силы добра не осмелились заплатить за добро.Wesha
10.12.2021 23:16Эммм, эти пятеро, в переводе на русский, называются "совет жилкооператива", и они имеют право решать за всех — их на эту должность выбрали.
PereslavlFoto
10.12.2021 23:19В данном случае за всех решает тот человек, который платит.
Wesha
10.12.2021 23:23Вообще-то все 500 платят.
А кто не платит, тем отключим газ.PereslavlFoto
10.12.2021 23:25Какова же цена безопасности, цена надёжности?
500 * 500 = 250 000 рублей.
На Хабре принято думать, что это всего лишь одна-две месячных зарплаты.Wesha
11.12.2021 01:11Какова же цена безопасности, цена надёжности?
Интернетовский прибор с установкой стоит в районе $6000 (со всего дома), и $3 с квартиры в месяц за обслуживание. С учётом того, что если бы взяли прибор, использующий не интернет, а имеющуюся проводную сеть, то мы могли бы за обслуживание не платить, и экономия с "дорогого прибора" выходила неплохая.
PereslavlFoto
11.12.2021 01:12Да! Вот поэтому и удивляет, что ни один житель не захотел вложить $6000 в домофон!
Wesha
11.12.2021 02:24Эммм... Я чего-то Вас не понял. В результате жители как раз и вложили, причём в тот, который по совокупности хуже (менее надёжный). Но дешевле, да. В первый год.
PereslavlFoto
11.12.2021 03:54Жители вложили по чуть-чуть в плохой вариант.
Хотя один из этих жителей мог обеспечить хороший вариант, просто оплатив его.
Судя по тому, что пишут на Хабре, 250 000 = это зарплата за один или два месяца, совсем небольшие деньги.
Wesha
11.12.2021 06:01+5зарплата за один или два месяца, совсем небольшие деньги.
Ага, великолепная идея. "Дорогая, в этом месяце мы ничего жрать не будем — я домофон купил."
K36
11.12.2021 17:43Известное когнитивное искажение "10 баксов сейчас или 100 баксов через год" - выбирают 10 сейчас.
mortadella372
11.12.2021 18:30+3Потому что поди спроси эту сотку через год, непонятно даже будет ли с кого.
Кстати, вы слышали про опровержение маршмеллоу-теста? Да, дети из богатых семей выбирали отложенное поощрение, но причиной их успеха в обществе было не это, а социальный капитал.
Вера в исполнение обещаний спустя год — тоже, своего рода, когнитивное искажение.
Wesha
12.12.2021 03:00+1Тут немного другое — "заплати сейчас 10 баксов (в пересчёте на одну квартиру) или 20 (ну ладно, допустим даже 25) — но, во-первых, за 10 есть неиллюзорные шансы, что, когда упадёт интернет (а он примерно раз в год и падает), жители тупо не смогут попасть домой; во-вторых, до скончания веку платить ещё по 3 бакса в месяц; в-третьих, когда фирме наступит карагандец (вопрос лишь в том, через сколько лет), всё это бабло окажется выброшенным на ветер."
Но зато вотпрямща дешевле, да.
pda0
10.12.2021 21:00+5Дело в том, что IT-система с каждым проходом посетителя через шлюз немного портила скан эталонного пальца в базе данных.
Прохладненько. Это насколько же оригинальный был программист, что повторно записывал в базу отпечаток пальца при каждом сканировании?
Wesha
10.12.2021 21:09-3Это насколько же оригинальный был программист, что повторно записывал в базу отпечаток пальца при каждом сканировании?
А насколько оригинальным был программист, который не знал, как IP работает?
А он был...
tmin10
11.12.2021 15:11Особенно учитывая, что сравнивалось с эталоном, но эталон постоянно менялся...
denizko
10.12.2021 22:58+2Здравствуйте.
Не могли бы разжевать вот это: "Дело в том, что IT-система с каждым проходом посетителя через шлюз немного портила скан эталонного пальца в базе данных. За один проход через шлюз эталон портился несильно и был похож на оригинальный отпечаток человека"?
Sly_tom_cat
11.12.2021 01:03Откройте любой jpeg в графическом редакторе и сохраните. Повторите это раз 50 и вы будете "приятно" удивлены полученному результату. Хотя разницу между двумя соседними сохранениями вы вряд-ли заметите.
ЗЫ не удивлюсь если там отпечаток в jpeg хранился.Lsh
11.12.2021 11:11Если он и хранился в JPEG, то зачем его считывать и потом его же записывать обратно в тот же файл? Такое случайно не напишешь, на ошибку как-то не тянет. Вообще подозреваю, что отпечатки хранятся как некий граф ключевых точек, а не как картинка. Иначе что там при аутентификации, сравнение двух картинок? А если сравнение по неким точкам, то это и хранимую надо каждый раз "парсить".
mrise
11.12.2021 11:58Дисклеймер: далее идут откровенные спекуляции и фантазии.
Например, в ТЗ был следующий пункт:
Каждый раз, когда человек проходит через турникет, нужно актуализировать изменения в его отпечатке (например, если человек порезался, требуется запомнить, что у него был порез в конкретном месте). Так же это полезно для компенсации деградации сканнера и повышения качества распознавания.
И не было пункта:
При актуализации изменений система должна автоматически отсеивать шум в виде пыли и волос, а так же геометрические деформации различной природы.
parukhin
11.12.2021 14:39Я думаю вы очень близки к правде.
Есть у нас терминал учёта рабочего времени от Anviz (с регистрацией по паролю, карте или отпечатку) и в настройках опция "Обновлять отпечаток при считывании". Но последний пункт в ТЗ видимо включили, т.к. за 6 или 7 лет отпечатки он распознавать не перестал.
tmin10
11.12.2021 15:13Но тогда бы был просто последний палец. Откуда накапливание искажения через n проходов?
Graphite
11.12.2021 12:45+2Такое может довольно легко и незаметно произойти. Например, берем какой-нибудь ORM и пишем (это же система для безопасности, мы не будем генерировать SQL запросы руками):
user = Users.find(pass_num=pass_num) if not user: raise AccessDenied if not user.check_fingerprint(): raise AccessDenied user.last_access = datetime.now() user.save() return True
Вроде пока все ок. Только оказывается, что отпечаток это особая структура данных, которая в базу сохраняется в одном виде (например, сжатом с потерями), а используется в другом. И разработчик который это делал повесил на Users обработчик on_save. Вот и все, каждый раз когда кто-то сохраняет модель Users отпечаток переписывается и теряет качество.
kenoma
13.12.2021 10:38Я не понял, ORM работает с изображением не как с массивом байт? Т.е. при каждом чтении из базы мы декодируем картинку?
Graphite
13.12.2021 10:47+1На on_save / on_read можно что угодно повесить - например, кодирование и декодирование картинки. После этого каждый save() будет иметь побочные эффекты.
Mumlum Автор
11.12.2021 18:09Всё проще. См. год истории. Дактилоскопы тогда были большими автономным штуками и абсолютно непонятными зверями с API, поставляемым в виде dll.
Система была не распределённой, поэтому эталон хранился внутри устройства. Программист накосячил что-то с вызывами API, тестиррвщек баг пропустил. Фигак, фигак и в продакшен.
Что конкретно вызывали не так - я не помню. Вполне может быть - пересохранение JPG, но концов уже не найти.
axe_chita
11.12.2021 12:52+7Раз пошли такие байки, режь последний огурец!
Дискламер: мопед не мой, просто дали покататься;)
В одном городе, далеко-далеко за Уралом, что до Пекина рукой подать, в одной государевой конторе ставили СКУД. И был в составе СКУД, шлюз с контролем веса, чтоб супостат непрошенный не мог просочиться за человеком честным. И выставили вес предельный в 150 килограммушков, ибоэтого должно хватить всемчеловек честный не должен весить больше числа поганого.
И было все хорошо при запуске, да не хорошо в реалушке. Ибо вышла с бюллетеня честного, специалист ценный — из бухгалтерии, Нинон Петровна широкой души женщина. И зашла Нинон Петровна шлюз дьявольский, чтоб махнуть пропуском беленьким, а тот вдруг вскричал он в мегафон голосом металлическим — «Пусть выйдет из шлюза, второй человечишка!». И покрылась Нинон красными пятнами, ибо никто не называл так её толстою!
Чем закончилась эта историшка, мне не ведомо.
Толи веса лимитушку в шлюзе прибавили,
Толь Нинелюшке диету оформили…
Любые совпадения, лишь совпадения %)polearnik
11.12.2021 15:10+1история норм. а слог ужасен. Как будто детскую сказку прочитал.
axe_chita
11.12.2021 15:51+1Скорее былину:)
Историю мне рассказал друг, который всё это дело монтировал и подключал, и был свидетелем этой байки
johnfound
11.12.2021 16:17+2Как будто детскую сказку прочитал.
Так слог именно этим и хорош. Мне понравилось.
unsignedchar
11.12.2021 17:23+1Я эту сказку слышал в босоногом детстве в виде анекдота. "Сделали японцы говорящие весы. И залезла на них Мариванна..."
v1000
звучит как Easter Egg
dendron
Там наверное второй выход из туалета вёл сразу в зал где пен-тестеры выступали.
SerjV
Или в honeypot :)
HardWrMan
Это поди была сортировка участников и посетителей/зрителей.