TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
NP-public

14 Nov 2024, 21:07

Открыть в Telegram Поделиться Пожаловаться

02:15
Видео недоступно для предпросмотра
Смотреть в Telegram
Prev Next
🏦 Как не нужно писать Telegram-ботов

DANO — олимпиада по анализу данных, одним из организатором которой является Т-Банк Образование. Незадолго до объявления списка финалистов я нашёл бота, который предназначался для этого финала — @team_DANO_bot. Из функций — сбор команды, загрузка документов и гипотезы для исследования

Очевидно, что к боту должны иметь доступ только финалисты, поэтому в нём стояла аутентификация — бот просит нажать на кнопку и отправить свой контакт с номером телефона. Отправляемый контакт выглядит так же, как и любой другой контакт, которым можно поделиться, поэтому можно отправить не свой контакт, а любого другого пользователя — бот увидит не ваш номер, а чужой. От этого легко защититься — нужно проверять, что контакт действительно принадлежит тому пользователю, который его отправил.

Я попробовал отправить контакт с номером телефона одного из организаторов, и это сработало (рис. 1). На этот момент я не только получил несанкционированный доступ к боту, но и мог войти от имени любого участника, номер телефона которого я знаю.

Изучая функционал бота, я нашел выбор участников для добавления в команду. Он реализован через inline-кнопки, у которых есть callback data — а-ля ID кнопки, которое устанавливает сам бот. Важно: callback data может прочитать пользователь. Автор бота решил хранить там не ID пользователя, а его номер телефона (рис. 2) — получается, что я имею доступ ко всем номерам телефонов, а вкупе с предыдущем абзацем могу зайти от имени любого человека. Этого уже хватало, чтобы наложить крест на безопасности бота.

Также я заметил, что проверка ограничений в диалогах из нескольких сообщений выполнялась не в конце диалога, а в начале, из-за чего открывался интересный спектр багов — удаление бывшего участника-жертвы команды атакующего из любой другой (видео 3), добавление более 5 участников в команду и так далее.

Я сообщал о всех проблемах по мере их обнаружения, из-за чего организаторы в целом отказались от исправления ошибок и использования этого бота на олимпиаде.

Это не первый случай, когда у проектов Т-Образования появлялись бреши в безопасности. На фестивале See You от Центрального университета (IT-вуза Т-Банка) был бот с применением Web Apps, где отсутствовала валидация ID пользователя => я собрал список из 150 пользователей и потенциально мог получить доступ к их ЛК внутри бота. А 5 июня (момент ребрендинга Тинькоффа в Т-Банк) во время смены юзернеймов у Telegram-каналов их владельцы забыли закрепить за собой старые юзернеймы, из-за чего в руки третьих лиц попали @tinkoff_fintech, @tinkoff_invest_official, @tinkoff_career и другие, раньше принадлежавшие Т-Банку.

681 0 19 9 16
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot