Центр доверия

Ваш буфер обмена остаётся на вашем ПК. Вот как — и где это заканчивается.

Каждое утверждение на этой странице сверено с исходным кодом, и рядом назван код, который его обеспечивает. Там, где ClipVault не может вас защитить, эта страница так и говорит.

Сверено с ClipVault 0.1.0 · страница собрана 2026-09-15

Принципы

Четыре обещания, которые обеспечивает код

Это не правила, о которых кто-то должен помнить: каждое удерживается проверкой или тестом, из-за которых сборка не проходит.

Сеть

Содержимое клипов не может покинуть ПК

Открывать соединение может только один файл программы, net.py, а у его единственной функции get_json(url, allowed) нет аргумента, в котором можно было бы передать тело запроса. В коде нет пути, который выгружал бы клип, потому что выгружать его нечем.

Проверяется скриптом scripts/check_network.py при каждом push: сборка не проходит, если другой модуль импортирует сетевую библиотеку или у шлюза появляется аргумент data, body, payload, content или text.

Телеметрия

Телеметрии нет — даже как опции

В программе нет статистики использования, отчётов о сбоях и аналитики. Поле telemetry в файле настроек сохранилось, но ничто не читает его, чтобы что-то отправить, а Config.normalize() принудительно ставит в нём false при каждой загрузке и сохранении настроек, что бы ни было записано в файле.

src/clipvault/config.py — каждая загрузка и сохранение проходят через normalize().

Обновления

Проверка обновлений и новости — только с вашего согласия

В новой установке и то и другое выключено, и ClipVault спрашивает при первом запуске. Откажитесь — и он никогда не откроет соединение. Согласитесь — и раз в день он выполнит один запрос HTTPS GET за небольшим файлом версии: без тела, без cookie, без идентификатора; единственный добавляемый заголовок называет ClipVault и его версию. Обычный HTTP и перенаправления отклоняются, а ответ больше 64 КБ отбрасывается.

net.get_json, updates.fetch. Организация может выключить и то и другое политиками DisableUpdateCheck и DisablePromos.

Ссылка на обновление

«Скачать новую версию» ведёт только на официальный сайт

Файл версии — это то, что программа загрузила, а не то, чему она доверяет. Ссылка из него принимается, только если это путь на сайте ClipVault или адрес https на том же хосте, поэтому подменённый файл не отправит вас к поддельной загрузке. Номер версии принимается только из цифр и точек, так что и сообщение в нём не передать.

updates.official_link, updates.clean_version — применяется и к кэшированной копии.

Поток данных

Куда идёт клип, шаг за шагом

Всё в верхнем блоке происходит на вашем ПК, под вашей учётной записью Windows. Нижний блок — единственный сетевой путь программы, и доступа к вашим клипам у него нет.

