Centre de confiance

Votre presse-papiers reste sur votre PC. Voici comment — et où cela s'arrête.

Chaque affirmation de cette page a été vérifiée dans le code source, et le code qui la fait respecter est cité à côté. Là où ClipVault ne peut pas vous protéger, cette page le dit.

Vérifié sur ClipVault 0.1.0 · page générée le 2026-09-15

Principes

Quatre promesses que le code fait respecter

Pas des règles dont quelqu'un doit se souvenir : chacune est tenue par une vérification ou un test qui fait échouer le build.

Réseau

Le contenu des clips ne peut pas quitter le PC

Un seul fichier du programme, net.py, peut ouvrir une connexion, et son unique fonction, get_json(url, allowed), n'a aucun argument capable de transporter un corps de requête. Aucun chemin du code n'envoie un clip, car il n'y a rien avec quoi l'envoyer.

Vérifié par scripts/check_network.py à chaque push : le build échoue si un autre module importe une bibliothèque réseau, ou si la passerelle reçoit un argument data, body, payload, content ou text.

Télémétrie

Aucune télémétrie, pas même en option

Le programme n'a ni statistiques d'utilisation, ni rapports de plantage, ni outils d'analyse. Un champ telemetry subsiste dans le fichier de réglages, mais rien ne le lit pour envoyer quoi que ce soit, et Config.normalize() le force à false à chaque chargement ou enregistrement des réglages, quoi que contienne le fichier.

src/clipvault/config.py — chaque chargement et chaque enregistrement passent par normalize().

Mises à jour

Recherche de mises à jour et actualités : seulement avec votre accord

Les deux sont désactivées dans une nouvelle installation, et ClipVault vous pose la question au premier lancement. Répondez non et il n'ouvre jamais de connexion. Répondez oui et, une fois par jour, il effectue un unique HTTPS GET vers un petit fichier de version — sans corps, sans cookies, sans identifiant ; le seul en-tête qu'il ajoute indique ClipVault et sa version. Le HTTP en clair et les redirections sont refusés, et une réponse de plus de 64 Ko est rejetée.

net.get_json, updates.fetch. Une organisation peut désactiver les deux avec les stratégies DisableUpdateCheck et DisablePromos.

Lien de mise à jour

« Obtenir la nouvelle version » ne peut mener qu'au site officiel

Le fichier de version est une donnée que le programme a téléchargée, pas une donnée à laquelle il se fie. Son lien n'est conservé que s'il s'agit d'un chemin sur le site de ClipVault ou d'une adresse https sur le même hôte : un fichier falsifié ne peut donc pas vous envoyer vers un faux téléchargement qui imite le vrai. Le numéro de version n'est accepté que sous forme de chiffres et de points, il ne peut donc pas non plus transporter de message.

updates.official_link, updates.clean_version — appliqués aussi à la copie en cache.

Flux de données

Le trajet d'un clip, étape par étape

Tout ce qui figure dans le cadre du haut se passe sur votre PC, sous votre compte Windows. Le cadre du bas est l'unique accès réseau du programme, et il n'a aucun accès à vos clips.

