Skip to content

Add release support/downgrade protection #13

@rugk

Description

@rugk

Your not very low aim is to provide the same security to web versions of software, as for native desktop apps.

Okay, you verify the integrity (and to some extend also authenticity) of the software, fine.

Now, however, desktop apps with usual downloads also have another advantage here.

You can edit a released version of the software and know this is secure. Who you can subsequently download it.
Audits can this be made for specific versions of a software.

Also you can find a vulnerability in a specific version. This is then fixed in the next version and the software is updated.
You can prevent downgrade attacks NY just checking the version of the new software is newer than the old one.

All this requires versions. That is something web applications usually do not have.
This, this add-on e.g. does not prevent downgrade attacks.

in practise

Say version 1.0.0 has a vulnerability. Now v1.0.1 is released and the server admin updates the software.
When the server admin now wants to attack a user, they can just serve the old v1.0.0 once and this exploit the known vulnerability.

protection

I suggest to implement some version checking in this add-on.
Maybe use the manifest.json or something like this and add a custom version field. Or better include it in the (signed) HTML file. When a signed website is visited, this add-on should then just record (save) the version number of the software.
When the website is visited the next time, it just compares the version number and shows a critical error when the version number is lower than the saved old one.
That's it, theoretically wore easy! (Of course you need to use a very good library for version comparison or so, because when this cab be circumvented your whole protection can be circumvented.)

And as an additional protection, it may require that a version number is present. The software creator had to include it, but IMHO they should do so, as this is an attack you have to consider.
For the start, you could make this an optional thing. Or just require it, AFAIK not too many projects use this extension for now.😉

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions