Ссылка на профиль есть, а профиля по этой ссылке — нет
Несколько недель назад я захотел убрать точку в юзернейме на Фейсбук, которая для моего перфекционизма была как красная точка на лбу для человека, который не исповедует индуизм. В этой статье я напишу что из этого вышло и как я создал царство мёртвых юзернеймов, которые больше никогда не увидят нового хозяина. Если, конечно, Фейсбук не захочет решить эту проблему.
Зайдя в настройки, я ввёл новый юзернейм (было: «fb.com/Имя.Фамилия», а нужно было «fb.com/ИмяФамилия») и нажал «Сохранить изменения». При этом нужно заметить, что данный юзернейм был доступен, и сохранение изменений было возможным, чего быть не должно было, т.к. на самом деле точка в юзернейме Фейсбука не играет никакой роли, т.е. можно проходить по ссылке без точки или же, наоборот, с кучей точек, но при этом окончательный URL будет таким, как он выглядит в настройках.
Например:
Если ссылка на профиль выглядит fb.com/Name.Surname, то при вводе fb.com/NameSurname или даже fb.com/Name.....Sur...na.me (где точек можно ставить сколько угодно и где угодно) будет переходить на профиль так, будто этих точек вообще не существует.
После сохранения настроек я получил интересное сообщение о том, что этот юзернейм больше не доступен, хотя секунду назад рядом с ним был текст «Username is available»
После чего я попробовал ввести этот юзернейм заново, но в этот раз рядом был уже другой текст «Username is not available» и сохранение было невозможным.
Я даже подумал, что кто-то внезапно занял такой же юзернейм (при том, что его невозможно было занять, т.к. точка не влияет никакой роли, а значит у другого юзера при попытке сделать такой юзернейм было бы «Username is not available», однако у меня это было возможным).
Дальше я решил перейти на свой профиль, но после нажатия на иконку профиля, я попал на страницу с ошибкой. Такого URL больше не существовало. Мой старый юзернейм пропал, и я получил стандартный айди номер в виде кучи цифр, которые буквально смеялись над моим перфекционизмом.
Тогда я снова зашёл в настройки и попытался сменить юзернейм на старый, но он был недоступен.
Немного расстроившись от такого несовершенства, я отрепортил проблему и забил, иногда всё же пытаясь поменять юзернейм.
Примерно через 3 недели мне пришёл ответ от саппорта-микроволновки со стандартным ответом «Спасибо за репорт, нам это очень важно». Разумеется, никто ничего и не сделал для исправления этой ошибки. Видимо, они слишком сильно заняты блокировками за непристойные картинкам и слова, поэтому исправлять баги им некогда.
Поиск решения
Тогда я решил попытаться самостоятельно вернуть себе свой старый юзернейм и стал искать различную информацию по этому багу. Но ничего подобного не было, лишь куча вопросов о том, как можно менять юзернейм после лимита, т.к. в Фейсбуке можно поменять юзернейм всего 2 раза.
После нескольких экспериментов с изменением юзернейма, я понял всю суть этой ошибки.
Оказалось, что при добавлении точки в юзернейм (главное, чтобы она была в слове, а не перед или после), либо при удалении этой самой точки (если она уже есть) и последующем сохранении изменений, этот юзернейм сбрасывался и становился недоступным. И такой сброс был безболезненным для ограничения изменений юзернейма. То есть благодаря этому багу можно менять юзернеймы бесконечное количество раз.
Правда, после 10 изменений подряд за короткое время, появляется сообщение о слишком частых попытках. Такое сообщение, судя по поиску, выдаётся при частых логинах или ещё каких-либо ошибках. Но через 1-2 часа я снова смог сменить юзернейм 10 раз подряд, получив то же сообщение.
В общем, суть ошибки стала полностью понятна, поэтому я решил написать подробное объяснение для лентяев из Фейсбук и отправил им репорт по whitehat программе. По идее, там принимают только сообщения об уязвимостях безопасности, но всё же там есть и «прочее». В обычный саппорт писать желания уже не было, т.к. после трёх-недельного ожидания пришёл лишь ответ от робота. Да и разве полное уничтожение юзернейма с последующей невозможностью его восстановить нельзя считать уязвимостью в безопасности?
Потратив какое-то время на подробное описание бага, где я также попросил вернуть мой нормальный юзернейм вместо кучи цифр, я отправил репорт о баге. На этот раз специалисты были уже немного побыстрее, ведь они ответили на второй день после отправления репорта. Неплохо для миллиардной компании мирового уровня, да?
Ответ был гениальный. Специалист по безопасности написал, что они занимаются только уязвимостями в безопасности, а т.к. это не угрожает безопасности, то им всё равно. И предложил написать в саппорт. В тот самый, где отвечают роботы.
Конечно же, никакого желания писать в саппорт у меня не появилось. Ко всему прежнему несовершенству Фейсбук добавилось ещё и наплевательское отношение к своему же продукту, не говоря уже о пользователях. Или же я придираюсь, и в компаниях такого уровня не принято перенаправлять вполне важные письма об ошибках в другой отдел?
В общем, я решил описать действие этого бага. Возможно, что для кого-то это будет полезная информация. А кто-нибудь, возможно, сможет придумать какое-нибудь более существенное применение этой ошибке.
Способ воспроизведения ошибки
Итак, само описание этого безболезненного сброса юзернейма, которое позволяет менять его бесконечное количество раз. Но нужно заметить, что если не сбросить юзернейм таким способом и сменить на другой, то следующая смена может быть последней.
Внимание! Данный способ полностью уничтожает действующий юзернейм, после чего его уже нельзя будет никогда использовать.
На самом деле всё просто:
1. Заходим в настройки.
2. Добавляем в любом месте юзернейма точку (даже если она уже там есть) и видим, что он свободен, поэтому можно нажать «Сохранить».
3. Получаем сообщение об ошибке, и этот юзернейм больше не существует. Никто больше не сможет его занять. Даже вы.
4. Дальше можно ввести новый юзернейм и при желании также потом его сбросить добавлением точки. Даже если этот баг пофиксят, то у вас всегда будет ещё один шанс сменить юзернейм, как и у обычных юзеров.
Здесь я действовал наоборот — убирал точку. Так тоже можно
Заключение
Самое интересное, что система безопасности Фейсбука не посчитала этот баг чем-то плохим. Притом что применение этого бага навсегда уничтожает юзернейм. После такого сброса его уже никто не сможет поставить. То есть, при желании, кто-нибудь может генерировать годные юзернеймы и сбрасывать их, тем самым буквально уничтожая их. Насколько мне известно, на данный момент не существует других вариантов, при которых юзернеймы становились бы недоступными, при условии, что это не запрещённое слово и юзернейм не занят.
Возможно, что с помощью этой ошибки можно сбросить и юзернейм другого пользователя, но с кодом я не особо дружу, поэтому не смог ничего такого реализовать. Если у кого-то это получится, то тогда, надеюсь, лентяи из Фейсбука обратят на это внимание. Ну и, возможно, выплатят вам вознаграждение по программе whitehat.
Так как в Фейсбук можно сделать тестовый аккаунт (правда для изменения юзернейма нужно будет всё же подтвердить через смс, что кажется немного бредовым для тестового аккаунта), то всё можно делать в рамках правил. Правда, если аккаунт тестовый и с ним можно делать что угодно, то юзернеймы — реальные. И уничтожаются они из реальной базы. Но это уже проблемы Фейсбук.
Кстати, если кто-нибудь найдёт дверь в царство уничтоженных юзернеймов и способ их восстанавливать, то это будет очень полезная информация для меня. Т.к. это, в общем-то, и есть главная причина, по которой я писал в Фейсбук. А то при виде кучи цифр в юзернейме моего профиля мне как-то не уютно. А другой ставить не хочется, бывает такое.
Update 05.06.2015:
Заметил, что при таком сбросе имени пользователя остаётся почта, которая основана на этом самом имени пользователя. Т.е. юзернейма нет, а почта — есть. Более того, с этими точками можно сделать и такую почту, которая не будет работать, что-нибудь вроде «u.s.e.r.n.a.m.e@facebook.com» — из-за такого количества точек она не создаётся, однако пишется, что существует.
Комментарии (28)
alizar
02.06.2015 01:05+2Ну да, тут риск безопасности сразу не виден. Надо бы поломать голову, придумать какой-нибудь вариант навредить и тогда уже посылать репорт. Ясно же, что в Security простые баги неинтересны, типа кнопочка неправильной формы.
Witja Автор
02.06.2015 04:19На самом деле я надеялся что они сами сразу что-нибудь поймут, т.к. у них явная проблема с этой точкой, которая позволяет сохранить уже недоступный (но свой) юзернейм. Хотя это не должно быть так. Вполне возможно, что эта точка у них может делать ещё что-нибудь.
У Гугл была какая-то похожая проблема с точкой, если не ошибаюсь.alizar
02.06.2015 08:06>>На самом деле я надеялся что они сами сразу что-нибудь поймут, т.к. у них явная проблема с этой точкой
Проблема-то есть, но надо доказать, что это проблема именно безопасности. Как её эксплуатировать?
corvus
02.06.2015 07:21+3Я тоже наивно считал, что гиганты интернета такие же прекрасные изнутри, как их офисы — ровное блестящее стекло, шестерни прекрасно смазанного механизма с ледяной точностью отсчитывают процессы, отлаженный механизм блестит и рождает сплошное чувство восторга.
А потом столкнулся с этим многомиллиардным царством по служебной необходимости (не как одиночка, о нет, вопросы решались на шесть нолей в долларах и более) и понял, что все там точно такое же как и везде и работает во многом благодаря проволке, соплям и синей изоленте.
С тех пор никаких иллюзий или ожиданий не испытываю, чего и вам желаю.
nomadmoon
02.06.2015 09:05+7Надо будет попробовать. Всё равно моё общение с фейсбуком только раздражающими уведомляшками на мыло ограничивается.
Alexeyslav
02.06.2015 10:23Ну и правильно, это не проблема безопасности а как раз один из способов её укрепления. Ведь благодаря тому что использованный никнейм больше никто не может использовать — никто не будет писать от чужого имени.
Остаётся только возможность массового вандализма, но поскольку такой вандализм незаметен то и заниматься им на регулярной основе никто не будет. Ограничение по 10 никнеймов в час делает цену вандализма слишком высокой — необходимо будет масса внешних белых IP чтобы обойти ограничение и куча оборудования которое потребляет ресурсы. А поскольку результат вандализма не заметен внешне вообще никак, то этим буде заниматься довольно специфический маньяк у которого много денег и свободного времени. И выгоды в отличие от киберсквотинга от этого дела НИКАКОЙ. Так, лёгкий вандализм.
Если дело дойдет до массового вандализма, я думаю просто откатят базу данных с протухшими никнеймами и все труды начинай сначала.Witja Автор
02.06.2015 15:49Дело в том, что при обычной смене юзернейма, он становится доступным для других (что правильно и логично). Но при таком сбросе через точку — нет. Тут ошибка в том, что точка позволяет сохранить уже использующийся тобой юзернейм, при этом удаляя его. Чего быть не должно.
ozonar
02.06.2015 14:18-1Чисто для справки: слово «юзернейм» встречается в тексте 42 раза.
sergey_dobrodey
02.06.2015 15:38+3Меня при чтении статьи тоже не покидало ощущение, что её писал SEO-шник.
madprogrammer
02.06.2015 17:02+4Сходил, проверил — статья на 4-м месте в гугле по запросу юзернейм :)
aleks1k
02.06.2015 18:35Непонятны ваши претензии к фейсбуку, у них по любому есть более важные баги и проблемы с безопасностью, чтобы все бросать и быстро исправлять эту незначительную ошибку. При первом обращении в саппорт скорей всего ошибка была зарегистрирована и ее исправят когда будет время. К тому же действительно это очень полезная фича, при смене юзернейма его никто больше не займет, и и не сможет выдать себя за вас. Вообще может так специально сделано, вы проверяли что при обычной смене юзернейма он становится доступен для регистрации другому пользователю?
Witja Автор
02.06.2015 20:22С момента обнаружения этой ошибки мной прошло уже больше месяца. Уверен, что она там уже давно.
Да, при обычной смене он будет доступен. Сделал уже кучу тестов этих изменений, штук 50 точно сменил на различных аккаунтах.
Уверен, что эта ошибка решается за более короткое время, чем рассматривать сообщения от тех людей, кто решит удалить или добавить точку в свой юзернейм, чтобы сделать его более красивым (например, кому-то нравится что-нибудь вроде «Имя.Фамилия», а кому-то наоборот «ИмяФамилия»), и удивится, что при удачной смене он лишится этого юзернейма навсегда.aleks1k
02.06.2015 21:23Им то наверное виднее, исправлять ее вообще и в какие сроки. В такой большой системе как фейсбук может сотни-тысячи известных багов быть известны, и их не возможно все за месяц исправить.
Witja Автор
05.06.2015 22:42Добавил апдейт по поводу остающегося почтового адреса при таком сбросе юзернейма.
staker
А я нашёл как навсегда уничтожить юзернейм а gmail: зарегистрировать пользователя со сложным паролем и забыть пароль.
Подайте этот баг за меня в гугл, а деньги поделим пополам.
grozaman
Ну если бы мы IP адреса одноразовые выдавали всем, то и IPv6 бы уже закончился такими то темпами.
Тут такая же ерунда, зачем забивать ник, который никем не используется?
Witja Автор
Если изменить юзернейм обычным способом, то он будет доступен другому пользователю. А при тех действиях, что я описал, юзернейм становится недоступен навсегда. Т.е. если написать скрипт, то можно генерировать юзернеймы и «уничтожать» их таким способом.
При этом официально в фейсбуке нельзя менять юзернейм больше 1 раза. И более того, чтобы получить возможность изменить юзернейм — нужно подвердить через телефон.
И самый главный вопрос: где это царство уничтоженных юзернеймов? Куда они вообще попадают при таких действиях? На всех сайтах с возможностью ставить свой юзернейм, после смены он должен становится доступным.
Аналогия с gmail не верна.