Поток данных ClipVault Скопированный клип проходит фильтр захвата, который отбрасывает клипы с меткой «не записывать» и клипы, скопированные из исключённых приложений. Обнаружение ищет учётные данные; учётные данные шифруются через Windows DPAPI, а если шифрование не удалось, не сохраняются вовсе. Клипы хранятся в локальной базе данных SQLite в %LOCALAPPDATA%\ClipVault, права на папку которой ограничены вашей учётной записью. Клип покидает хранилище только для вставки в окно, которое подтверждённо находится на переднем плане, а вставленные учётные данные затем стираются из буфера обмена. Отдельно от этого, и только с вашего согласия, программа отправляет один запрос HTTPS GET за файлом версии; данных клипов на этом пути нет.
Этот ПК · ваша учётная запись Windows
1Буфер обменаВы копируете текст, изображение или файлы в любом приложении.
2Фильтр захватаМетки исключения · исключённые приложения · политика организации
3ОбнаружениеИщет учётные данные в первых 1 000 000 символов
4Шифрование DPAPIТолько учётные данные. Не удалось зашифровать — клип не сохраняется.
другие клипы
Не сохраняетсяПомечено приложением «не записывать» или скопировано из исключённого приложения
5Локальная базаSQLite в %LOCALAPPDATA%\ClipVault · права на папку только у вас
6Окно и вставкаКлавиши уходят только в окно, которое точно впереди
7Очистка после вставкиВставленные учётные данные стираются через 30 с, если нет новой копии
От ваших клипов нет пути в сеть
Единственный сетевой путь · выключен без вашего согласия
Проверка обновленийРаз в день, только если вы разрешили
HTTPS GET · без тела · без cookie
release.json на сайте ClipVaultПоследняя версия, ссылка на заметки, необязательные новости — один и тот же ответ для всех
Отправляется: адрес этого файла и User-Agent с названием ClipVault и его версией, с вашего IP-адреса. Никогда не отправляется: клипы, история, настройки или какой-либо идентификатор.
Поток данных ClipVault Скопированный клип проходит фильтр захвата, который отбрасывает клипы с меткой «не записывать» и клипы, скопированные из исключённых приложений. Обнаружение ищет учётные данные; учётные данные шифруются через Windows DPAPI, а если шифрование не удалось, не сохраняются вовсе. Клипы хранятся в локальной базе данных SQLite в %LOCALAPPDATA%\ClipVault, права на папку которой ограничены вашей учётной записью. Клип покидает хранилище только для вставки в окно, которое подтверждённо находится на переднем плане, а вставленные учётные данные затем стираются из буфера обмена. Отдельно от этого, и только с вашего согласия, программа отправляет один запрос HTTPS GET за файлом версии; данных клипов на этом пути нет.
Этот ПК · ваша учётная запись Windows
1Буфер обменаВы копируете текст, изображение или файлы в любом приложении.
2Фильтр захватаМетки исключения · исключённые приложения · политика организации
3ОбнаружениеИщет учётные данные в первых 1 000 000 символов
4Шифрование DPAPIТолько учётные данные. Не удалось зашифровать — клип не сохраняется.
5Локальная базаSQLite в %LOCALAPPDATA%\ClipVault · права на папку только у вас
6Окно и вставкаКлавиши уходят только в окно, которое точно впереди
7Очистка после вставкиВставленные учётные данные стираются через 30 с, если нет новой копии
От ваших клипов нет пути в сеть
Единственный сетевой путь · выключен без вашего согласия
Проверка обновленийРаз в день, только если вы разрешили
HTTPS GET · без тела · без cookie
release.json на сайте ClipVaultПоследняя версия, ссылка на заметки, необязательные новости — один и тот же ответ для всех
Отправляется: адрес этого файла и User-Agent с названием ClipVault и его версией, с вашего IP-адреса. Никогда не отправляется: клипы, история, настройки или какой-либо идентификатор.

Фильтр. Клип, который его приложение пометило «не записывать» (это стандартные метки, которые ставят KeePass, 1Password и Bitwarden), даже не читается. Клип из исключённого приложения отбрасывается до сохранения; список по умолчанию охватывает менеджеры паролей и корейские банковские модули защиты. Политика организации может добавлять приложения и выключать захват изображений или файлов. win/clipboard.read, Vault._gate

Шифрование по принципу fail-closed. Учётные данные шифруются через Windows DPAPI, а их текст удаляется, поэтому они никогда не попадают в поисковый индекс. Если DPAPI недоступен или выдаёт ошибку, клип отбрасывается, а не хранится открытым текстом. Vault._protect

Хранение. При первом запуске папка перестаёт наследовать права, а вашей учётной записи доступ выдаётся явно, поэтому изменение родительской папки не может его расширить. Дубликаты учётных данных выявляются по хешу с ключом, так что в базе нет угадываемого отпечатка значения. win/acl.harden_once, Vault._dedupe_key

Вставка. ClipVault возвращает фокус окну, из которого вы пришли, и прямо перед отправкой Ctrl+V ещё раз проверяет, что оно на переднем плане. Если подтвердить это не удаётся, он ничего не отправляет, а клип ждёт вас в буфере обмена. Учётные данные, которые он кладёт в буфер обмена, сами несут метки «не записывать», поэтому журнал буфера обмена Windows и другие менеджеры их пропускают. actions.deliver, win/exclusions.exclusion_payloads

Очистка. После вставки учётных данных буфер обмена по умолчанию очищается через 30 секунд — но только если с тех пор не было скопировано ничего нового. actions.clear_if_unchanged

Сеть. Запрос выполняет функция, которая принимает адрес и ваше согласие и больше ничего, поэтому данные клипов ей недоступны. Она отклоняет обычный HTTP и перенаправления и отбрасывает ответы больше 64 КБ. net.py, updates.fetch

Модель угроз

От чего защищает, а от чего нет

Локальная программа может затруднить некоторые атаки. Сделать безопасной скомпрометированную учётную запись Windows она не может, и утверждать обратное значило бы приучать вас полагаться не на то.