Flux de données de ClipVault Un clip copié passe par le filtre de capture, qui écarte les clips marqués « ne pas enregistrer » ou copiés depuis des applis exclues. La détection recherche les identifiants ; un identifiant est chiffré avec Windows DPAPI, et n'est pas stocké du tout si le chiffrement échoue. Les clips sont stockés dans une base de données SQLite locale dans %LOCALAPPDATA%\ClipVault, dont les permissions du dossier sont verrouillées sur votre compte. Un clip ne sort du stockage que pour être collé dans une fenêtre dont la présence au premier plan est confirmée, et un identifiant collé est ensuite effacé du presse-papiers. Séparément, et seulement si vous l'acceptez, le programme envoie un unique HTTPS GET pour un fichier de version ; aucune donnée de clip ne passe par ce chemin.
Ce PC · votre compte Windows
1Presse-papiersVous copiez du texte, une image ou des fichiers dans une appli.
2Filtre de captureMarqueurs d'exclusion · applis exclues · stratégie d'organisation
3DétectionCherche des identifiants dans les 1 000 000 premiers caractères
4Chiffrement DPAPIIdentifiants seulement. Si le chiffrement échoue, le clip n'est pas stocké.
autres clips
Jamais stockéMarqué « ne pas enregistrer » par son appli, ou copié depuis une appli exclue
5Base de données localeSQLite dans %LOCALAPPDATA%\ClipVault · dossier réservé à votre compte
6Fenêtre et collageTouches envoyées seulement à une fenêtre confirmée au premier plan
7Effacement après collageIdentifiant collé effacé après 30 s, sauf nouvelle copie entre-temps
Aucun chemin de vos clips vers le réseau
L'unique accès réseau · désactivé sauf si vous l'acceptez
Recherche de mises à jourUne fois par jour, seulement si vous l'avez permis
HTTPS GET · sans corps · sans cookies
release.json sur le site de ClipVaultDernière version, lien des notes, actualités facultatives — la même réponse pour tout le monde
Envoyé : l'adresse de ce fichier et un User-Agent indiquant ClipVault et sa version, depuis votre adresse IP. Jamais envoyé : clips, historique, réglages ou tout identifiant.
Flux de données de ClipVault Un clip copié passe par le filtre de capture, qui écarte les clips marqués « ne pas enregistrer » ou copiés depuis des applis exclues. La détection recherche les identifiants ; un identifiant est chiffré avec Windows DPAPI, et n'est pas stocké du tout si le chiffrement échoue. Les clips sont stockés dans une base de données SQLite locale dans %LOCALAPPDATA%\ClipVault, dont les permissions du dossier sont verrouillées sur votre compte. Un clip ne sort du stockage que pour être collé dans une fenêtre dont la présence au premier plan est confirmée, et un identifiant collé est ensuite effacé du presse-papiers. Séparément, et seulement si vous l'acceptez, le programme envoie un unique HTTPS GET pour un fichier de version ; aucune donnée de clip ne passe par ce chemin.
Ce PC · votre compte Windows
1Presse-papiersVous copiez du texte, une image ou des fichiers dans une appli.
2Filtre de captureMarqueurs d'exclusion · applis exclues · stratégie d'organisation
3DétectionCherche des identifiants dans les 1 000 000 premiers caractères
4Chiffrement DPAPIIdentifiants seulement. Si le chiffrement échoue, le clip n'est pas stocké.
5Base de données localeSQLite dans %LOCALAPPDATA%\ClipVault · dossier réservé à votre compte
6Fenêtre et collageTouches envoyées seulement à une fenêtre confirmée au premier plan
7Effacement après collageIdentifiant collé effacé après 30 s, sauf nouvelle copie entre-temps
Aucun chemin de vos clips vers le réseau
L'unique accès réseau · désactivé sauf si vous l'acceptez
Recherche de mises à jourUne fois par jour, seulement si vous l'avez permis
HTTPS GET · sans corps · sans cookies
release.json sur le site de ClipVaultDernière version, lien des notes, actualités facultatives — la même réponse pour tout le monde
Envoyé : l'adresse de ce fichier et un User-Agent indiquant ClipVault et sa version, depuis votre adresse IP. Jamais envoyé : clips, historique, réglages ou tout identifiant.

Filtre. Un clip que son appli a marqué « ne pas enregistrer » — les marqueurs standard que posent KeePass, 1Password et Bitwarden — n'est même pas lu. Un clip provenant d'une appli exclue est écarté avant d'être stocké ; la liste par défaut couvre les gestionnaires de mots de passe et les modules de sécurité bancaire coréens. La stratégie de l'organisation peut ajouter des applis et désactiver la capture d'images ou de fichiers. win/clipboard.read, Vault._gate

Chiffrement sans repli en clair. Un identifiant est chiffré avec Windows DPAPI et son texte supprimé, de sorte qu'il n'atteint jamais l'index de recherche. Si DPAPI est indisponible ou échoue, le clip est écarté plutôt que conservé en clair. Vault._protect

