État runtime .ideai séparé du code (index, counter, carnets, note mémoire plugin-asset-serving-and-owned-storage-contracts). Purge des tickets obsolètes 51/63/66. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #135 | 4 |
|
1785708498776 |
Audit QA
install_from_directory: audit confirme qu'avant correctif le store ne rejetait pas explicitement les symlinks source ; il les ignorait. Le correctif fait maintenant échouer l'installation sur toute entrée symlink ou unsupported dans l'arbre source.install_from_archive: audit confirme un trou réel de confinement avant correctif. L'extraction reposait entièrement surunzipsans validation applicative des entrées. Le correctif remplace cette extraction par une lecture Rust confinée qui rejette les entrées..//absolues viaenclosed_name()et refuse explicitement les symlinks d'archive.- Confinement d'écriture : après correctif, aucune écriture d'install ne sort de
app_data/plugins/_staging/...puisapp_data/plugins/installed/<id>; le test../../../../outside.txtprouve l'absence d'écriture hors racine. hash_dir/ collecte fichiers : durci pour échouer si un package contient encore un symlink ou une entrée non supportée, au lieu de l'ignorer.plugin_uninstall/remove_package: audit confirmé par test multifichier. La désinstallation supprime le dossier entier, retire l'entrée registry et laisse le runtime catalog vide.
Tests ajoutés/ajustés
plugin::tests::install_from_directory_rejects_source_symlinkplugin::tests::install_from_archive_rejects_parent_traversal_without_writing_outside_stageplugin::tests::install_from_archive_rejects_symlink_entriesplugin_install_load::uninstall_multifile_plugin_removes_package_registry_and_runtime_residue- Stabilisation des tests SDK
hello-plugin: fixture matérialisée avecdist/index.jsdans un temp dir pour supprimer une dépendance implicite à un build préalable.
Verdict
- Correctif confinement install/uninstall validé.
cargo test -p infrastructure -p application -p app-taurivert avecCARGO_HOME=/tmp/idea-cargo-homedans cet environnement.