fix(core): prevent app package path traversal - #16537
Conversation
Restrict manifest file references and ZIP sources to trusted directories, publish package outputs transactionally, and add security regression coverage.
❌ VscUse Test Plan — Tests failureWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Results: ✅ 3 passed · ❌ 2 failed (of 5 plans) Plans run:
ℹ️ How were these tests selected?GitHub Copilot (Claude Sonnet 4.6, high reasoning) analysed the PR title, description, and the diff between |
E2E Test Selection — AI SelectedWhy these tests: AI selection failed — will fall back to all cases Cases selected (1):
Need to run more tests?Comment on this PR:
Then re-run the workflow. |
❌ VscUse Test Plan — Tests failureWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Results: ✅ 3 passed · ❌ 2 failed (of 5 plans) Plans run:
ℹ️ How were these tests selected?GitHub Copilot (Claude Sonnet 4.6, high reasoning) analysed the PR title, description, and the diff between |
|
/atk-vscuse-test Run exactly these plans: |
|
🎯 VscUse test plan hint from Alive-Fish: The next |
❌ VscUse Test Plan — Tests failureWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Results: ✅ 4 passed · ❌ 1 failed (of 5 plans) Plans run:
ℹ️ How were these tests selected?GitHub Copilot (Claude Sonnet 4.6, high reasoning) analysed the PR title, description, and the diff between |
❌ VscUse Test Plan — Tests failureWhy these tests: Applied the authoritative user hint exactly; all three requested plans exist. Branch diff: Results: ✅ 2 passed · ❌ 1 failed (of 3 plans) Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Separate local file paths from telemetry-safe app package errors, preserve publication errors during rollback cleanup, and strengthen containment and transactional output tests.
❌ VscUse Test Plan — Tests failureWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Results: ✅ 3 passed · ❌ 2 failed (of 5 plans) Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## dev #16537 +/- ##
========================================
Coverage 87.94% 87.94%
========================================
Files 650 651 +1
Lines 34379 34556 +177
Branches 8148 8184 +36
========================================
+ Hits 30235 30392 +157
- Misses 2314 2325 +11
- Partials 1830 1839 +9
🚀 New features to boost your workflow:
|
Add app package tests for output inspection errors and rollback cleanup failures to raise patch coverage.
❌ VscUse Test Plan — Tests unknownWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Show the failing reference, resolved path, manifest directory, and remediation in the VS Code output channel while keeping CLI and telemetry-facing errors path-free.
❌ VscUse Test Plan — Tests unknownWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Use actionable display messages in VS Code lifecycle summaries, remove the redundant Output-panel prompt, and retain path-free messages for CLI and telemetry.
❌ VscUse Test Plan — Tests unknownWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Use path-rich display messages for local lifecycle summaries and logs while retaining a generic telemetry message. Update security acceptance criteria and add unit and CLI E2E coverage.
❌ VscUse Test Plan — Tests unknownWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Show original references, resolved targets, user-visible manifest directories, and owner-neutral remediation for package asset containment errors while keeping telemetry messages path-free. Add root, nested, and canonical diagnostics coverage.
❌ VscUse Test Plan — Tests unknownWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Pass the non-translatable $[file()] syntax as a localization formatting argument and verify it remains in rendered diagnostics.
❌ VscUse Test Plan — Tests failureWhy these tests: AI selection unavailable (source=smoke-fallback); using smoke test cases as fallback. Branch diff: Plans run:
ℹ️ How were these tests selected?GitHub Copilot (GPT-5.6-sol, high reasoning) analysed the PR title, description, and the diff between |
Summary
$[file()]and package sources to their manifest/app-package trust boundaries using lexical and canonical path checksScenarios
Existing scenarios strengthened
New scenarios
file()referencesdisplayMessagecontent is not uploadedatk packagetraversal failure workflow with a credential-free CLI E2EBehavior is specified in
resolve-manifest-file-reference.md.Screenshot
Lifecycle Summary error message
Validation
fx-coresuites: 178 tests passedfx-corebuild: passedgit diff --check: passed