Skip to content

Use a safe serialization format for add-on state #19559

@SaschaCowley

Description

@SaschaCowley

Related issues, PRs or discussions

Related #19560

What is the current state of the codebase?

NVDA uses pickle to store the state of add-ons, including whether they're disabled, pending update or removal, or have their compatibility overridden. However, as the documentation states:

The pickle module is not secure. Only unpickle data you trust.

Why are changes required?

Since we're persisting data to %appData%, we cannot trust that it hasn't been tampered with.

What technical changes are required?

Rather than using pickle to store the data, use a safe serialisation format like JSON.

Are the proposed technical changes API breaking?

Yes. pickle and JSON are not compatible serialisation formats.

Are there potential risks or issues with the proposed implementation?

We need to migrate old addonsState.pickle files to the new format. This is unlikely to be problematic.

Metadata

Metadata

Assignees

Labels

p2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityrelease/blockingthis issue blocks the milestone releasesecuritytriagedHas been triaged, issue is waiting for implementation.

Type

No fields configured for Task.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions