Skip to content

KweezyCode/telegramisnotsecure.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Почему Telegram небезопасен для анонимного и приватного использования

(на примере «примерки» контактов и CVE-2019-15514)


Вступление

Telegram позиционирует себя как «безопасный и быстрый» мессенджер, а в FAQ прямо обещает, что по умолчанию телефон видят только ваши контакты — и его всегда можно скрыть в настройках Privacy & Security → Phone Number (telegram.org). На практике же телефон часто удаётся вычислить даже при настройке «Никто». Две главные технологические лазейки:

  1. Массовый импорт контактов (contacts.importContacts) — так называемая «примерка» номеров.
  2. Уязвимость CVE-2019-15514 (Telegram <= 5.10): раскрытие номера через Group Info.

Обе технологии давно стали фундаментом для российских OSINT-ботов («Глаз Бога», «Химера» и др.), позволяя за копейки строить базы ID ↔ телефон. Далее подробно разберём технические детали, уязвимости протокола и последствия для приватности.


1. Механика «примерки» контактов

1.1 Как работает contacts.importContacts

  • Метод принимает массив до 10 000 объектов inputPhoneContact и сразу говорит, какие из этих номеров уже есть в Telegram, возвращая их user_id (core.telegram.org).

  • Если номер «угадан», мессенджер считает, что вы «добавили контакт», — и игнорирует настройку «Кто видит мой номер».

  • Лимиты официально не документированы, но разработчики отмечают два этапа:

    • ~5 000 номеров можно загрузить быстро;
    • далее скорость падает до ≈100 номеров в сутки для одного аккаунта (stackoverflow.com). Атака масштабируется фермой SIM-карт/облачных +eSIM и пулом прокси.
# Упрощённый PoC на Telethon
from telethon.sync import TelegramClient
from telethon.tl.functions.contacts import ImportContactsRequest, DeleteContactsRequest
phones = ['+7985XXXX001', '+7985XXXX002', ...]     # диапазон «примерки»
contacts = [InputPhoneContact(client_id=i, phone=p, first_name='.', last_name='') 
            for i, p in enumerate(phones)]
result = client(ImportContactsRequest(contacts))
for imp in result.users:
    print(imp.id, imp.phone)    # получили связку ID ↔ телефон
client(DeleteContactsRequest(result.users))        # чистим следы

1.2 Почему атака всё ещё масштабируется

  • Исследование NDSS-2021 показало, что даже при базовых лимитах можно просканировать 100 % всех US-номеров за считанные недели, распределив нагрузку на 100–200 аккаунтов .
  • Боты-«пробивы» комбинируют «примерку» с утечками (Avito, Яндекс.Доставка и т. д.) и добровольной телеметрией клиентов («каждый запрос пополняет базу») — подробно описано в расследовании «Медиазоны» (2024 – 2025) (zona.media).

2. CVE-2019-15514: когда настройка «Никто» обманывает

Описание: при приватном уровне Nobody номер всё равно утекал через вкладку Group Info: достаточно было массово «добавить» диапазон номеров в группу, и Telegram возвращал ID для совпавших телефонов (cve.circl.lu). GitHub-PoC демонстрирует перебор диапазона +92-000… с остановкой, когда user_id совпал с целевым (github.com).

Статус патча. В версии 5.11 Telegram убрал прямое отображение номеров в информации о группе, однако:

  • сама логика contact discovery не изменилась;
  • импорт номеров по-прежнему игнорирует настройку Nobody (см. § 1). Следовательно, закрытие CVE лишь убрало «побочный» канал, не устранив основную угрозу.

3. Технические детали атакующего стека

Компонент Цель Реализация
User-бот (Telethon/TDLib) Обходит Bot API-лимиты, может импортировать контакты Нужны реальные или виртуальные SIM, proxy pool
Скрипт перебора диапазонов Перебрать 10⁶-10⁷ номеров целевого оператора/региона Async-Batch importContacts → анализ imported
Dedup + кросс-линк Свести результаты с утечками и тегами GetContact PostgreSQL / ClickHouse
Ферма аккаунтов Умножить пропускную способность Автоматическая регистрация через АТС или SMS-активаторы
Кэш-приманка Сохранять пары ID↔телефон от самих клиентов бота Каждый запрос обогащает БД «пробива»

4. Ограничения и «заплатки» Telegram

Контрмера Telegram Что даёт Почему обходят
Замедление импорта после 5 000 номеров Уменьшает скорость одной учётки Ферма аккаунтов нивелирует
Настройка «Кто может найти меня по номеру → Никто» Блокирует поиск через строку «Контакты» Не влияет на importContacts
Опция «Кто видит мой номер → Никто» Скрывает номер в профиле Контакты, импортированные «примеркой», всё равно его «знают»
Виртуальные номера TON (+888) Нет реального телефона → не подобрать диапазон Теряются SMS-функции, многие сервисы не принимают

5. Юридические аспекты (РФ)

  • Сбор и хранение баз ID ↔ телефон без согласия нарушает ст. 14, 21 ФЗ №152-ФЗ (персональные данные).
  • Массовый «пробив» подпадает под ч. 2 ст. 272 УК РФ (неправомерный доступ к компьютерной информации).
  • В 2024–2025 гг. прошли обыски у команды «Глаза Бога», функционал бота урезан после ужесточения ответственности (zona.media).

Заключение

Telegram остаётся удобным мессенджером, но его архитектура с «обратной книгой контактов» делает анонимность условной:

  1. Контактная «примерка» технически разрешена самим API и по-прежнему даёт точную связку user_id ↔ телефон, независимо от выставленных настроек.
  2. CVE-2019-15514 показала, что даже явные приватные опции могут обходиться, а латка не решила корневую проблему.
  3. Ограничения Telegram сводятся к рейт-лимитам, которые масштабируются горизонтально.

Что делать пользователю

  • Включить: Phone Number → Nobody и Who can find me by my number → Nobody.
  • Отключить синхронизацию контактов, очистить уже загруженную книгу.
  • Завести отдельный +888-номер или eSIM для «чувствительного» общения.
  • Помнить: если хотя бы один знакомый когда-то «слил» вашу книгу, ваш номер уже может быть в чужой базе.

Источники

  1. Telegram FAQ — политика отображения номера (telegram.org)
  2. Документация contacts.importContacts (Layer 195) (core.telegram.org)
  3. StackOverflow: практические лимиты импорта (ответ Ali Hashemi) (stackoverflow.com)
  4. NDSS-2021 «All the Numbers are US» — масштаб атаки и статистика
  5. CVE-2019-15514 описание и статус (cve.circl.lu)
  6. GitHub PoC CVE-2019-15514 (github.com)
  7. Расследования «Медиазоны» о ботах «Глаз Бога» (2024 – 2025) (zona.media)
  8. Telegram data-breach (900 МБ база ID↔телефон, 2020) (cisomag.com)
  9. Privacy International: гайд по скрытию номера (2025) (privacyinternational.org)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published