Summary
LocalExtensionInstaller.installFromArchive() verifies SHA256 only when expectedSha256 is passed. UI sideload of .zip / .qext can install an unverified archive.
This is expected for power users importing local files, but there is no prominent warning and no optional “paste expected SHA256” flow for cautious installs.
Affected code
lib/core/extensions/local_extension_installer.dart (lines 47–56)
- Extension Manager sideload UI (if applicable)
Proposed fix
Choose approach:
- UI: show security notice on sideload; optional SHA256 field before install.
- Strict mode: settings toggle “require checksum for sideload”.
- Documentation: document risk in user guide / extension docs.
Marketplace path should remain stricter (#396); sideload may stay optional with better UX.
Acceptance criteria
Severity
Low — user explicitly chooses local file; social engineering / mistaken file risk.
Related
Summary
LocalExtensionInstaller.installFromArchive()verifies SHA256 only whenexpectedSha256is passed. UI sideload of.zip/.qextcan install an unverified archive.This is expected for power users importing local files, but there is no prominent warning and no optional “paste expected SHA256” flow for cautious installs.
Affected code
lib/core/extensions/local_extension_installer.dart(lines 47–56)Proposed fix
Choose approach:
Marketplace path should remain stricter (#396); sideload may stay optional with better UX.
Acceptance criteria
Severity
Low — user explicitly chooses local file; social engineering / mistaken file risk.
Related