Защищает от

  • Скопированный файл базы данных или резервная копия. Учётные данные в них — шифротекст DPAPI, привязанный к вашей учётной записи Windows, а их отпечатки вычислены с ключом.
  • Другие учётные записи на том же ПК. Права на папку закреплены за вашей учётной записью, а ключи DPAPI принадлежат одной учётной записи.
  • Секреты, скопированные из менеджеров паролей. Клипы со стандартными метками исключения пропускаются без чтения.
  • Взгляд на список. Строки с учётными данными скрыты; значение появляется, только когда вы нажимаете Ctrl+R.
  • Вставка не в то окно. Нажатия клавиш не отправляются, пока не подтверждено, что целевое окно на переднем плане.
  • Подменённый файл версии или файл импорта. Ссылки на обновления ограничены официальным хостом, а импорт перепроверяется по содержимому — пути, хеши и ярлыки вычисляются заново.
  • Текст, созданный, чтобы подвесить приложение. Шаблоны обнаружения ограничены, и просматриваются только первые 1 000 000 символов.

Не защищает от

  • Вредоносные программы, запущенные от вашего имени. Любая программа под вашей учётной записью Windows может прочитать буфер обмена и попросить DPAPI расшифровать данные — точно так же, как это делает ClipVault.
  • Администраторы ПК. Учётная запись администратора может читать файлы других учётных записей и действовать от их имени.
  • Другие приложения, пока что-то лежит в буфере обмена. Буфер обмена Windows общий для всех запущенных программ. Очистка после вставки сокращает этот промежуток, и только для учётных данных.
  • То, что на экране. Раскрытое вами значение могут увидеть запись экрана, демонстрация экрана, программы чтения с экрана и все, кто рядом.
  • Учётные данные, которые не распознаются. Обнаружение ищет известные форматы и ярлыки. Голый пароль без ярлыка выглядит как обычный текст и сохраняется как обычный текст.
  • Обычные клипы. Текст, изображения и пути к файлам, не являющиеся учётными данными, хранятся в вашей папке без шифрования и защищены только правами Windows — в том числе адреса электронной почты и номера телефонов.
  • Настройки, которые вы меняете. При выключенном шифровании учётные данные скрываются, но не шифруются. За экспортированный файл отвечаете вы сами.
  • Сам факт проверки обновлений. Пока проверка обновлений включена, хост сайта раз в день видит ваш IP-адрес и версию ClipVault.

Это та же граница, которую программа указывает в разделе Админ-консоль → Безопасность: шифрование гарантирует, что сам по себе файл базы данных прочитать нельзя, — и не более того.

Обнаружение учётных данных

Что распознаётся

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

Пароли

Ярлык со значением — «password:», «비밀번호:», «contraseña=» и слово «пароль» на всех двенадцати языках приложения, включая полноширинные двоеточия. А также адреса вида scheme://user:password@host.

Ключи API и токены

Известные форматы OpenAI, Anthropic, Stripe, GitHub, GitLab, npm, SendGrid, AWS, Slack и Google; значения с ярлыками вроде api_key= или client_secret:; строки .env вроде DB_PASSWORD=; ключи в строках подключения Azure.

URL веб-хуков

Адреса веб-хуков Slack и Discord, которые сами по себе являются учётными данными.

Закрытые ключи

Блоки закрытых ключей PEM.

JSON Web Token

Три сегмента base64url, начинающиеся с eyJ.

Номера карт

От 13 до 19 цифр, проходящих проверку по алгоритму Луна. Заполнители вроде 0000 0000 0000 0000 игнорируются.

Корейские регистрационные номера резидентов

Проверяются по дате и контрольной цифре.

Адреса электронной почты и номера телефонов

Помечаются как персональные данные, но не шифруются: их копируют намеренно.

Сделано так, чтобы не зависать

Обнаружение запускается при каждом копировании, так что медленный шаблон заморозил бы горячую клавишу. У каждого повторения в каждом шаблоне есть верхний предел, а тесты подают 14 враждебных входных строк и падают, если при увеличении входа в четыре раза время растёт более чем в восемь раз — это признак катастрофического бэктрекинга. Просматриваются только первые 1 000 000 символов клипа, и программа никогда не хранит больше текста, чем просматривает.

sensitive.DETECT_LIMIT, Config.normalize, tests/test_security.py

Для организаций

Политика может сделать его только строже

