Всем привет! На связи Юрий Шабалин, директор продукта Стингрей. И сегодня у нас тема не про мобильные приложения, а, пожалуй, самая трендовая — про AI-ассистентов.

Я не так давно увлекся темой современных AI-инструментов и способов их применения в рутинных задачах. Но все-таки не получается отделаться от ИБ-составляющей во взгляде на обычные, казалось бы, вещи. Я уже писал о том, как получить данные пользователей через покупку доступа к Gemini, а сегодня хочу рассказать об одной ошибке в разработке AI-агентов, которая может стать фатальной и дать доступ любому человеку к вашей почте, календарю, контактам и всему, к чему подключен такой ассистент. Интересно? Тогда давайте начинать!
Введение
В эпоху стремительного развития технологий и широкого распространения больших языковых моделей (LLM) автоматизация рутинных задач становится ключевым фактором повышения продуктивности. В этом контексте особую популярность приобретают инструменты для создания no-code-workflow — например, n8n. Это открытый конструктор, позволяющий интегрировать различные веб-сервисы и автоматизировать выполнение множества операций.
В изучении возможности создания подобных агентов просто нельзя пройти мимо такого интересного инструмента, который обещает очень много возможностей и интеграций прямо из коробки. Для первого знакомства с n8n я решил собрать простой Telegram-бот, который автоматически публикует свежие посты в канал без моего участия — пример можно посмотреть здесь.
Затем мне захотелось попробовать нечто более амбициозное, и в поисках идей для более сложных сценариев я обратился к популярным обучающим материалам на YouTube. Оказалось, что одним из наиболее востребованных жанров видео являются туториалы по созданию личного AI-ассистента, подобного «Джарвису». Такие боты умеют принимать голосовые сообщения, создавать встречи, отправлять электронные письма и напоминать о дедлайнах — фактически, берут на себя множество рутинных задач. Однако при попытке воссоздать подобного «ассистента» я обнаружил важный нюанс, который легко упустить из виду, если не смотреть на процесс через призму информационной безопасности. Об этом нюансе, его причинах и способах устранения мы поговорим подробнее позже. А сначала разберемся, что из себя представляет n8n, чем хороши (и чем опасны) популярные туториалы и где именно скрывается потенциальная уязвимость.
Почему связка n8n + Telegram так популярна
Связка n8n и Telegram завоевала популярность как среди новичков, так и среди опытных пользователей, стремящихся к быстрой и удобной автоматизации. На это есть несколько ключевых причин:
n8n — открытый «конструктор» интеграций. Он предоставляет интуитивно понятный интерфейс, в котором пользователи могут "перетаскивать" узлы (nodes), определять их входы и выходы, таким образом подключая практически любую веб-службу. Это позволяет создавать сложные автоматизации без необходимости писать код.
Telegram Bot API — стабильный и доступный. Он предлагает стабильный механизм вебхуков, не требует платы за использование и не нуждается в отдельном хостинге. Достаточно получить токен от @BotFather, вставить его в узел Telegram-Trigger в n8n — и бот готов к работе.
Простота интеграции для начинающих. Новичкам не нужно разбираться в сложных процессах OAuth-авторизации — достаточно включить событие "Message" в Telegram-Trigger и добавить узлы для Gmail, Google Calendar или OpenAI/LLM. Таким образом всего за несколько минут можно создать «Джарвиса», который отвечает на письма и ставит встречи. Простота настройки и скорость получения результата — основные двигатели популярности этой связки.
Типовой workflow из популярных роликов
Большинство популярных видеоуроков по созданию AI-ассистента в n8n демонстрируют типовой workflow, который выглядит примерно так:

При получении сообщения в Telegram мы сначала определяем его тип. Если голосовое, то транскрибируем его, а текст сразу передаем в «Агента AI», к которому подключен API от OpenAI. В качестве инструментов, к которым может обращаться AI-ассистент подключим наш почтовый ящик, календарь и сервис с контактами. Появляется возможность совершать любые действия с календарем и почтой пользователя, проводить поиск в интернете и отправлять ответ в Telegram. Идеально и просто! Всё, что нужно — проставить нужные токены в соответствующих узлах, чтобы платформа получила доступ к почте, календарю и прочим вещам.
Этот типовой workflow (с разными несущественными отклонениями) представлен в большинстве YouTube-туториалов по знакомству с n8n. И это не удивительно: такие процесс и ассистент создают тот самый «вау-эффект» — как технологии могут упростить нашу жизнь и до чего они дошли, если просто голосовым сообщением можно отправить письмо, поставить встречу в календаре, определить свое расписание дня и еще много всего! И это помогает дальше продвигать и продавать другие шаблоны. Однако при внимательном просмотре всех этих уроков с «вау-эффектом» упускается один очень-очень важный момент.
Где именно ломается безопасность
Основная проблема безопасности кроется в конфигурации узла Telegram Trigger. Типичная конфигурация выглядит так:

