Уязвимость

Уязвимость

Серая, непроницаемая водная гладь временами играла бликами фар редких машин, проезжавших по мосту в поздний час. Ветер гудел  в вантах  моста, соединявшего две части спящего города, которые стремилась разлучить широкая бурная река. Леша не помнил, как долго он здесь стоит и всматривается в холодную бездну. Всё кроме этой бездны перестало существовать и иметь значение. Даже звуки проезжающих авто, порой очень громкие, Леша будто бы не слышал. Он сосредоточенно смотрел вниз, выбирая момент для того, чтобы шагнуть в неизвестность. Если бы всего пару дней назад ему кто-то сказал, что он будет стоять здесь ночью на городском мосту,  планируя прыгнуть вниз, с высоты 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 нашел раздел "разработчикам" и перешел к форме обратной связи, которую надлежало заполнять багхантеру, чтобы уведомить мессенджер о результатах своей работы. "Сейчас я сообщу о проблеме и они быстро всё залатают" - подумал Леша, набирая сообщение. Но вдруг раздался звонок.



Отредактировано: 12.05.2021