99 % к счастью так не ломаются . Да и не взлом это вовсе просто механизм хранения токена . Для примера попробуйте с what's up тоже самое провернуть не получится .
Глянул на jwt.io, как советовал. Но главное даже не там. Токен это один сегмент, без точек. У JWT их три через точку (header.payload.signature), так что это вообще не JWT, разбирать нечего. jwt.io это подтвердил: Decoded Header и Payload пустые.
Раз структуры нет, то и читаемого exp в строке нет. Значит срок держит сервер, в самом токене его не видно.
Нет у менян был вариант "Скандалы интриги расследования , показать все что за кадром все что скрыто", но вспомнил , что это хабр и так минусов наставят полный вагон - не стал обострять .А если серьезно то суть то не сценарии когда чужой дядя за твоим ноутом, а расширение или XSS, которые читают localStorage у всех разом и удалённо. Вот тут HttpOnly как раз работает: куку скрипт не прочитает, а голую строку из localStorage прочитает запросто. Так что «нифига не спасёт» это только про случай, когда машину ты уже физически отдал.
Да, похоже реально. Расширение с content-script на всех урлах видит localStorage страницы, значит __oneme_auth прочитает и сольёт, сразу у всех своих юзеров. Это серьёзнее стороннего сайта: сайт не достанет из-за cross-origin, а расширение достанет.
Но похоже , к Telegram это применимо так же: он тоже держит ключи сессии в localStorage, то же расширение их прочитает. Разница только в том, что у MAX один bearer-токен, а у TG связка ключей, для скрипта без разницы. Устойчивее всех WhatsApp: ключи в IndexedDB non-extractable, сырой ключ скрипт не выгрузит.
Вектор общий, но спрос именно к MAX выше: его продают как защищённый госмессенджер под цифровой ID. От такого ждёшь, что сессия не будет валяться в localStorage.
Насколько я понял, всё-таки не так много сайтов, где можно войти именно вот так, тем более мессенджеров. В WhatsApp, например, так просто не выйдет: ключи лежат в IndexedDB как non-extractable, отдельным значением их не скопировать. Перенести сессию можно только клонированием всей базы или профиля целиком, а это совсем другой уровень возни.
Правильно токен держать в HttpOnly-куке или вообще не отдавать в браузер (BFF). Тогда его не прочитает ни один скрипт на странице: ни XSS, ни левое расширение не утащат. Это и есть разница с localStorage, откуда токен достаёт любой JS. Фингерпринтинг для этого не нужен.
Спасибо, не видел этот гайд. Там всё подробно описано как нужно и как не нужно.
Правильно токены хранят не в localStorage: его читает любой скрипт, при XSS токен сразу утекает. Нормальный способ это HttpOnly + Secure + SameSite кука: JS её не прочитает, браузер сам подставляет, CSRF закрыт. Ещё вариант: короткий access-токен в памяти, refresh в той же httpOnly-куке с тихим обновлением. Самый чистый это BFF: токен вообще не отдают в браузер, он живёт на бэкенде, фронт ходит по httpOnly-сессии.
А в MAX токен лежит открытой строкой в localStorage. То самое, от чего гайд предупреждает.
Автор не ставил целью раскрыть некий секрет . Автор указал на простату с которой можно это сделать в мессенджере претендующий на цифровой паспорт. Повторюсь еще раз в том же whatsup так не получиться. одной строчкой токена как тут нет ни в одном мессенджере .
конечно можно. можно даже в приложение вставить если его сделать . вот например я сделала для android стабильную версию (могу исходниками поделиться если интересно изучить).
Я не писал что это уязвимость . Я дал инструкцию как это сделать ....ну и честно удивила простота . Я это случайно обнаружил когда делал форк рабочий . В статье нет провокации только ирония . Запомнить эти команды действительно сможет и бабушка и показать фокус соседке ))
Я как раз хотел наработки свои показать сообществу обсудить . Думаете не стоит ? меня блокировали неоднократно но причину я нашел - решил .
max симку не блочил? на венде приложение ?
Спасибо .Коротко и все по делу . Дискуссию можно закрывать.
99 % к счастью так не ломаются . Да и не взлом это вовсе просто механизм хранения токена . Для примера попробуйте с what's up тоже самое провернуть не получится .
да. как ни странно в этом смысле он самый защищенный.
Глянул на jwt.io, как советовал. Но главное даже не там. Токен это один сегмент, без точек. У JWT их три через точку (header.payload.signature), так что это вообще не JWT, разбирать нечего. jwt.io это подтвердил: Decoded Header и Payload пустые.
Раз структуры нет, то и читаемого exp в строке нет. Значит срок держит сервер, в самом токене его не видно.
Нет у менян был вариант "Скандалы интриги расследования , показать все что за кадром все что скрыто", но вспомнил , что это хабр и так минусов наставят полный вагон - не стал обострять .А если серьезно то суть то не сценарии когда чужой дядя за твоим ноутом, а расширение или XSS, которые читают localStorage у всех разом и удалённо. Вот тут HttpOnly как раз работает: куку скрипт не прочитает, а голую строку из localStorage прочитает запросто. Так что «нифига не спасёт» это только про случай, когда машину ты уже физически отдал.
Да, похоже реально. Расширение с content-script на всех урлах видит localStorage страницы, значит __oneme_auth прочитает и сольёт, сразу у всех своих юзеров. Это серьёзнее стороннего сайта: сайт не достанет из-за cross-origin, а расширение достанет.
Но похоже , к Telegram это применимо так же: он тоже держит ключи сессии в localStorage, то же расширение их прочитает. Разница только в том, что у MAX один bearer-токен, а у TG связка ключей, для скрипта без разницы. Устойчивее всех WhatsApp: ключи в IndexedDB non-extractable, сырой ключ скрипт не выгрузит.
Вектор общий, но спрос именно к MAX выше: его продают как защищённый госмессенджер под цифровой ID. От такого ждёшь, что сессия не будет валяться в localStorage.
)))
В каком регионе остался рф?
Насколько я понял, всё-таки не так много сайтов, где можно войти именно вот так, тем более мессенджеров. В WhatsApp, например, так просто не выйдет: ключи лежат в IndexedDB как non-extractable, отдельным значением их не скопировать. Перенести сессию можно только клонированием всей базы или профиля целиком, а это совсем другой уровень возни.
Правильно токен держать в HttpOnly-куке или вообще не отдавать в браузер (BFF). Тогда его не прочитает ни один скрипт на странице: ни XSS, ни левое расширение не утащат. Это и есть разница с localStorage, откуда токен достаёт любой JS. Фингерпринтинг для этого не нужен.
Согласен , это стало так же легко как и набить лайки и карму если все это хейтить. ))
интересно - попробуем.
Спасибо, не видел этот гайд. Там всё подробно описано как нужно и как не нужно.
Правильно токены хранят не в localStorage: его читает любой скрипт, при XSS токен сразу утекает. Нормальный способ это HttpOnly + Secure + SameSite кука: JS её не прочитает, браузер сам подставляет, CSRF закрыт. Ещё вариант: короткий access-токен в памяти, refresh в той же httpOnly-куке с тихим обновлением. Самый чистый это BFF: токен вообще не отдают в браузер, он живёт на бэкенде, фронт ходит по httpOnly-сессии.
А в MAX токен лежит открытой строкой в localStorage. То самое, от чего гайд предупреждает.
Я в рф живу , но ак Американский (чтобы оплачивать приложения) и у меня нет max теперь .
)).
Именно на это я и хотел обратить внимание. есть другие методы хранение токена и его выдачи.
Автор не ставил целью раскрыть некий секрет . Автор указал на простату с которой можно это сделать в мессенджере претендующий на цифровой паспорт. Повторюсь еще раз в том же whatsup так не получиться. одной строчкой токена как тут нет ни в одном мессенджере .
конечно можно. можно даже в приложение вставить если его сделать . вот например я сделала для android стабильную версию (могу исходниками поделиться если интересно изучить).
Я не писал что это уязвимость . Я дал инструкцию как это сделать ....ну и честно удивила простота . Я это случайно обнаружил когда делал форк рабочий . В статье нет провокации только ирония . Запомнить эти команды действительно сможет и бабушка и показать фокус соседке ))