Бесплатно: макет главного экрана вашего сайта за 1-2 дня - до договора и оплатыБесплатно: макет за 1-2 дняПолучить ↗
Kordon · безопасность

Как устроена безопасность Kordon

Kordon - kill switch для программ: он стоит между вашими программами и сетью, поэтому сам должен быть надёжнее всего остального. Здесь коротко и проверяемо: что Kordon делает на компьютере, что знает наш сервер, как подписаны вход и обновления и куда сообщить об уязвимости.

На компьютере

  • Без прав администратора. Kordon работает от вашего пользователя и управляет только вашими программами: ставит их на паузу (SIGSTOP на macOS и Linux, приостановка процесса на Windows), продолжает и закрывает.
  • Панель - только для вас. Окно и панель говорят с Kordon по 127.0.0.1 со случайным ключом, который лежит в файле, доступном только вашей учётной записи. Чужой сайт в браузере не может ни прочитать, ни изменить настройки: проверяются адрес, ключ и источник запроса (защита от DNS rebinding и CSRF).
  • Расширение для браузера спрашивает только сам Kordon на 127.0.0.1:47833; ответ получают только расширения, не сайты.
  • Секреты на диске (подключение к Telegram, ключ панели) хранятся с правами 0600.

Защиты, которых нет у обычного kill switch

  • Пауза перед сном. Ноутбук просыпается, Wi-Fi подключается раньше VPN, и программы успели бы отправить первые запросы с настоящим IP. Kordon ставит их на паузу прямо перед сном и отпускает только после свежей проверки IP.
  • Защита при сбое. Если Kordon упал или его убили, сторожевой процесс сразу ставит защищаемые программы на паузу; они продолжают, когда Kordon поднялся и проверил IP. Падает раз за разом - программы остаются на паузе, а не работают без защиты.
  • Смена сети - пауза за долю секунды, пока IP не проверен. Плюс утечки IPv6, DNS в другую страну, WebRTC, программы мимо системного прокси и маршрут до самих ИИ-сервисов (Kordon спрашивает у Claude и ChatGPT, какой адрес они видят).
  • kordon run - то же для одной команды на сервере или в CI.

Что знает наш сервер

Сервер нужен для входа через Telegram, уведомлений и пульта. Он знает:

  • номер чата Telegram и хеш (SHA-256) секрета каждого компьютера - самого секрета нет;
  • имя компьютера, которое вы видите в пульте;
  • для пульта, только пока вы вошли: статус защиты, страну, имена защищаемых программ, что делают агенты, недельные цифры - без IP-адресов, в памяти;
  • последний профиль настроек для переноса на новый компьютер - без адресов и сетей.

Журнал доступа на сервере выключен: он не знает, с какого адреса к нему обращались. Ограничение частоты запросов держится только в памяти nginx и ничего не пишет. Ежедневный бэкап базы уходит владельцу Kordon.

Вход через Telegram

Вход подтверждает сервер подписанным пропуском (Ed25519) на 7 дней; Kordon обновляет его каждые 6 часов и проверяет подпись открытым ключом, зашитым в программу. Закрытый ключ есть только на сервере. Поэтому вход нельзя обойти правкой файлов, а без интернета Kordon работает дальше до конца срока пропуска. Убрали компьютер из пульта - он выходит за секунды.

Обновления

Каждый релиз собирается на GitHub Actions, а не на чьём-то компьютере. Файл с контрольными суммами SHA256SUMS.txt подписан ключом Ed25519, закрытая часть которого есть только у владельца. Kordon не установит обновление без верной подписи - даже если кто-то получит доступ к аккаунту GitHub и подменит файл вместе с его суммой.

Проверить подпись самостоятельно (OpenSSL 3):

printf -- '-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAV0AkZc32DAnaNF2S9eJL+jsWdLjlSnLwAdxmysIs3MQ=\n-----END PUBLIC KEY-----\n' > kordon-update.pem base64 -d < SHA256SUMS.txt.sig > SHA256SUMS.sig.bin openssl pkeyutl -verify -pubin -inkey kordon-update.pem -rawin -in SHA256SUMS.txt -sigfile SHA256SUMS.sig.bin shasum -a 256 -c SHA256SUMS.txt --ignore-missing

Сборка для macOS подписана Developer ID и отправляется Apple на нотаризацию. В описании каждого релиза - результаты проверки файлов антивирусами (VirusTotal).

Как сообщить об уязвимости

Нашли уязвимость - напишите в бота @kordon_security_bot: «Поддержка» → «Написать». Пожалуйста, не публикуйте подробности, пока мы не выпустили исправление. Мы ответим в течение 72 часов, а исправление выйдет обновлением со ссылкой на вас, если хотите.

Есть задача? Нарисуем.

Бесплатный макет главного экрана за 1-2 дня - до договора и оплаты. Смета после макета.

Получить бесплатный макет ↗