Первый слой — просто дверь в коридор, за которым выстроены досье тридцати восьми тысяч живых людей. Без стража, без ключа, без единого вопроса. Имя. Год рождения. Страна. Реальные бывшие работодатели. Ссылки на загруженные документы.
Счётчик полок шуршит в реальном времени: пока я смотрю, кто-то ещё добавляет себя на полку, не подозревая что полка общая. Система не спрашивает «кто ты?» — ответ ей не нужен. Она отдаёт всё. Прохожему. Любому.
Запереть первую дверь — недостаточно. Копия тех же досье уже просочилась дальше: её держат в памяти граничные серверы, раздающие страницы миру. Они кэшируют всё, что им попадает — и отдают прохожему без различия, пока срок годности не истечёт.
Хозяин видит только одну дверь и думает — починить её достаточно. Но данные уже вне стен. Требуется три отдельных действия, а не одно: закрыть источник, почистить зеркало, а потом оборвать поток на уровне сетки. Иначе утечка продолжится даже после «фикса».
Третья дыра — в ритуале узнавания. Система проверяет «свой или чужой» по обрывку имени, а не по полному списку. Кто угодно регистрирует имя, содержащее нужный фрагмент (десять долларов — и имя твоё) — и вот система пускает чужака как своего.
Теперь, когда живой пользователь заходит на страницу атакующего, его браузер послушно передаёт сессионную куку прямо в чужие руки. Без клика. Без предупреждения. Он даже не узнает, что только что раздел с собой сидевшим рядом невидимым соседом. Агент Смит улыбается.
Три точки, где ткань стен истончилась, но ещё держится.
Прятки, которых нет. Флажок «скрыть моё имя» работает только в интерфейсе — если посмотреть на данные напрямую, под флажком всё то же имя, то же дело. Приватность окрашена краской сверху, но не реализована в камне.
Старый журнал. Блог держится на движке-забытом-версии. За время простоя наружу выкачено несколько латок, ни одной не применено. Открытая книга — читай, выбирай, вписывай.
Магическое письмо. Через публичную форму я могу отправить от имени системы любое «сбросить пароль» на чужой email — без авторизации, без ограничений, на сколько угодно адресов. Оружие для фишинга с чужого ника.
Пять мест, где дом поскрипывает не опасно, но громко.
Бумажный замок — защитный заголовок выставлен как вывеска, но внутри разрешено всё что только можно; фасад, не замок. · Следит за всеми. Телеметрия включена на максимум — сто процентов трассировок, сто процентов реплеев ошибок, частые записи пользовательских сессий; приватная информация юзеров отдаётся стороннему наблюдателю по-тихому. · Папка с прозрачными подписями. Имена загруженных файлов читаются как табличка: «pasport-scan.jpg», «selfie-with-id.png». Содержимое публично; хранилище не отличает «аватарку» от «документа с паспортом». · Предсказуемый адрес. Путь к загруженному файлу юзера строится по его идентификатору, и этот идентификатор любой получает с первой двери (см. выше). Знаешь номер — знаешь где лежит файл. · Разговорчивый блог. Форма входа отвечает по-разному на «есть такой user» и «нет такого». Перебором легко собрать список реальных читателей.
Четыре пункта «не дыра, но лишний шум» — не атака сегодня, но материал для завтрашней. Нет стандартной страницы для контакта с researcher'ами; email-подпись защищена «галочкой», а не ключом; служебные идентификаторы внутренней инфраструктуры утекают в каждый ответ; файлы раздаются с «неправильной подписью» на обёртке — встроенные средства браузера это всегда заметят, атакующий — будет использовать.