Open anon-person404 opened 3 months ago
Thanks again for participating! This submission earned $68.03 from SIV and $250.65 from the Public Vote, for a total of $318.68.
Here's what we noted in our evaluation:
Issue to track getting paid: https://github.com/siv-org/hack.siv.org/issues/8
Chrome Client Compromise & Vote Manipulation
Overview
When the election system does not control the client frontend, it is unknown if the client is compromised and therefore if data received is as intended by the voter.
An attacker can compromise the client by injecting malicious code into the client's device. The malicious code can then intercept and manipulate the votes cast by the client without the client being aware.
The example below demonstrates how an attacker can use a Chrome Extension to compromise the client and manipulate the votes cast by the client without the client's knowledge.
While the below demonstrates a Chrome Extension, the same principle can be applied to multiple client-side attack vectors.
Exploit Scenario
NOTE: The below is a 'fragile' example and developed against the current specific mock election and is not intended to be a complete exploit. It is intended to demonstrate the concept of how a compromised client can manipulate votes.
It has not been fully tested as I don't have access to the backend system and time constraints, but I believe it to be a working example.
Even if this specific example does not work, it would not require much effort to make it a valid exploit.
Compromised Chrome Extension
Chrome extensions are reasonably common for all sorts of applications, e.g. ad blockers, password managers, voucher codes, emojis, etc.
Users are generally not aware the capabilities of the extensions they install. An attacker can create a malicious Chrome extension that appears to be a legitimate application, but can include malicious code.
I have created a demo chrome extension that exploits the current mock election (https://siv.org/election/1723075118561/vote?auth=link).
A demonstration of this exploit can be found in the following repository: https://github.com/anon-person404/siv-chrome-extension-hack along with installation instructions.
Attack Sequence
https://siv.org/election/1723075118561/vote?auth=link
the application callshttps://siv.org/api/election/1723075118561/info
where the election details are retrieved.Installation
chrome://extensions/
/src
directory of the repository.The extension will set and submit the following vote values:
You won't see the votes on the page as the extension hides the page while the votes are being manipulated. The invalid votes are then submitted to the server and the hack should be validated once the election is over.