-
Notifications
You must be signed in to change notification settings - Fork 13
Description
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.😉