Stockage. Au premier lancement, le dossier cesse d'hériter des permissions et votre compte reçoit un accès explicite : une modification d'un dossier parent ne peut donc pas l'élargir. Les identifiants sont dédoublonnés à l'aide d'un hachage à clé, si bien que la base de données ne contient aucune empreinte devinable de la valeur. win/acl.harden_once, Vault._dedupe_key

Collage. ClipVault rend le focus à la fenêtre d'où vous veniez et vérifie à nouveau qu'elle est au premier plan juste avant d'envoyer Ctrl+V. S'il ne peut pas le confirmer, il n'envoie rien et le clip vous attend dans le presse-papiers. Un identifiant qu'il place dans le presse-papiers porte lui-même les marqueurs « ne pas enregistrer », si bien que l'historique du presse-papiers de Windows et les autres gestionnaires l'ignorent. actions.deliver, win/exclusions.exclusion_payloads

Effacement. Après le collage d'un identifiant, le presse-papiers est vidé au bout de 30 secondes par défaut — mais seulement si rien de nouveau n'a été copié entre-temps. actions.clear_if_unchanged

Réseau. La requête est faite par une fonction qui prend une adresse et votre consentement, et rien d'autre : aucune donnée de clip n'est à sa portée. Elle refuse le HTTP en clair et les redirections, et rejette les réponses de plus de 64 Ko. net.py, updates.fetch

Modèle de menace

Ce contre quoi il protège, et ce contre quoi il ne protège pas

Un programme local peut compliquer certaines attaques. Il ne peut pas rendre sûr un compte Windows compromis, et prétendre le contraire vous apprendrait à compter sur la mauvaise chose.

Protège contre

  • Une copie du fichier de base de données ou une sauvegarde. Les identifiants qu'elle contient sont chiffrés par DPAPI et liés à votre compte Windows, et leurs empreintes sont calculées avec une clé.
  • Les autres comptes du même PC. Les permissions du dossier sont fixées sur votre compte, et les clés DPAPI appartiennent à un seul compte.
  • Les secrets copiés depuis un gestionnaire de mots de passe. Les clips portant les marqueurs d'exclusion standard sont ignorés sans être lus.
  • Un coup d'œil sur la liste. Les lignes d'identifiants sont masquées ; la valeur n'apparaît que si vous appuyez sur Ctrl+R.
  • Le collage dans la mauvaise fenêtre. Aucune frappe n'est envoyée tant que la présence de la fenêtre cible au premier plan n'est pas confirmée.
  • Un fichier de version ou d'importation falsifié. Les liens de mise à jour sont limités à l'hôte officiel, et une importation est revérifiée à partir de son contenu — chemins, hachages et étiquettes sont recalculés.
  • Un texte conçu pour figer l'application. Les motifs de détection sont bornés, et seuls les 1 000 000 premiers caractères sont analysés.

Ne protège pas contre

  • Un logiciel malveillant qui s'exécute sous votre compte. Tout programme lancé sous votre compte Windows peut lire le presse-papiers et demander à DPAPI de déchiffrer, exactement comme le fait ClipVault.
  • Les administrateurs du PC. Un compte administrateur peut lire les fichiers des autres comptes et agir en leur nom.
  • Les autres applis, tant que quelque chose est dans le presse-papiers. Le presse-papiers de Windows est partagé par tous les programmes en cours d'exécution. Le vider après un collage réduit ce laps de temps, et seulement pour les identifiants.
  • Ce qui est à l'écran. Une valeur que vous affichez peut être vue par un enregistrement d'écran, un partage d'écran, un lecteur d'écran et toute personne à proximité.
  • Les identifiants qu'il ne reconnaît pas. La détection recherche des formes et des libellés connus. Un mot de passe seul, sans libellé, ressemble à du texte ordinaire et est stocké comme du texte ordinaire.
  • Les clips ordinaires. Le texte, les images et les chemins de fichiers qui ne sont pas des identifiants sont stockés non chiffrés dans votre dossier, protégés uniquement par les permissions Windows — adresses e-mail et numéros de téléphone compris.
  • Les réglages que vous modifiez. Si le chiffrement est désactivé, les identifiants sont masqués mais pas chiffrés. Un fichier que vous exportez est sous votre responsabilité.
  • Le fait d'être vu en train de rechercher des mises à jour. Tant que la recherche de mises à jour est activée, l'hébergeur du site voit votre adresse IP et votre version de ClipVault une fois par jour.

