Ваш Discord-бот шпионит за вами?

Dec 21 2022
С тех пор, как мы открыли для себя Discord, мы предпочитаем это приложение для общения с друзьями. Discord как никто другой умеет сочетать VoIP и общение в чате и быстро стал популярным, особенно среди программистов и геймеров.

С тех пор, как мы открыли для себя Discord, мы предпочитаем это приложение для общения с друзьями. Discord как никто другой умеет сочетать VoIP и общение в чате и быстро стал популярным, особенно среди программистов и геймеров. Из-за обширных возможностей, которые предлагает API, почти каждый разработчик программного обеспечения в какой-то момент запрограммировал видеоигру или бота Discord — или, по крайней мере, начал это делать;)

Это именно то, что мы намеревались сделать. Итак, мы выбрали язык программирования (Go), который оба не знали, библиотеку (DiscordGo) без документации и приступили к работе. Отлично.

Так что не прошло много времени, как мы столкнулись с первыми проблемами. Как и в любой незнакомой теме, мы использовали простой проект для ознакомления с Discord API, Go, а также библиотекой DiscordGo. Для этой цели мы решили использовать аналог «Hello, World!» программа, когда дело доходит до ботов Discord: бот для пинг-понга. Этот простой бот отвечает на текстовое сообщение «!ping» словом «pong». Поскольку первые попытки «!ping» (конечно) не сработали, мы использовали хорошо проверенный прием отладки программистов и вставили в код множество операторов печати, чтобы понять, что мы на самом деле запрограммировали. Наш бот должен был выводить содержимое полученных текстовых сообщений в командную строку. В процессе мы заметили, что бот получал только пустые сообщения.

Мы пришли к выводу: либо боту не хватает разрешений API, либо кто-то споткнулся о кабель Wi-Fi. На портале разработчиков Discord мы нашли нужный переключатель и дали боту соответствующее разрешение — и бац, бот регистрировал все сообщения, написанные на сервере, в консоль, а также отвечал на сообщения «!ping»; наша проблема была решена.

Но ждать. Бот может читать все сообщения?

Что ж, чтобы иметь возможность оценить содержание текстового сообщения, он, конечно, должен сначала проверить содержимое каждого сообщения. Это единственный способ, которым бот может решить, нужно ли ему отвечать на это сообщение. Однако, помимо выполнения своих задач, бот также может хранить (и обрабатывать) все сообщения, которые все написали.

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

Конечно, это «маленький» бот, созданный только для целей разработки и приглашенный только на сервер разработки. Тем не менее, теоретически наш бот может быть приглашен любым администратором Discord и проворачивать свои шалости на их сервере. Однако, если бот будет использоваться более чем на 100 серверах, он должен быть проверен. Гарантирует ли проверка, что наши сообщения защищены от этих ботов?

К сожалению, для проверки бота Discord требуется только заполнение формы. Согласно доступной информации в документации Discord, сотрудник просматривает только форму, но не исходный код бота. Это означает, что теоретически любой бот может сохранять все сообщения и файлы. Кроме того, большинство ботов получают обновления. Так что никто не мешает разработчикам добавить такую ​​функцию позже. Кстати, боты с соответствующими правами также имеют доступ ко всем сообщениям из прошлого, ко всем реакциям, когда кто с кем сидит в каком голосовом чате, сколько времени, и ко всем файлам, которые пересылаются… просто ко всему.

И, к сожалению, слишком много ботов просто имеют роль с привилегиями администратора. Особенно самые распространенные многоцелевые боты.

Итак, есть ли какие-либо альтернативы с открытым исходным кодом для проверки кода бота на наличие проблемных или нежелательных функций? К сожалению, в настоящее время монетизируются особенно боты, которые предлагают больше всего и лучших функций. В результате их код также не является общедоступным. Есть даже компании, которые приобретают популярных ботов. (Смотрите видео No Text To Speech, если хотите узнать об этом больше )

Но что с этим могут сделать администраторы сервера Discord?

Самое главное, что администраторы серверов не должны инфляционно давать каждому боту все разрешения и не допускать их к каждому каналу, где они не нужны. Об этом можно позаботиться уже при добавлении ботов на сервер. URL-адрес содержит параметр «разрешения», где уже определены разрешения бота. Это значение можно редактировать:

Разрешение администратора:

discord.com/api/oauth2/authorize?client_id=xxxxxxxxxxxxxxxxxxxx&permissions=0&scope=bot%20applications.commands

discord.com/api/oauth2/authorize?client_id=xxxxxxxxxxxxxxxxxxxx&scope=applications.commands

Сам Discord постепенно устраняет необходимость в некоторых из этих ботов, предоставляя все больше и больше встроенных функций (например, AutoMod или Server Subscriptions). Конечно, это также влияет на экосистему амбициозных разработчиков, некоторые из которых зарабатывают деньги с помощью своих ботов, но также устраняет посредников. Считаете ли вы это преимуществом или недостатком, решать вам.

Растущее количество функций безопасности, таких как проверка ботов, в долгосрочной перспективе также устранит паршивую овцу.

Кроме того, Discord сделал важный шаг в правильном направлении, введя слэш-команды. Таким образом, выполнение команд можно отделить от разрешения на чтение сообщений, и это здорово. Кстати: Уважаемые разработчики ботов, пожалуйста, используйте слэш-команды вместо текстовых сообщений с сумасшедшими префиксами (да, мы говорим о вас, карл-бот).

В конце концов, имейте в виду то, что само собой разумеется для всего Интернета: следите за конфиденциальными изображениями и информацией и не обязательно отправляйте их по всему миру в каналах Discord.