В одном из боковых коридоров стоит дверь без таблички. Кто-то её собирал для себя — управляющий, наверное, или строитель в первые дни. Через эту дверь в журнал жильцов вписываются новые лица. Если имени ещё нет — оно появится. А если есть — у этой двери есть тихая особенность: она переписывает запись поверх. Без вопроса «ты ли это», без подтверждения по почте, без печати.
Я подошёл к ней с именем одного из живущих в доме. Назвал имя, назвал новое слово-пароль. Дверь ответила одной строкой: «такой жилец уже есть, но мы переписали ему пароль и скрепили почту печатью одобрения». После этого по всему дому я мог пройти как тот человек — взять его ключи, его переписку, его кошелёк, его сохранённые цифровые слепки соседних домов.
Жилец узнает только тогда, когда сам не попадёт в свою комнату — потому что дом ему о смене пароля не сообщает. Между этим открытием и действиями злоумышленника — столько времени, сколько у того хватит решимости. Имя жильца достать из публичного — форум, прошлая утечка, угаданный корпоративный адрес. Это один шаг, который превращает любого зарегистрированного в чужой аккаунт.
У главных ворот стоит страж с картинкой — на ней нарисованы кривые буквы, и страж требует прочесть их вслух перед тем как впустить. Кажется, надёжно. У этой картинки две слабости — обе с одной стороны.
Молчанием тоже впускает. Если подойти и не сказать ничего — просто пустота, тишина — страж сравнивает свою тайну с твоим молчанием и решает что они равны. Дверь открывается. Это не обход — это дефект сравнения: страж не различает «ничего сказано» и «правильно сказано».
А когда ошибаешься — он сам подсказывает. Если ответить неверно, страж раздражённо процитирует: «На картинке было вот это слово, а ты сказал вот это». Само правильное слово прозвучит вслух. Следующая попытка — копия его реплики — и дверь снова открыта. Картинка-загадка теряет смысл — её ответ написан карандашом на обратной стороне.
В журнале жильцов поле «как звать» принимают как есть — без фильтра, без очистки. Я могу вписать туда не имя, а заклинание. Бумага примет дословно. Когда оператор поддержки откроет жалобу от меня — а имя автора отрисовывается на каждой странице его кабинета, в шапке, в списке задач — заклинание прочитается вслух его браузером.
В сочетании с тем, что ключи оператора лежат в его сумке без подкладки (см. ниже про «чужой голос»), его сессия становится моей в момент чтения. Это уже не атака на одного жильца — это лестница к самой будке вахтёра.
У этого дома странная особенность ритуала входа. Когда ты заходишь как прохожий — тебе дают спящий ключ на временное хранение. Когда ты потом представляешься, называешь имя и пароль — дом не выдаёт тебе новый ключ; он будит тот же самый, который у тебя уже был.
Это значит: если я заранее подсунул жертве свой спящий ключ — через ссылку, через обманчивое окошко в её браузере — и жертва пройдёт через дом-вход и авторизуется, тот же ключ, лежащий у меня, проснётся в её аккаунте. Я ничего не угадывал, я не подбирал пароль. Я дал ей ключ до того, как она вошла, и дом теперь верит, что это её ключ.
Внутри дома, у каждого жильца свой кабинет — там можно поменять пароль, переписать почту, перевести баланс. Все эти действия дом принимает по короткому слову-команде. Дом не спрашивает: «ты пришёл из своей двери?» Он не сверяется с печатью отправителя. Если слово прозвучало — он выполняет.
Это значит: если жилец зашёл в дом и параллельно открыл в соседнем окне чужую страницу — та страница может прокричать дому слово-команду через стену, и дом послушается. Сменит пароль. Перепишет адрес. Сделает ровно то, что было прокричано.
Сами ключи (которые в сумке у жильца) не обёрнуты подкладкой — любой, кто умеет читать сумку из соседней комнаты, прочтёт их буквально. И унесёт. Это вторая половина того же замка: ключи открыто лежат, дверь не проверяет отправителя.
Четыре щели по периметру — каждая по отдельности безобидная, вместе складываются в инфраструктуру для атаки на доверие.
Почтовый колокол на улице. Любой прохожий может дёрнуть колокол восстановления и вызвать почтальона, который понесёт жильцу записку «вот ваш забытый ключ». Прохожий не предъявляет себя, не ждёт ответа — просто звонит. Колокол можно дёргать сколько угодно — почтальон бегает молча.
Разговорчивый посыльный. На задней стене висит верёвка — потянешь, посыльный понесёт письмо номер такой-то. Какому угодно адресату. Письмо идёт от имени дома, с печатью дома, через настоящую почтовую службу дома. Спам через чужой штемпель. Заодно по тому же признаку «номер есть» / «номера нет» можно перебрать всю переписку дома и узнать, кто с кем общался.
Бесконечный коридор у входа. У главной двери нет утомления. Можно стучать неограниченно — сто раз в минуту, тысячу раз, всю ночь. Дверь не запоминает лицо стучащего, не запирается на паузу. В сочетании с тем, что страж со шпаргалкой (см. вторую дверь) фактически прозрачен — словарь утечек проходит до конца без сопротивления.
Две печати на конверте. Письма из этого дома уходят с двумя печатями — обе с подписью разных людей, и почтовая служба, читая такую двойную печать, чаще всего принимает письмо вообще без печати. Любой, кто захочет писать «от имени дома» с любого подвала, пройдёт по доставке как легитимный.
Папки с приложенными к жалобам документами лежат на длинной полке в общем коридоре — без замка, без вахтёра. Каждая папка подписана случайным длинным кодом, и пока этот код знают только автор и поддержка, папка как бы скрыта. Но код сам себя называет — в успешном ответе на загрузку, в логах прокси, в кэше пограничного сервера, в скриншотах рабочего стола. Любая утечка кода — папка открыта навсегда, без возможности отозвать.
В здании ощутимо старое время. Двигатели, на которых всё крутится, не получали правки уже больше пяти лет; на воротах гордо написана версия стража-у-входа — этого не должно быть на наружной стене. Целое крыло старого форума стоит закрыто на петлю снаружи — двери все на месте, но залы пустые, посетителей не водят. Внутри по-прежнему можно тихо переписать чужую запись, и никто не увидит — но и никто не зайдёт. Атмосферный шум, не уязвимость; материал для следующего захода.