C'est la même limite que celle indiquée par le programme dans Console d'administration → Sécurité : le chiffrement garantit que le fichier de base de données seul ne peut pas être lu, et rien de plus.

Détection des identifiants

Ce qu'il recherche

La détection étiquette un clip ; elle n'en supprime jamais. Un clip étiqueté comme identifiant est chiffré et masqué. Son stockage n'est refusé que si vous, ou la stratégie de votre organisation, activez ce refus.

Mots de passe

Un libellé suivi d'une valeur — « password: », « 비밀번호: », « contraseña= » et le mot « mot de passe » dans chacune des douze langues de l'application, deux-points pleine chasse compris. Aussi les adresses de la forme scheme://user:password@host.

Clés d'API et jetons

Formats connus d'OpenAI, Anthropic, Stripe, GitHub, GitLab, npm, SendGrid, AWS, Slack et Google ; valeurs libellées comme api_key= ou client_secret: ; lignes .env comme DB_PASSWORD= ; clés des chaînes de connexion Azure.

URL de webhook

Adresses de webhook Slack et Discord, qui sont en elles-mêmes des identifiants.

Clés privées

Blocs de clé privée PEM.

Jetons JWT (JSON Web Tokens)

Trois segments base64url commençant par eyJ.

Numéros de carte

De 13 à 19 chiffres qui passent le contrôle de Luhn. Les suites factices comme 0000 0000 0000 0000 sont ignorées.

Numéros d'enregistrement de résident coréens

Vérifiés d'après la date et le chiffre de contrôle.

Adresses e-mail et numéros de téléphone

Étiquetés comme données personnelles, mais non chiffrés : on les copie volontairement.

Conçu pour ne pas se bloquer

La détection s'exécute à chaque copie : un motif lent figerait le raccourci. Chaque répétition de chaque motif a une limite supérieure, et les tests injectent 14 entrées hostiles et échouent si quadrupler une entrée multiplie le temps par plus de huit — la signature d'un retour arrière catastrophique. Seuls les 1 000 000 premiers caractères d'un clip sont analysés, et le programme ne stocke jamais plus de texte qu'il n'en analyse.

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

Pour les organisations

Les stratégies ne peuvent que le rendre plus strict

Les services informatiques peuvent imposer des réglages par stratégie de groupe ou Intune sous HKLM\SOFTWARE\Policies\ClipVault. Les clés de stratégie ordinateur et utilisateur sont toutes deux lues et la valeur la plus stricte l'emporte ; les utilisateurs standard ne peuvent écrire dans aucune des deux.

  • 19 règles. Refuser de stocker les identifiants, exiger le chiffrement, plafonner la rétention et le nombre de clips, imposer un délai d'effacement après collage, ajouter des applis exclues, raccourcir la rétention de certaines applis, ajouter des règles de détection, désactiver la capture d'images ou de fichiers, l'exportation, la recherche de mises à jour ou les actualités, verrouiller les permissions du dossier, imposer la protection contre les captures d'écran désactiver le mode privé ou imposer une confirmation avant de coller un identifiant dans un nouveau programme.
  • Aucun interrupteur pour assouplir. Aucune stratégie ne désactive le chiffrement, ne retire une appli exclue ni n'active une fonction qui utilise le réseau — un test fait échouer le build si le nom d'une stratégie ne commence pas par Disable, Require, Max, Excluded ou LockDown.
  • Les valeurs illisibles sont ignorées, jamais interprétées comme une autorisation.
  • Rien de caché à l'utilisateur. Les réglages verrouillés sont grisés, et la console d'administration liste les règles en vigueur.