ИТ-отделы могут принудительно задавать настройки через групповую политику или Intune в HKLM\SOFTWARE\Policies\ClipVault. Читаются оба ключа политики — компьютера и пользователя, — и побеждает более строгое значение; обычные пользователи не могут записывать ни в один из них.

  • 19 правил. Запретить хранение учётных данных, требовать шифрование, ограничить срок хранения и число клипов, принудительно задать время очистки после вставки, добавить исключённые приложения, сократить срок хранения для отдельных приложений, добавить правила обнаружения, выключить захват изображений или файлов, экспорт, проверку обновлений или новости, заблокировать права на папку, требовать защиту от снимков экрана запретить приватный режим или требовать подтверждения при вставке учётных данных в новую программу.
  • Переключателя для ослабления нет. Ни одна политика не выключает шифрование, не удаляет исключённое приложение и не включает ничего, что использует сеть, — тест проваливает сборку, если имя политики не начинается с Disable, Require, Max, Excluded или LockDown.
  • Нечитаемые значения игнорируются и никогда не трактуются как разрешение.
  • Ничего не скрыто от пользователя. Заблокированные настройки затенены, а админ-консоль показывает действующие правила.

Шаблон групповой политики

ADMX с английским и корейским ADML, а также руководство по каждому значению. Работает с групповой политикой и с импортом ADMX в Intune.

Скачать ClipVault-policy.zip
Цепочка поставок

Что входит в исполняемый файл

Чем меньше частей, тем меньше мест, куда может проникнуть чужой код.

  • Никаких сторонних библиотек. Программа использует только стандартную библиотеку Python — Win32 через ctypes, интерфейс через tkinter, хранение через sqlite3 и PNG-кодек, написанный в самом проекте. PyInstaller используется только для упаковки. scripts/check_stdlib_only.py читает каждый импорт и проваливает сборку при любом другом.
  • Одна сетевая дверь, проверяемая автоматически. scripts/check_network.py удерживает сетевой код внутри net.py и не допускает туда аргументов для тела запроса.
  • Проверяется при каждом push. Полный набор тестов, проверка зависимостей, сетевая проверка, тесты счётчика загрузок и проверки переводов выполняются в CI на Windows.

Эта сборка подписана цифровой подписью

ClipVault.exe подписан PROJECTTEAMFORYOU через Azure Artifact Signing. Чтобы проверить, щёлкните файл правой кнопкой мыши → СвойстваЦифровые подписи. Когда подписание настроено, сборка отказывается завершаться без подписи, а подпись ещё раз проверяется перед тем, как файлы покинут сборочную машину.

Этот сайт

Что хранит счётчик загрузок

Сайт считает загрузки, чтобы мы видели, какие файлы используются. Он ведёт подсчёт, а не журнал.

Хранится

  • Дата (UTC)
  • Имя файла
  • Двухбуквенный код страны из сети хостинг-провайдера

Никогда не хранится

  • Ваш IP-адрес
  • Ваш User-Agent — читается только для того, чтобы пропускать ботов и предпросмотры ссылок
  • Страница, с которой вы пришли
  • Cookie и что-либо ещё о вас

Возобновлённые загрузки и поисковые роботы не учитываются, а проверка обновлений программы не учитывается вовсе: согласие на проверку версии — не согласие на подсчёт. deploy/cloudflare/lib/downloads.js

Нажатия на нашу собственную рекламу — на этом сайте или, если вы включили новости, в новостях программы — подсчитываются так же: дата, объявление и страна. Программа никогда не показывает рекламу во всплывающем окне и никогда не показывает чужую рекламу. deploy/cloudflare/lib/ads.js

Ответственное раскрытие

Нашли уязвимость? Сначала сообщите нам.

Пожалуйста, сообщите о ней конфиденциально по электронной почте, чтобы её можно было исправить до того, как она станет публичной.

Сообщить о проблеме безопасности security@clipvault.dev
Написать об уязвимости

Наша цель — подтвердить получение сообщения в течение 3 рабочих дней и согласовать с вами исправление и дату раскрытия. Это цель, а не гарантия: ClipVault делает небольшая команда.

Пожалуйста, укажите

  1. Версию ClipVault (clipvault-cli --version) и вашу версию Windows
  2. Шаги для воспроизведения и что получит злоумышленник
  3. Демонстрацию уязвимости (proof of concept), если она есть
  4. Планируете ли вы публикацию и когда

Пожалуйста, не присылайте настоящие пароли или данные буфера обмена других людей и проводите проверки только на своих компьютерах и учётных записях.

Платной программы вознаграждений за уязвимости нет. Если хотите, мы поблагодарим вас по имени в примечаниях к выпуску.

Контакт в машиночитаемом виде: security.txt →