Skip to content

Use a safe serialization format for update check state #19560

@SaschaCowley

Description

@SaschaCowley

Related issues, PRs or discussions

Related #19559

What is the current state of the codebase?

NVDA uses pickle to store the state of the update check system, including the last check timestamp, details of the pending update if any, and an ignored update version if any. 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 may need to migrate old updateCheckState.pickle files to the new format. However, this may not be required, as we could potentially just delete the file when updating.

Metadata

Metadata

Assignees

No one assigned

    Labels

    audience/nvda-devPR or issue is relevant to NVDA / Add-on developersp3https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritysecuritytriagedHas been triaged, issue is waiting for implementation.

    Type

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions