We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
This seems to be critical where info.sender is set provided by proxy: https://github.com/public-awesome/ics721/blob/main/contracts/cw-ics721-bridge/src/contract.rs#L110
info.sender
fn execute_receive_proxy_nft( ... ) -> Result<Response, ContractError> { if PROXY .load(deps.storage)? .map_or(true, |proxy| info.sender != proxy) { return Err(ContractError::Unauthorized {}); } let mut info = info; info.sender = deps.api.addr_validate(&eyeball)?; let cw721::Cw721ReceiveMsg { token_id, sender, msg, } = msg; receive_nft(deps, info, TokenId::new(token_id), sender, msg) }
So it would be possible having an exploited proxy contract and providing any random collection which will then be transferred to another chain.
One solution is checking, whether sender is owner of NFT by querying all_nft_info, instead of nft_info here:
all_nft_info
nft_info
https://github.com/public-awesome/ics721/blob/main/contracts/cw-ics721-bridge/src/contract.rs#L173
The text was updated successfully, but these errors were encountered:
This issue has now been resolved by creating a new proxy package here: https://github.com/arkprotocol/ics721-plus
Sorry, something went wrong.
No branches or pull requests
This seems to be critical where
info.sender
is set provided by proxy: https://github.com/public-awesome/ics721/blob/main/contracts/cw-ics721-bridge/src/contract.rs#L110So it would be possible having an exploited proxy contract and providing any random collection which will then be transferred to another chain.
One solution is checking, whether sender is owner of NFT by querying
all_nft_info
, instead ofnft_info
here:https://github.com/public-awesome/ics721/blob/main/contracts/cw-ics721-bridge/src/contract.rs#L173
The text was updated successfully, but these errors were encountered: