1. Обнаружение уязвимости
Уязвимость заключалась в методе API newsfeed.get. При выполнении самого обычного запроса к нему, в объекте, среди прочих, возвращался массив из 4-5 пользователей (profiles). Они, судя по документации, должны были являться пользователями из ленты новостей. Однако я никак не мог найти в ленте этих людей, и зачастую в массиве встречался только мой собственный аккаунт.
Меня заинтересовало это и я начал тестировать этот метод на ленте новостей с записями от моей собственной группы. Потратив вечер на тесты, я нашел закономерности: в массиве возвращались администраторы, сделавшие запись в группу, и люди предложившие эту запись в группу, причем не для одного поста, а для последних четырех, и отдавались они вперемешку, без определенного порядка.
То есть, сделав к newsfeed.get запрос для получения последнего поста в ленте новостей, в массиве profiles мне возвращало администратора написавшего и пользователя предложившего как эту запись, так и предыдущие три.
Это было уже достаточно серьезной уязвимостью, однако мне хотелось связать конкретные посты с конкретными людьми.
Первым делом я стал выносить каждую анализируемое сообщество в отдельный список новостей, так я смог решить проблему, когда пользователи разных сообществ находились в одном массиве. Вторым моим шагом стало сокращение параметра count до одного, таким образом я получил массив profiles для каждого поста группы. После этих действий стало значительно легче анализировать выдачу.
Я написал скрипт, который первым делом создавал список новостей с определенным сообществом. Затем собирал для каждого поста этого сообщества свой массив с профилями. Здесь я столкнулся с лимитами API, оно отдавало мне посты лишь за последние 12 дней, но с этим тоже можно было работать.
После сбора массивов для максимально возможного количества постов, скрипт начинал их анализировать. Для начала находились те пользовательские id, которые встречаются ровно в четырех массивах. Из четырех постов, связанных с этими массивами я находил самый ранний. Этот пост был предложен в сообщество пользователем, чей id мы нашли. Затем эти пользователи отфильтровывались из массивов и мною составлялся список администраторов.
При желании вы можете посмотреть код эксплуатации уязвимости на Github .
2. Сообщаем об уязвимости
Являясь сознательным пользователем, после этого я отправился сообщать об уязвимости. Так как открытый баг-трекер я счел не лучшим местом для такого рода уязвимости, я связался сразу напрямую с разработчиками. Первый из разработчиков просто не ответил на мое сообщение, второй ответил спустя 4 дня, поблагодарил и обещал подумать, как это исправить.
Я знал об отсутствии официальной bug bounty программы у ВКонтакте, но также знал, что нередки были случаи поощрения за уязвимости внутренней валютой (голосами), однако решил отложить эти вопросы на момент исправления уязвимости. После этого я стал изредка мониторить уязвимость. Это продолжалось до апреля 2015, когда прочитав очередную статью об уязвимости и вознаграждении, я снова проверил свою уязвимость и она не была исправлена.
Я решил связаться по поводу уязвимости с техподдержкой где, спустя две недели ожидания, мне написали, что код передан разработчикам и меня оповестят, как только появятся новости.
Наступил май, я снова решил проверить уязвимость, и она, наконец, была исправлена. На это потребовалось 8 месяцев. Со мной, несмотря на обещания, никто так и не связался, поэтому я решил написать сам, и заодно узнать критерии, по которым социальная сеть выплачивает вознаграждения. Меня ждала очередная неделя ожидания ответа от техподдержки, и сам ответ, в котором мне предложили подождать ещё.
Со мной связались лишь 29 мая, спустя несколько часов после запуска программы вознаграждения за уязвимости, заявив, что раз «уязвимость уже исправлена, то она не подпадает под новую программу и им мне нечего предложить».
Итоги
- Очередная уязвимость в приватности ВКонтакте
- Потребовалось 8 месяцев и 3 моих обращения для исправления
- Вопросы о вознаграждении игнорировались вплоть до запуска bug bounty программы, после чего мне под ее предлогом было отказано в какой-либо выплате
- Техподдержка предпочла длительное игнорирование каким-либо действиям
UPD: Похоже, после запуска программы поощрения ситуация изменилась не сильно.
Комментарии (76)
MichaelBorisov
02.06.2015 16:25+84Решение очевидно: если администрации не нужны сообщения об уязвимостях, или она не хочет за них платить — то не стоит ломиться в закрытую дверь, а предложить информацию тем, кому она нужнее.
BelBES
02.06.2015 16:33хм… а продажа уязвимостей в даркнете не наказуема разве?
Terras
02.06.2015 16:36+11Ну… например, можно потопить группу по типу «подслушано», если рассказать людям, что теперь можно видеть автора поста и так далее=)
OnYourLips
02.06.2015 16:38+5Использование наказуемо по российским законам.
Продажа, насколько мне известно, под это не попадает.
Ситуация похожа на речи бабок у подъезда: «Вот эта мелкая прошман*овка из 114 квартиры всегда в 10 вечера уходит, внучек, а бохатая дура, телевизор у нее на всю стенку, живет то одна».BelBES
02.06.2015 17:02+2Ну, тогда возникает вопрос, как декларировать доходы от продажи уязвимостей…
MichaelBorisov
02.06.2015 17:28+7Как доходы от гражданско-правовых сделок, каковой и является купля-продажа. Если вы занимаетесь этим систематически — то как доходы от предпринимательской деятельности.
Terras
02.06.2015 17:26+8Сделать парсер всех неудовлетворенных девушек из разных групп, и продавать эту информацию на специальных форумах различным альфачам?
MichaelBorisov
02.06.2015 17:18Вряд ли в США вас накажут, если вы предложите эту информацию АНБ, например. Надо просто смотреть по юрисдикции.
BelBES
02.06.2015 17:24+2Мне кажется, если я буду продавать уязвимости вконтактика АНБ, живя в России, то меня осудят за государственную измену (=
MichaelBorisov
02.06.2015 17:27+5Так я же говорю, смотрите по юрисдикции. Живете в России — предложите информацию ФСБ.
Kolonist
02.06.2015 17:44+2Боюсь, это не так выгодно ;)
MichaelBorisov
02.06.2015 18:06+1Иметь хорошие контакты в СБ государства, в котором живете — всегда выгодно. Вам могут предложить выгодную работу или подряды, если даже много не предложат за конкретную найденную уязвимость.
mammuthus
02.06.2015 17:59Боюсь, они в курсе.
MichaelBorisov
02.06.2015 18:08+5А вы проверьте. Думаете, там боги сидят и все знают?
Temirkhan
02.06.2015 20:41-5Есть слушок, что «военные технологии» на порядок опережают все остальные.
amarao
02.06.2015 17:27Опишите статью, под которую попадает продажа уязвимости.
BelBES
02.06.2015 17:34Ну так я потому, что я не знаю такой статьи, но сомнения по этому поводу имеются.
В порядке бреда: при жалении суд наверняка может упустить момент продажи и будет формулировка аля «гражданин А, получив инструкции от гражданина Б, совершил преступление предусмотренное статьями...» им пойдет горе-продавец как соучастник преступления.amarao
02.06.2015 17:46+1Для соучастия надо знать про готовящееся предступление. Незаконный доступ к ЭВМ и изготовление вредоносных программ не покрывают информацию об уязвимости.
Я не вижу ни одной статьи (кроме «резиновых» хулиганства и экстримизма), которые можно было притянуть к продаже информации об уязвимости.forgotten
03.06.2015 09:13Так как бы в суде-то будут бить по морде, а не по паспорту. Вероятно, это будет соучастие в этом самом незаконном доступе к ЭВМ. А строить из себя целочку и рассказывать, что ты знать не знал, что в даркнете обитают злые дяди и даже не подумал, что они дают тебе денежек с целью сделать что-то нехорошее — курам на смех.
Zibx
02.06.2015 20:26нет. Наказуема только продажа уязвимости с несоблюдением должных мер предосторожности.
sebres
02.06.2015 22:13Нельзя так делать, от слова никогда :)
Тогда уж лучше раскрывать подробности уязвимости только по факту оплаты (см. например habrahabr.ru/post/258513/). Хотя ту идею, кстати не мою, хабрасообщество местами почему-то оценило гораздо менее одобрительно (шантаж и злостное вымогательство).
brainfucker
03.06.2015 13:16-15Откуда информация о том, что уязвимости не нужны и что ВК не готовы платить за них, неужели вы думаете, что это то, на чем у нас есть желание экономить, особенно учитывая то, что для компании данные суммы не являются большими?
Дело в том что налетела куча мудаков и начала клянчить деньги либо за мелкие проблемы, за которые станно ожидать больше 100$ либо за баг который был давно, и о котором репортило в разное время человек 100, потому что он вылез гдето на форуме, что теперь мы всем должны всем школьникам способным перепостить запись с форума в интерфейс поддержки по 10000$ выплачивать, серьезно?fairplay
05.06.2015 10:45+6Можно ли ссылаться на второй абзац, как на позицию VK, озвученную одним из представителей социальной сети?
Beltoev
07.06.2015 01:38+5Мне одному показалось, что сейчас автора поста прямым текстом мудаком обозвали?
Ну, назвался представителем компании, зачем такие вольности в словах допускать?
BelBES
07.06.2015 12:00+5либо за баг который был давно, и о котором репортило в разное время человек 100
А как вы доказываете тот факт, что ошибка уже была найдена? Есть какой-то публичный багтрекер, где можно посомтреть на наденые ошибки? Иначе получается, что абсолютно про любую найденую уязвимость можно сказать, что её уже кто-то нашел…
Pilat
09.06.2015 10:42+7То есть 100 человек в течении 8-ми месяцев или больше писали вам об одном и том же баге, а вы не реагировали?
ivaaaan
02.06.2015 17:23+9Мне тех поддержка примерно так ответила, когда я им написал про баг в апи:
Вроде как и баг, но никому не мешает, а иногда бывает полезен.
Может у вас тоже вроде как и уязвимость, но никому не мешает, а иногда бывает и полезна?
kinguru
02.06.2015 17:54-1Это наши реалии. Этим «еропейская/американская» приличная компания отличается практически от любой «нашей».
Отношение к клиенту пофигистское. Я уже давно не вКонтакте.ximaera
02.06.2015 20:36+9Да ни фига она не отличается. Это общемировые реалии.
Chikey
03.06.2015 10:02Это как сравнить яндекс с газпромом. Есть технологич. компании а есть обычные, им можно.
ximaera
03.06.2015 10:31Во-первых, всё равно нельзя. Головотяпство есть головотяпство.
Во-вторых, а что технологические компании? То же самое, что и в обычной среде: есть нормальные вроде Яндекса, а есть вот такое вот.
MichaelBorisov
03.06.2015 14:05Психологическое восприятие подобных ситуаций может быть неоднозначным.
В мою бытность студентом у нас на факультете каждый студент, хоть чуть-чуть разбирающийся в компьютерах, пытался их взломать, получив доступ к правам администратора или к аккаунтам других студентов. В ход шли и средства социальной инженерии, и самодельное вредоносное ПО, и эксплуатация уязвимостей системы. Но обычно успешные хаки заканчивались безобидно: подшучивания друг над другом, копирование решений к лабораторкам и т.д. Преподы эту активность где-то даже поощряли, а найденные дыры в безопасности ОС — фиксили на месте. Обид на юных «хакеров» не держали никаких.
Но однажды нашелся студент, который раскопал в интернете информацию об одной уязвимости линукса, скачал эксплойт, с его помощью взломал один из центральных серверов и потер на нем содержимое винта. Типа «убедительная демонстрация». И вот этот поступок уже перешел границу. Преподам пришлось потратить уйму времени на восстановление сервера при том, что у юного хакера не было никакой необходимости в такой «жестокой» демонстрации своего успеха. К тому же, это была не его личная заслуга, а чужие разработки. И этого студента уже никто по головке не гладил, у него испортились отношения с компьютерными преподами. Да и я этот поступок не одобрил. По мне так: нашел уязвимость — продемонстрировал взлом с минимальным ущербом — сообщил преподам. Или: нашел уязвимость и тихо используешь для себя, не мешая другим работать.ximaera
03.06.2015 14:08+1Ну логично. А тут это при чём? Автор никому не навредил.
MichaelBorisov
03.06.2015 22:56При том, что автор создал им дискомфорт. У многих людей логическое мышление не так развито, как у университетских преподавателей, поэтому они не могут понять, что на самом деле автор оказал им услугу и защитил от более крупных неприятностей. На поверхности лежит то, что автор нарушил их покой и вторгся в их жизненное пространство. Отсюда и агрессия.
ximaera
04.06.2015 03:32Хорошо. А какое отношение это имеет к треду про разницу между русскими и западными компаниями? :-)
ximaera
04.06.2015 03:41+1Кстати, описанная вами причина — не единственная и даже (по моему опыту) не главная. Есть ещё как минимум три:
— «то есть он нас, что, взломал? То есть совершил уголовное преступление? Пусть теперь сядет в тюрьму, куда полиция смотрит вообще»
— «это он на меня наехал, что ли? Типа, крутой, за лоха меня держит? Да я ему сейчас!..»
— «зачастую накрывшаяся премия безопасников сейчас намного для них важнее чем украденные пару миллионов долларов у компании через пару лет, когда они уже будут работать в другом месте»SVlad
09.06.2015 10:46Пункт два — это ведь как раз то, что описано в комментарии выше.
ximaera
09.06.2015 14:00ИМХО технически не совсем. Между формами восприятия «вторгся в личное пространство» и «пытается подорвать авторитет» есть некоторая существенная разница — людям из 90-х первое перенести куда проще, чем второе.
kinguru
05.06.2015 08:46Приведу в пример Амазон. Kindle.
Девайс ломается здесь по вине пользователя (треснул экран).
Что делает амазон — меняет девайс бесплатно и берет на себя все расходы по доставкам в обе стороны.
Что делает вКонтакте? Морозится как мелкий жулик, делает вид что никаких договоренностей не было.
Человеческий фактор не отменить. Воспитание этого недоменеджера, который так себя ведет позорит всю компанию.
И таких недоменеджеров все ещё большинство на постсоветском пространстве. Почему именно тут, скажите пожалуйста?ximaera
09.06.2015 13:56Потому что нельзя делать выводы на выборке из двух элементов. Выше я приводил пример с американским Старбаксом, который повёл себя куда хуже, чем Вконтакте в аналогичной ситуации — пригрозил уголовным преследованием за найденную уязвимость. Старбакс не на постсоветском пространстве находится, так что ваше правило не срабатывает.
Если говорить про ритейл, могу привести пример, как мне М-Видео скидку в 50% выписало за то, что у товара на чеке не тот ценник был указан. Дело было в Москве, вполне себе на постсоветском пространстве.
TsarIoann
02.06.2015 20:03+23Мораль сей басни такова — не надо никуда обращаться, надо сразу статью на Хабре писать про уязвимость)
TimsTims
02.06.2015 21:30+10Так говорили же в той теме, что о баге было заявлено до старта HackerOne.
Это что, если следуя логике автора Вконтакте должен сейчас выплатить всем, кто за все эти 10+лет сообщил о баге? У них конечно бюджет позволит это сделать, но найти информацию «кто первый это узнал» действительно сложно, используя только открытые источники, ведь действительно не было еще формы «сообщаю о баге первым»
Лично я считаю это стандартной практикой, когда ты сначала закрываешь кучу своих багов, всё проверяешь и вроде всё работает правильно, и когда уже ТЫ САМ(тестеры) не можешь найти ошибки, то запускаешь программу баунти-ревардов, чтобы найти другие ошибки.
artishok
03.06.2015 10:22+7Техподдержка сидит на аутсорсе, иногда из дома. Поэтому с ними вести переговоры об уязвимостях бесполезно…
IamKarlson
07.06.2015 21:04+6судя по адекватости представителей в этом посте, иногда еще и с уроков сидят
InteractiveTechnology
01.07.2015 20:26Да, вк очень не оперативно реагирует на баги. В API есть серьёзный баг с данными, они отдаются неправильно вообще!
Запостил в саппорт 23 мая 2015 в 16:26, после немного глупых вопросов с периодичностью ответа раз в неделю.
17 июн 2015 в 11:24 баг подтвердили и на этом история пока закончилась…
DanDare
Год назад писал в саппорт «Вконтакта» о кривой верстке. Даже указал номер строчки в css файле и причину.
www.youtube.com/watch?v=I_1dhI32WYY
До сих пор не исправили.
zenden2k
Я им как-то написал, что счетчик лайков (скроллинг цифр) криво отображается при нестандартном DPI, а они мне ответили, что не оптимизируют сайт под разные масштабы.
crmMaster
Они вообще такой ерундой не занимаются, как оптимизация под конкретные платформы, им проще плашку вывести «Загрузите православный браузер», чем пытаться баги под IE и оперу фиксить.
brainfucker
Перешел на сайт автора данной статьи, bluzir.me/blog/2%27 как такой человек имеет право тут чтото писать?
bleazer Автор
Мне льстит, что разработчик VK ищет уязвимости в моем блоге, вместо исправления собственных
brainfucker
Мы работаем над исправлением тех уязвимостей, информация о которых доходит до нас, только с открытием программы на h1 у мы начали налаживать правильный подход для получения информации о них. А вы критикуете не разобравшись. Мы открыли информацию о выплатах на h1, при этом на сколько я знаю среди того что мы обработали – ничего с реальным применением не прислали (но большую часть заявок мы пока не успели обработать), но выплатили уже 2000$, что не может считаться жлобством со стороны ВК как ни крутите
crmMaster
2000 баксов? Вы издеваетесь? Фейсбук такую сумму за баг в верстке выплачивает. Да, я про те баги, которые вы за баги даже не считаете.
Assorium
И я по юнешеской дурости когда-то хотел у Вас работать…
DanDare
Платные смайлики прибыльнее, чем код править.
fairplay
При Дурове такого не было!
mihmig
Да уж, платные смайлики/стикеры — вот современный тренд!
Что ж, создали
стадообщество потребителей, создали спрос и предложение…Nostr
Мы недавно писали им по поводу проблемы с капчей внутри виджетов. Исправили довольно оперативно.
Видимо зависит от разных факторов.
justaguest
Еще в Августе прошлого года писал им о странном баге с юникодом в мобильной версии сайта. Сказали, что исправят, а воз и ныне там:
Моб. версия:
Chikey
Кстати в мобильной версии под iOS везде <> видно как &-lt &-gt. Фейййл
brainfucker
Не вся информация доходит, до разработчиков, просто представьте количество тикетов для техподдержки, сейчас ведется редизайн, который исправит подобные несерьезные косяки, там архитектурно система слоев не очень правильно написана, ее переписать нужно.