Modèle de stratégie de groupe

ADMX avec ADML anglais et coréen, plus un guide de chaque valeur. Fonctionne avec la stratégie de groupe et avec l'importation ADMX d'Intune.

Télécharger ClipVault-policy.zip
Chaîne d'approvisionnement

Ce qui entre dans l'exécutable

Moins de pièces, c'est moins d'endroits par où le code de quelqu'un d'autre peut s'introduire.

  • Aucune bibliothèque tierce. Le programme n'utilise que la bibliothèque standard de Python — Win32 via ctypes, l'interface via tkinter, le stockage via sqlite3, et un codec PNG écrit dans le projet. PyInstaller ne sert qu'à l'empaqueter. scripts/check_stdlib_only.py lit chaque import et fait échouer le build pour tout le reste.
  • Une seule porte réseau, vérifiée par la machine. scripts/check_network.py cantonne le code réseau à net.py et en tient à l'écart tout argument de corps.
  • Vérifié à chaque push. La suite de tests complète, la vérification des dépendances, celle du réseau, les tests du compteur de téléchargements et les vérifications des traductions s'exécutent sous Windows en CI.

Cette version a une signature de code

ClipVault.exe est signé par PROJECTTEAMFORYOU via Azure Artifact Signing. Pour vérifier, clic droit sur le fichier → PropriétésSignatures numériques. Quand la signature est configurée, le build refuse de se terminer sans signature, et la signature est vérifiée à nouveau avant que les fichiers ne quittent la machine de build.

Ce site web

Ce que conserve le compteur de téléchargements

Le site compte les téléchargements pour que nous sachions quels fichiers sont utilisés. Il tient un décompte, pas un journal.

Conservé

  • La date (UTC)
  • Le nom du fichier
  • Un code pays à deux lettres fourni par le réseau de l'hébergeur

Jamais conservé

  • Votre adresse IP
  • Votre User-Agent — lu uniquement pour écarter les robots et les aperçus de liens
  • La page d'où vous venez
  • Les cookies, ni quoi que ce soit d'autre vous concernant

Les téléchargements repris et les robots d'indexation ne sont pas comptés, et la recherche de mises à jour du programme n'est pas comptée du tout — accepter une vérification de version, ce n'est pas accepter d'être compté. deploy/cloudflare/lib/downloads.js

Les clics sur nos propres publicités — sur ce site, ou dans les actualités du programme si vous les avez activées — sont comptés de la même façon : date, publicité et pays. Le programme n'affiche jamais de publicité dans la fenêtre contextuelle et n'affiche jamais celles de tiers. deploy/cloudflare/lib/ads.js

Divulgation responsable

Vous avez trouvé une vulnérabilité ? Prévenez-nous d'abord.

Merci de la signaler en privé par e-mail, afin qu'elle puisse être corrigée avant d'être rendue publique.

Signaler un problème de sécurité security@clipvault.dev
Rédiger un signalement de sécurité

Notre objectif est d'accuser réception d'un signalement sous 3 jours ouvrés et de convenir avec vous d'un correctif et d'une date de divulgation. C'est un objectif, pas une garantie : ClipVault est développé par une petite équipe.

Merci d'indiquer

  1. La version de ClipVault (clipvault-cli --version) et votre version de Windows
  2. Les étapes pour reproduire le problème, et ce qu'un attaquant y gagnerait
  3. Une preuve de concept, si vous en avez une
  4. Si vous comptez publier, et quand

Merci de ne pas envoyer de vrais mots de passe ni les données de presse-papiers d'autres personnes, et de ne tester que sur des ordinateurs et des comptes qui vous appartiennent.

Il n'y a pas de programme de bug bounty rémunéré. Si vous le souhaitez, nous vous remercierons nommément dans les notes de version.

Contact lisible par machine : security.txt →