Уязвимость
Дмитрий Валерьевич Пяткин
Леша – молодой программист. У него прекрасная работа, замечательные друзья, любимая девушка и любимые родители. Все его любят и ценят, а он старается сделать лучше жизнь дорогих ему людей. По крайней мере, он так считает. Всё меняется, когда Леша решает найти уязвимость в популярном мессенджере, а найдя ее, взламывает переписку и читает, что пишут и думают о нем те, кто ему дорог.
Содержит нецензурную брань.
Дмитрий Пяткин
Уязвимость
Серая, непроницаемая водная гладь временами играла бликами фар редких машин, проезжавших по мосту в поздний час. Ветер гудел в вантах моста, соединявшего две части спящего города, которые стремилась разлучить широкая бурная река. Леша не помнил, как долго он здесь стоит и всматривается в холодную бездну. Всё кроме этой бездны перестало существовать и иметь значение. Даже звуки проезжающих авто, порой очень громкие, Леша будто бы не слышал. Он сосредоточенно смотрел вниз, выбирая момент для того, чтобы шагнуть в неизвестность. Если бы всего пару дней назад ему кто-то сказал, что он будет стоять здесь ночью на городском мосту, планируя прыгнуть вниз, с высоты 40 метров, он бы просто покрутил пальцем у виска. "Прыжок в воду с 40 метров? Да это же верная смерть! Я что – самоубийца?" – изумленно выкрикнул бы он и развёл руками. Ответ на последний вопрос, к слову, он и сам пока точно не знал. Потому что, если бы знал, то уже давно бы прыгнул, а не стоял тут черт знает сколько времени. Но чем дольше он стоял, всматриваясь в темноту, тем больше ему казалось, что ответ вот-вот станет утвердительным. Леша начал мысленно прогонять по кругу все события прошедших дней, приведших его сюда, и сердце начинало с болью сжиматься от злобы, отчаяния и бессилия. Удивительно как быстро мир может разрушиться до основания, причем почти без каких-либо предпосылок. А мир этот был очень даже неплох, уютен и полон прекрасного.
Леше всего 27, он – перспективный и крайне востребованный фронтенд-разработчик в международной IT-компании. Сервисами, в разработке которых он участвует, пользуются люди по всему миру. Леша очень любил свою работу за возможность непосредственного участия в улучшении жизни огромного количества людей. Его привлекало и вдохновляло, что он может, находясь где угодно, делать вещи, которые способны изменить жизнь человека в любом уголке планеты. Привлекало и то, что за свою работу он получал очень неплохие 5 тысяч долларов в месяц, которые позволяли ему быть совершенно самодостаточным, а главное – обеспечивать не только себя, но и своих близких. Самыми близкими людьми у Леши были родители, а также любимая девушка Юля, с которой они встречались уже целых 2 года и которой он в скором времени планировал наконец-то сделать предложение. Круглую сумму, которая позволяла делать жизнь близких такой беззаботной он и сейчас получал, просто теперь, всё это, равно как и грандиозная миссия по развитию мира, перестала иметь хоть какое-то значение. Мир, для которого Алексей готов был вдохновенно трудиться, перестал существовать всего за пару последних дней.
Всё началось месяц назад. Алексей привычно коротал досуг, читая статьи на популярном IT-сайте. Там он любил делиться мнением с коллегами, общаться и узнавать новости о современных технологиях. Это было полезно для общего развития, а что-то можно было позаимствовать в качестве идей для основной деятельности. Так Алексей наткнулся на статью, опубликованную на официальной странице компании StarChat – одного из самых популярных и надежных в мире мессенджеров, которым пользовался и сам Леша. Одной из главных фишек мессенджера была сфокусированность на безопасности персональных данных и приватности пользователей. В статье рассказывалось о том, как компания работает в этом направлении и в частности описывался один из способов поиска критических уязвимостей в системе. Компания предлагала всем желающим совершить попытку взлома мессенджера, с целью получения доступа к перепискам пользователей. Если это удастся сделать, первый сообщивший о найденной уязвимости, получит от компании солидное вознаграждение в виде 100 000 долларов. Таких людей называют багхантерами, Леша о них слышал и раньше, но никогда серьезно не погружался в эту тему. Хакером он никогда не был и вопросами сетевой безопасности не занимался. Он имел лишь общее представление об алгоритмах шифрования, и последний раз имел с этим дело еще в институте. И всё же в нем проснулся азарт – а что, если ему всё-таки удастся обнаружить уязвимость и получить 100 000 долларов? "Ведь я совершенно ничего не теряю. Это могло бы стать моим развлечением на ближайшие месяца два, к тому же заодно я смогу подтянуть знания по криптографии и браться за новые интересные задачи. Прокачаю себя как специалиста и интересно проведу время. А если надоест, то всегда можно бросить", – рассуждал Леша. Для участия в поиске уязвимостей нужно было подать заявку. Он заполнил несложную форму и приступил к поиску.
С этого момента и почти каждый вечер он копался в архитектуре StarChat, пытаясь уцепиться за какую-нибудь неточность в коде, которая могла бы намекнуть на возможность доступа к переписке пользователя. Чем больше он работал над поиском багов, тем больше восхищался работой своих коллег, а вот энтузиазм напротив угасал пропорционально восхищению. За первые две недели он проверил практически все потенциальные места взлома – при регистрации в мессенджере, при отправке аудиосообщений, при совершении видео-вызовов, он даже пытался получить доступ с помощью специально написанного им бота, который маскировался под инструмент для создания собственных стикеров. Леша всё больше чувствовал себя героем фильма про хакеров, но ничего из перепробованного не приближало к нахождению уязвимости.
"Может, это просто их PR-ход и они давно уже закрыли все уязвимости?" – размышлял Леша. И действительно, за всё три года существования мессенджера, не было ни единого случая утечки данных, ни единого скандала. Мессенджер полностью оправдывал репутацию самого надежного и безопасного средства общения, что невероятными темпами сказывалось на количестве активных пользователей – за последний год их число увеличилось в целых три раза: по статистике, двести миллионов людей по всему миру заходили в мессенджер хотя бы один раз в месяц. "Ладно, поковыряюсь ещё недельку и ну его нафиг" – решил Леша. Но все-таки возможность получить 100 000 долларов грела ему душу. Не то чтобы он был зациклен на деньгах, это было совсем не так. Леша смотрел на деньги философски и видел в них инструмент, с помощью которого можно улучшить мир и в первую очередь – улучшить жизнь дорогих ему людей. В тайне он мечтал купить своим родителям роскошный большой дом. Он знал, что мама с папой давно мечтали о нем, но даже со своей солидной зарплатой Леша не мог позволить просто взять и купить дом мечты. Он мог позволить себе очень неплохую квартиру средних размеров или просто залезть в большой кредит, но ему хотелось сразу сделать всё идеально, не залезая ни в какие долги. А еще он держал в уме свое намерение сделать предложение своей любимой Юле. И оно тоже должно было стать идеальным. Леша давно готов был сделать предложение, но, но как и в случае с домом для родителей, хотел создать совершенные условия. Его мечта состояла в том, чтобы отправиться с любимой в Париж, и оказаться в знаменитом ресторане Le Jules Verne, расположенном прямо в Эйфелевой башне. В идеале он бы хотел арендовать этот ресторан, чтобы в торжественной и романтичной обстановке, оставшись с Юлей один на один, преподнести возлюбленной дорогое и красивое кольцо. Все эти смелые мечты могли бы легко воплотиться в реальность, если бы он справился с задачей и нашел эту злосчастную уязвимость, которой, возможно и вовсе не существует. Только эти мечты и заставили Лешу дать себе еще неделю на поиск решения. И вот эта неделя подходила к концу. Вечером, после довольно загруженного рабочего дня, Леша раскинулся в кресле перед своим домашним компьютером. Мысли о рабочих задачах никак не выходили из головы и быть может, поэтому он смог посмотреть на проблему с иного ракурса. "Кажется, я проверил почти всё. Или нет? Регистрация, отправка сообщений, голосовые чаты, видеоконференции – всё проверено. Попробую пройтись заново. Итак, регистрация, как она осуществляется? На официальном сайте можно скачать приложение, также можно получить ссылку на регистрацию от друга, просто переходим по ссылке и попадаем на официальный сайт…" – на этом моменте Леша застыл, глядя в монитор. Он понял, что для рассылки приглашений StarChat использует не один из своих субдоменов, а отдельный домен, который никак не связан с основным приложением даже названием. Домен именовался forwardAUTOload.co.uk и использовал небезопасное http-соединение. Леша понял, что это может быть зацепкой. Он проверил логи SQL-запросов на предмет наличия ошибок и с удивлением для себя понял, что он может свободно формировать запросы самостоятельно, хотя он не должен был иметь такую возможность. Это означало, что он может произвольно видоизменить приглашение в мессенджер, сделав из него что угодно. Теперь, с помощью найденной лазейки, нужно было попытаться прочесть чью-либо переписку. Леша придумал способ. Он сможет отправить уведомление в мессенджер, замаскированное под сообщение от официального внутреннего аккаунта StarChat, с помощью которого мессенджер уведомляет о своих обновлениях. Пользователю достаточно просто прочитать этот уведомление и в теории Леша сможет получить доступ ко всему списку чатов, сможет читать переписку и даже отправлять другим пользователям сообщения от имени аккаунта "жертвы". Причем, ему даже не нужно будет знать логин и пароль от аккаунта! Для того, чтобы подтвердить гипотезу, Леша быстро зарегистрировал новый аккаунт в StarChat и добавился к нему со своего личного профиля. Он быстро набросал абракадабру из произвольных букв в чат между своим профилем и профилем-фейком. Это была переписка, которую он должен суметь обнаружить с помощью гипотетической уязвимости. Еще час ушел чтобы перенастроить стандартные запросы сервера, подменив их собственными. И вот он, момент истины. Леша отправляет фальшивое сообщение об обновлении от аккаунта StarChat, читает его с помощью фейкового аккаунта и… Лицо Леши медленно расплывается в улыбке – перед ним на экране вся переписка, которую он только что смоделировал. Способ работает! Он получил доступ к переписке и теперь может читать её в режиме реального времени! От возбуждения Леше срочно потребовалось встать и пройтись по комнате, его переполняли эмоции. "100 000 долларов! Так просто! Ответ был на поверхности! И это самый надежный мессенджер в мире? Я даже не специалист в этой области, а сумел взломать переписку всего за 3 недели! " – Леша был вне себя, он чувствовал себя так, словно по дороге домой нашел чемодан с деньгами. "С другой стороны, мы же все пользуемся этим мессенджером и всё это время в нем есть такая дыра? А что, если я не первый, кто нашел эту уязвимость? Что если в мире куча хакеров, которые не сообщают о своей находке, а просто тихонько воруют данные, зарабатывая на их продаже гораздо больше, чем эти 100 000 долларов? Лешина радость резко сменилась тревогой. Он представил как все его переписки, а также переписки его родственников и друзей могут стать добычей совершенно незнакомых ему людей, с непредсказуемыми намерениями. Но тут, мимолетная мысль о переписках близких свернула в совершенно неожиданное русло – Леша вдруг понял, что он прямо сейчас может запросто зайти и почитать абсолютно любую переписку кого-то из своих знакомых. Леше стало противно – почему такие мысли вообще лезут к нему в голову? Это же отвратительно! А хотел ли бы он, чтобы кто-то также вторгался в его личную жизнь? Леша решительно зашел на официальный сайт StarChat нашел раздел "разработчикам" и перешел к форме обратной связи, которую надлежало заполнять багхантеру, чтобы уведомить мессенджер о результатах своей работы. "Сейчас я сообщу о проблеме и они быстро всё залатают" – подумал Леша, набирая сообщение. Но вдруг раздался звонок.
На экране смартфона появилась знакомая Леше физиономия – это был Гарик, друг детства. Они виделись с ним не очень часто, интересы у них пересекались весьма относительно, но всё же Гарик был приятным человеком и Леша старался поддерживать отношения.
– Леха, здорова! Я тебе не помешал?
– Привет, Гар, не всё в порядке, ты как?
– Да всё отлично. Слушай, я много времени не займу, перехожу к сути – у меня тут намечается небольшой сабантуйчик – хочу отметить новоселье, а то заехал в свою трёшку еще полгода назад, но так никого и не собрал по этому случаю.
– Круто, а сколько народу планируешь собрать?
– Да человек 10.
– Хаха, и это ты называешь "небольшой сабантуйчик"? – засмеялся Леша.
– Ну да, я прикинул, как раз все поместятся. Помнишь, ты меня еще как-то знакомил со своим другом, Юрой, не помню как его по фамилии… В общем, его тоже позови, а то у меня его контактов нет. Ну и Юля, разумеется, пусть тоже приходит, я всех зову.
– Спасибо большое за приглашение, Гар, мы постараемся обязательно быть. Давай, чтобы честно было, я тебе чуть позже сегодня наберу и точно скажу, смогу я или нет.
– Да без проблем, Леш, но я очень рассчитываю тебя видеть, имей в виду, – добродушно настаивал Гарик.
– Ясно, тогда жди звонка.
– Жду, жду. Давай, пока!
Леша только успел завершить вызов, как тут же услышал звонок в дверь. "Кажется Юля вернулась, что-то поздновато сегодня" – подумал Леша и пошел открывать дверь.
– Привет, зайчик, это я, пустишь меня – из-за двери донесся веселый звонкий голос Юли.
– Может быть и пущу, если ты пообещаешь не кричать на весь подъезд о том, что я зайчик – весело и громко ответил Леша, приоткрывая дверь.
– Ну брооось, кому какое дело? Ты думаешь, соседям важно, как мы друг друга называем? – спросила Юля, заходя в только что открытую дверь квартиры.
– Да не то чтобы меня это беспокоило, но все-таки немного неприятно, когда совершенно посторонние люди могут слышать что-то, что адресуется исключительно тебе.
– Это всё какие-то скрытые комплексы, милый, – назидательно проговорила Юля, снимая пальто, – мне вот совершенно неважно, что обо мне думают посторонние, и тебе тоже пора научиться не обращать внимания на это.
– Да, ты как всегда совершенно прав, Юльчонок, – Леше нравилось называть так свою девушку. Ему слышалось в этом прозвище что-то среднее между волчонком и бельчонком, что по его мнению весьма точно отражало переменчивый и противоречивый характер Юли. Она была словно полной противоположностью Леши по темпераменту, но именно этот факт парадоксальным образом уравновешивал их отношения.
– Ты опять меня так называешь? – сердито воскликнула Юля, – я же тебе сто раз говорила, что мне не нравится это дурацкое коверкание моего имени!
– А мне думаешь, всегда хочется быть зайчиком? – с улыбкой возразил Леша.
– Ну чего ты придираешься, а? Я же любя, тем более зайчик – это мило, а твой "юльчонок" – это фигня какая-то, честно слово, – с досадой фыркнула Юля, – у меня сегодня был очень тяжелый день, репетиция затянулась допоздна, Юрий Рейнольдович нас решил не щадить перед выпускным экзаменом.
– Да, я как раз хотел спросить тебя, как прошла репетиция, – тихо заметил Леша,
– Ой, это кошмар! Ты знаешь Риту? Помнишь, мы как-то сидели все вместе в ресторане "Букет Виктории"?
– Да, припоминаю, – задумчиво произнес Леша, хотя на самом деле он абсолютно не помнил никакую Риту и даже не особо припоминал этот ресторан со странным названием "Букет Виктории".
– Так вот, Юрий Рейнольдович так на неё кричал, что она три раза бегала в гримерку, чтобы выплакаться.
– Какой-то садист этот ваш Юрий Рейнольдович, а на тебя он тоже кричал? – с легким возмущением в голосе спросил Леша.
– На меня он ни разу еще не кричал, – гордо ответила Юля, – и потом, ты не прав насчет садизма. Это просто методы его работы с творческими людьми. В актерском ремесле никак без дисциплины, а Рита – просто тупица, до которой по-другому не доходит. Если бы она не забывала свои реплики и не путала интонации, всё было бы отлично.
– А тебе не приходило в голову, что ты так говоришь только потому, что он на тебя никогда не кричал? – иронично заметил Леша.
– Нет, ну вот зачем ты опять начинаешь? Я же тебе говорю – на меня он никогда не станет кричать, потому что я прекрасно понимаю свою задачу и хорошо готовлюсь к роли. И вообще, я же тебя не учу, как программировать твои программы. Знаешь, давай просто отдохнем, мне так не хочется говорить про театр сегодня. Он у меня уже вот где, – Юля характерным жестом провела воображаемую линию по своей шее.
– Да, милая, давай не будем. Я тут еды заказал, твои любимые мидии и wok с креветками, ты будешь? А еще в холодильнике стоит замечательная бутылка твоего любимого французского вина.
– Ты просто мой спаситель и настоящий рыцарь! – голос Юли смягчился, она нежно прижалась к Леше и быстро поцеловала его в губы.
***
Следующие два дня пролетели почти незаметно. Лешу захлестнул круговорот рабочих задач, которые отнимали всё его внимание и силы. Он совсем забыл про уязвимость, найденную в понедельник, и вспомнил про нее лишь вечером в четверг, когда ему снова позвонил Гарик. "Блин, я же ему обещал перезвонить в тот же вечер насчет вечеринки" – опомнился Леша.
– Привет, Леха! Ну что насчет пятницы? Ты обещался позвонить. Ждать вас с Юлей? – напористо произнес Гарик.
– Привет, Гар, да прости, я совсем замотался, тяжелые деньки. Я не забыл, давай через минут 10 перезвоню, только у Юли спрошу и сразу перезвоню. Сорри, правда, как-то неловко вышло.
– Да не парься, всё в порядке, я понимаю.
– Короче, жди звонка не позднее чем через 10 минут.
– Окей.
Леша направился в гостиную. Юля уютно устроилась на диване в легком домашнем халате. Она изящно держала в своей ладони бокал вина и смотрела свое любимое телешоу.