На скриншоте видно, что «Additional Fields» всегда остаются пустыми. Ну конечно, это же дополнительные поля, которые не обязательно заполнять. Кому они вообще нужны? Но давайте ради интереса заглянем внутрь этого блока и посмотрим, что же это за параметры.

А интересуют нас критерии Restrict to Chat IDs
и Restrict to User IDs
. Они определяют, из какого чата или от какого пользователя наш бот может получать сообщения. Если параметры не указаны, он будет отвечать любому юзеру, не проверяя, кто же именно ему пишет. В реальности это значит, что любой человек, нашедший бота, сможет отправить ему сообщение и получить доступ к таким функциям:
Прочитать все наши входящие и отправленные письма;
Отправить от нашего имени сообщение любому человеку из контактов;
Получить информацию обо всех событиях в календаре;
Управлять встречами: отменять или убирать из расписания, добавлять новых участников и т.д.
Но как кто-то может найти нашего бота? Это уже отдельный вопрос, конечно. Можно пробовать через поиск, подбирая характерные или частичные совпадения, вроде PersonalAssistant или AIAssistant. К тому же, некоторые люди с энтузиазмом делятся своим крутым помощником, как только они его сделают. Так что, если кто-то вам показывает своего личного «Джарвиса», попробуйте написать ему — вдруг он станет и вашим помощником тоже!
Мини-демо
Чтобы продемонстрировать, насколько легко и быстро можно воспользоваться этой уязвимостью, давайте рассмотрим простой сценарий, который описан в любом туториале:
Создать бота в @BotFather, скопировать токен. Это стандартный первый шаг при работе с Telegram-ботами.
В n8n добавить Telegram-Trigger (event: Message) без ограничений. Оставить настройки как в видео (restrictToChatIds и restrictToUserIds не заполняем).
Настроить AI-агента. Он будет определять, что же от него хочет пользователь.
Прикрутить все указанные в туториалах ноды: Gmail-почту, календарь, контакты и т.д.
Отправить результат в
SendMessage({{$
json.chat
_id}})
. Бот будет отправлять полученные данные обратно в чат, откуда пришел запрос.Проверить работу. Нужно написать боту со своего аккаунта и попросить, например, поставить встречу.
Написать боту с чужого аккаунта и проверить, что же ответит наш умный помощник.
Этот пример наглядно показывает, что утечка конфиденциальных данных может произойти за считанные секунды из-за одной неявной и пропущенной настройки.
Но так ли это распространено?
Я не пожалел своего времени и нашел 10 наиболее популярных роликов на русском языке, которые рассказывают, как создать своего персонального AI-ассистента на платформе n8n. Не хотелось бы их раскрывать, потому что, скорее всего, авторы подобных видео просто не задумывались о безопасности и фокусировались именно на настройке и функциональности. Впрочем, как всегда.
Суммарное количество просмотров этих роликов на момент написания статьи — 607 500. То есть, их увидело более полумиллиона человек. И ни в одном из этих видео не упоминается про настройку ограничения. Никто даже не задумался о том, что нашему ассистенту может написать кто-то кроме нас. Ни в одном видео нет упоминания о том, что нужно настраивать параметры.
Давайте попробуем прикинуть. n8n — это платформа с бесплатным доступом на 14 дней, которая не требует навыков программирования и умеет связывать Telegram и популярные AI-агенты. Также, если следовать тем же туториалам, ее можно развернуть локально и пользоваться бесплатно. Туториалы по n8n предлагают нам быстро сделать персонального AI-ассистента, который может помочь в жизни или работе и позволит похвастаться перед друзьями, коллегами и знакомыми офигенным функционалом.
Предположим, что 10% зрителей таких роликов решат повторить увиденное. Это около 61 000 человек. Из них явно не все готовы оплачивать подписки на инструменты и на платформу (или не могут ее развернуть On-Premise бесплатно). Если хотя бы 1% закрепится на длительной основе, то получим почти 6,1 тыс. постоянных пользователей. И это число день ото дня будет только расти! Обязательно будет, так как эта тема сейчас на огромном подъеме и после просмотра хотя бы одного ролика алгоритмы рекомендаций будут подкидывать подобные снова и снова.
Интересно, сколько людей после просмотра видеоуроков советуют их другим или начинают продавать свои услуги по созданию интеллектуальных помощников… А мы уже выяснили, что, начав поиск таких «ассистентов», можно случайно (или намеренно) получить доступ к чувствительной информации. Причем не только прочитать, но и управлять элементами чужой цифровой жизни. Учитывая, что многие сервисы высылают код подтверждения о смене пароля на почту, мы можем получить доступ и к другим сервисам, а не только к ящику. Возможности открываются на самом деле практически безграничные. И от этого становится немного страшно.
Почему «копипаст-культура» — это плохо?
Проблема повсеместна из-за нескольких факторов, присущих "копипаст-культуре":
UI-ловушка. Поле «Restrict to…» спрятано за дополнительным «кликом». Интерфейс n8n не делает настройку ограничений очевидной. Поле "Restrict to…" скрыто изначально, из-чего пользователь его пропускает или вообще не знает о нем.
Фокус на «вау-эффекте». Большинство туториалов сосредоточены на демонстрации функциональности и «волшебства» автоматизации. Детали, связанные с безопасностью, кажутся лишними и вырезаются, чтобы ускорить процесс создания бота и показать быстрый «вау-эффект». А, может быть, создатели контента просто не задумываются об этом.
Низкий порог входа. Простота использования n8n привлекает много новичков, которые могут быть не знакомы с фундаментальными принципами информационной безопасности, такими как минимальные привилегии или банальная авторизация.
Нет «красной ленточки». В документации n8n не уделяется достаточно внимания этой конкретной настройке. Да и кого мы обманываем — кто сейчас читает документацию?
Как обезопасить себя?
К счастью, устранить эту уязвимость относительно просто. Нужно проделать эти шаги:
Мини-фикс в триггере. Самый быстрый и правильный способ — это явно указать разрешенные Chat ID и/или User ID в конфигурации Telegram Trigger.
Это гарантирует, что бот будет принимать сообщения только от указанных чатов или пользователей. Guard-нода. В дополнение к настройкам триггера можно добавить программную "guard-ноду" (нода «Code») в начале вашего workflow. Она будет проверять ID отправителя и, если он не совпадает с разрешенными, прерывать работу.
const allowed = ['123456789','987654321'];
if (!allowed.includes($json.from.id.toString())) {
return []; // Прерываем выполнение, если отправитель не разрешен
}
return items;
Итоги
Друзья, пожалуйста, не копируйте слепо всё, что преподносится нам из YouTube и других туториалов. Старайтесь понять, что именно и как работает и какие еще настройки есть у каждого элемента системы — даже если инструмент кажется простым и интуитивным, как n8n. Как говорится, дьявол кроется в деталях. Ведь кажущаяся простота и удобство решений no-code не должны приводить к появлению уязвимостей.
Если вы уже используете n8n, настоятельно рекомендую:
Проверьте все Telegram-Triggers на наличие ограничений.
Ограничьте входящие по ID. Убедитесь, что в ваших триггерах явно указаны разрешенные Chat ID и User ID.
Минимизируйте доступ. Проверьте, какие права даны интеграциям, и уберите всё лишнее —следуйте принципу минимальных привилегий.
Поделитесь этой статьей. Распространите этот материал среди своих коллег и знакомых, которые используют n8n или планируют это делать. Коллективное знание и внимание к безопасности помогут предотвратить потенциальные утечки данных.
Безопасность систем автоматизации — это необходимость. У нас уже есть всевозможные чек-листы по защите мобильных и Web-приложений, конфигурации Docker Compose и Kubernetes (K8s) и многие другие. А в скором времени должен появиться и чек-лист по платформам автоматизации и AI-агентам (если уже его нет).
Если вы создаете собственного AI-агента, не важно на какой платформе — не забудьте проверить его на типичные уязвимости, особенно связанные с LLM. В этом может помочь наш инструмент AppSec.GenAI. Проявите бдительность, и ваши «Джарвисы» будут служить именно вам, а не посторонним.
На сегодня у меня всё. Надеюсь, вам было интересно и полезно узнать про мисконфигурацию в n8n, которая потенциально может привести к серьезным проблемам. Если вам, как и мне, интересны AI-инструменты, их безопасность и практические инструкции — подписывайтесь на мой Telegram-канал и на канал нашей компании, там много очень полезных статей и выступлений от меня и моих коллег, в том числе по безопасности LLM. Давайте разбираться и исследовать вместе!
Спасибо за внимание и хорошего дня!