Исповедь разработчика или еще немного о хранении личных данных на примере сайта ГИБДД Челябинской области

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

Так в чем же уязвимость данного приложения?

Кажется не все обсуждавшие статью уловили в чем собственно уязвимость, так что для начала распишу в чем она состоит. elky совершенно точно подметил, что сервис разработан в среде Oracle Apex и развернут на базе Oracle XE.
Давайте посмотрим все ссылки выложенные на сайте ГИБДД:
109.233.211.147:8080/apex/f?p=101:13:::NO::P13_SERVICE_ID:2:
109.233.211.147:8080/apex/f?p=101:13:1172490529441049::NO::P13_SERVICE_ID:3:
109.233.211.147:8080/apex/f?p=101:13:2509469572771360::NO::P13_SERVICE_ID:1:
Заметили разницу? Обратите внимание, что если перейти по первой ссылки подобного бардака не наблюдается. Дело в том, что когда создавался Oracle Apex (тогда еще HTML DB) технология хранения данных на клиентской стороне (cookies), еще не поддерживалась 100% всеми браузерами, а тем более всеми версиями используемых браузеров. Несчастные разработчики того времени были вынуждены хранить идентификатор сессии в каждом создаваемом их приложением URL в виде get параметра. В структуре URL Apex это 3-я позиция строки параметров (2509469572771360 и 1172490529441049).

И что получается? Две ссылки из размещенных на сайте ГИБДД содержат идентификаторы сессий, очевидно тех людей, кто размещал эти ссылки. Все читатели разгромной статьи попадали в одну и туже сессию и соответственно видели одни и те же данные.

Почему так получилось? К сожалению я ушел из команды, которая занималась разработкой этого приложения до того как оно было развернуто на площадке заказчика. Кто занимался этими ссылками и в конечном счете консультировал заказчика сказать не могу. Знаю только, что ГИБДД уже давно самостоятельно наполняет свой сайт. Эти страницы редактировали точно их собственные сотрудники. Почему они вставили ссылки со своими идентификаторами сессий и никто не проверил работоспособность сервиса это конечно вопрос.

Теперь я хочу ответить на вопросы, которые возникли у сообщества в комментариях к статье:

Стоимость

Попила там явно не было, суммы были весьма скромные. Не плохая подработка, но не более того. Для сервиса планировали купить простенький сервер (помните ограничения XE?). Он подозреваю и составил основную часть стоимости проекта.

По поводу выбора решения

Опросив заказчика мы выяснили, что сами сотрудники ГИБДД плохо представляют, что им требуется. Ну да, так обычно и бывает, но в данном случае они исполняли букву приказа, где одной строчкой весьма размыто было приказано на местах обеспечить создание электронной системы гос. услуг. Точные формулировки не помню, но по объему там было не больше 2-х предложений. Коротко — по военному.
ГАИшники эти — люди весьма разумные и собрав все, что у нас есть мы решили с ними создать малой кровью сервис регистрации, автоматизирующий сбор данных требуемых для оказания услуг с функционалом электронной очереди.
Что использовать в таких случаях — это явно большой предмет для холиваров. Но IMHO Apex в Oracle XE в такой роли вполне не плох.
В коробке с ним идет небольшое приложение для управления базой с Веб-интерфейсом реализованное на том же Apex. Есть удобные средства резервирования, восстановления, которыми может пользоваться даже секретарша (даже иконки в программах есть). Кроме того, сотрудники ИТ отдела ГИБДД обслуживают не слабых размеров систему автоматизации, которая тоже использует ORACLE. Так что, учитывая размер задачи XE подходит, как нельзя лучше, несмотря на его ограничения.
Вопрос легальности такого использования в комментариях уже раскрыт (спасибо спорившим) — использование законно.
>А валидация-та там хоть какая-то делается у введённых данных? А то будет какой-нибудь Bobby Tables >проходить техосмотр и… или XSS атаки отлавливаются?
Apex от этих болезней защищен не плохо. Он рассчитан на попадание разработчиков самой не высокой квалификации.

Производительность

Сервис конечно под хабра-эффектом лег, но сопротивлялся судя по всему долго. Жалко нет статистки, но думаю что такого трафика ему больше никогда не видать. И, заметьте, эту нагрузку держал стандартный для XE Embedded PL/SQL Gateway. Немножко реверс-кеширования он потянет весьма серьезную нагрузку. Но в данной задаче подобного трафика не ожидалось. Производительность всех подразделений ГИБДД вместе взятых явно меньше производительности даже такой конфигурации, которая стоит в ГИБДД сейчас. Это даже без учета той доли наших сограждан, которые готовы пользоваться чем-то подобным.

Послесловие

Надеюсь я ответил на все вопросы, которые были. Задавайте новые, по возможности отвечу. Стыдно было засветиться в таком свете, но как уж есть…


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.