Исправление: запретить пользователям изменять критические переменные состояния, принадлежащие другим пользователям. Самым простым способом исправления здесь является ограничение функции deposit только обновлением состояния вызывающего (msg.sender).
// Corrected deposit function (inside VulnerableVault)
function deposit() public payable {
// Only affects the caller's state
lastDeposit[msg.sender] = block.timestamp;
balances[msg.sender] += msg.value;
}
Теперь только Алиса может обновлять lastDeposit[alice].
#griefing