Tx Origin Attack
Inappropriate User Authorization
// Vulnerable: comparing the contract owner with tx.origin
require(tx.origin == owner)
// Vulnerable:
require(tx.origin == msg.sender)1. Vulnerable Wallet
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract VulnWallet {
address owner;
constructor() {
owner = msg.sender;
}
function transferTo(address payable _to, uint amount) public {
require(tx.origin == owner);
_to.transfer(amount);
}
}2. Implement Attack Wallet using the Vulnerable Wallet
References
Last updated