Hello, Tiens un petit audit de code: MSI Retina-0.0.1.msi (installeur WiX pour le logiciel "Retina", traitement d'images astro, embarquant un runtime Python 3.14 complet). J'ai analysé les tables MSI (sans exécuter aucune custom action), extrait le contenu via msiexec /a (admin install, 21266 fichiers, 755 Mo), puis vérifié les signatures Authenticode, les versions des bibliothèques et fait une revue statique du code Python applicatif. Signature et intégrité Le MSI lui-même n'est pas signé numériquement (NotSigned). Retina.exe et la majorité des DLL natives tierces (numpy, scipy, opencv, h5py, PIL/jxl, rawpy, astap_cli.exe...) ne sont pas signées — c'est courant pour des wheels PyPI packagées ainsi, mais ça élimine toute vérification d'intégrité/provenance côté Windows. Seuls Python, OpenSSL, sqlite3 et les runtimes VC++ portent une signature valide (celle de leurs éditeurs amont). Aucun certificat de l'éditeur "jromang" n'est présent : rien n'atteste que le package vient bien du dépôt GitHub annoncé (github.com/jromang/retina2). Composants tiers avec CVE connues Python embarqué : 3.14.4 — des versions ultérieures (3.14.4-2 puis 3.14.5) corrigent plusieurs CVE 2026 (CVE-2026-1502, 2026-4786, 2026-5713, 2026-6100, notamment liées au debugging distant asyncio). Recommandation : mettre à jour vers 3.14.5+. OpenSSL embarqué : libssl/libcrypto 3.0.19 — le lot de sécurité du 9 juin 2026 (branche 3.0 → 3.0.21) corrige entre autres CVE-2026-45447 (use-after-free dans PKCS7_verify, sévérité High, RCE potentielle) et plusieurs DoS. Recommandation : mettre à jour vers 3.0.21+. Ces deux composants ne sont pas des vulnérabilités "dans" Retina lui-même, mais c'est la version embarquée qui compte puisque le MSI fige ces binaires. Code applicatif (app/retina/) — pas de vulnérabilité critique évidente Pas de secrets/clés API en dur dans le code de l'application (les seules occurrences trouvées sont des fixtures de tests dans les dépendances tierces vendorisées — astropy, astroquery, dask). subprocess.run(cmd, shell=True, check=True) dans starremoval.py : sert à invoquer un outil externe (StarNet/GraXpert) configuré par l'utilisateur via un template de commande. Risque d'injection de commande si ce template peut provenir d'une source non fiable (ex. import d'un fichier de préréglages partagé) plutôt que d'une saisie locale de l'utilisateur — à vérifier/durcir (éviter shell=True, passer une liste d'arguments). exec(compile(...)) dans app.py (run_recipe) : exécution de code Python arbitraire — c'est une fonctionnalité de scripting délibérée (comme les "process scripts" de PixInsight). Le risque existe seulement si l'utilisateur exécute une recette provenant d'une source non fiable ; ce n'est pas un défaut d'implémentation. Le serveur local ( security.py ) est bien conçu : jeton aléatoire (secrets.token_urlsafe), comparaison à temps constant, vérification d'Origin sur WebSocket (protection anti DNS-rebinding), cookie HttpOnly + SameSite=Strict, jeton MCP séparé limité à /mcp. Aucun défaut trouvé ici — bon niveau de sécurité pour un serveur loopback. Divers Permissions installées sur INSTALLFOLDER (MsiLockPermissionsEx) : Admins + SYSTEM en accès complet, Users en lecture/exécution seulement — pas de dossier applicatif inscriptible par tout utilisateur (évite le DLL hijacking classique). LaunchCondition exige Windows build ≥ 10240 — rien d'anormal. Pas de custom actions dangereuses dans la table CustomAction (juste des SetProperty). Actions recommandées Mettre à jour le Python embarqué (≥3.14.5) et OpenSSL (≥3.0.21) avant la prochaine release. Signer le MSI et les binaires de l'application (Retina.exe, astap_cli.exe) avec un certificat Authenticode pour garantir l'intégrité/provenance. Vérifier l'origine de la valeur self.command dans starremoval.py — si elle peut être importée depuis un fichier de config externe, éviter shell=True. Python 3.14.4 (avant mise à jour vers 3.14.4-2 / 3.14.5) : CVE CVSS v4.0 Sévérité Description CVE-2026-6100 9.1 Critique Use-after-free dans lzma.LZMADecompressor/bz2.BZ2Decompressor/gzip.GzipFile si l'instance de décompression est réutilisée après un MemoryError. Corrigé dans 3.14.4-2. CVE-2026-4786 7.0 Élevée Contournement du correctif de CVE-2026-4519 : injection de commande shell via webbrowser.open() avec %action dans l'URL. CVE-2026-4224 6.0 Moyenne Stack overflow dans Expat (parsing XML) via un DTD imbriqué profondément — DoS. CVE-2026-3644 6.0 Moyenne Contournement incomplet de la validation des caractères de contrôle dans http.cookies.Morsel (bypass CVE-2026-0672). CVE-2026-5713 5.3 (CVSS v4) Moyenne Stack overflow dans le débogage distant asyncio (3.14+) / profiling.sampling (3.15+) — lecture/écriture mémoire arbitraire dans un process privilégié. Exploitation locale, complexité élevée (ASLR). CVE-2026-1502 5.7 Moyenne Injection CR/LF dans les en-têtes de tunnel proxy HTTP côté client. CVE-2026-2297 Medium (pas de score v4 trouvé) Moyenne Contournement des hooks d'audit (sys.audit) lors du chargement de fichiers .pyc legacy — fuite d'information. CVE-2026-0865 Non trouvé (lié à wsgiref.headers) — Injection de nouvelle ligne dans les en-têtes HTTP via wsgiref.headers.Headers. La plus préoccupante est CVE-2026-6100 (Critique, 9.1) : elle touche directement les modules lzma/bz2/gzip, qui sont embarqués dans le MSI (_lzma.pyd, _bz2.pyd présents dans la liste des fichiers). Si Retina réutilise un objet decompressor Python sur un flux réseau ou fichier non fiable après une erreur mémoire, l'UAF est exploitable. OpenSSL 3.0.19 (avant mise à jour vers 3.0.21) : Le lot de sécurité du 9 juin 2026 corrige : CVE Sévérité Description CVE-2026-45447 High Use-after-free dans PKCS7_verify() — crash, corruption mémoire, potentiellement RCE. CVE-2026-34182 Moderate CMS AuthEnvelopedData accepte des messages forgés — bypass d'intégrité ou récupération de clé. CVE-2026-35188 Moderate Double-free lors de la vérification OCSP stapling côté client TLS — DoS ou RCE potentielle. CVE-2026-42764 Moderate NULL deref dans le traitement des paquets initiaux QUIC serveur. CVE-2026-45445 Moderate IV ignoré sur le chemin EVP_Cipher() pour AES-OCB — perte de confidentialité. CVE-2026-34180, 34181, 42765-42771, 7383, 9076 Low Divers DoS/NULL deref/heap over-read, exploitabilité limitée ou préconditions rares. Pour OpenSSL, seul CVE-2026-45447 (High) mérite une vraie attention — il touche PKCS7_verify(), pas directement le chemin TLS standard utilisé par le serveur MCP local de Retina (qui n'utilise pas PKCS7). Le risque concret dépend de si Retina/ses dépendances Python (_ssl.pyd) appellent des fonctions PKCS7/CMS quelque part — je n'ai pas vu cet usage dans le code applicatif examiné.