Repository navigation
merge queue: checking #5052 on main (3c68571) - #5059
Closed
mergify[bot] wants to merge 3 commits into
Closed
mergify[bot] wants to merge 3 commits into
mergify[bot] wants to merge 3 commits into
Conversation
An ICS20 `MsgTransfer` whose packet sender is the IBC escrow (`#IBC`) was accepted: escrowing the sent tokens is a no-op transfer from the escrow to itself, so no balance changes, while the withdraw counter and the packet commitment are still written. The counterparty then mints vouchers which can be returned to release genuine escrowed tokens, and since no balance key changes the rate limits were skipped too. Burning vouchers held in escrow, or sending NFTs held in escrow, abuses the same missing authorization. The IBC VP now rejects any (NFT) transfer whose sender is an internal address. The fix lives only in the native VP, so the wasm txs are unchanged. The IBC message is now decoded once in the VP and shared by the sender and rate limit checks. Add regression tests running the real `tx_ibc.wasm`, sharing the IBC channel setup with the existing escrow drain tests.
The `outgoing_shielded_action` bench built its ICS20 `MsgTransfer` with the effective address of the source as the packet sender. For a shielded source that is the MASP internal address, which the IBC VP now rejects: no tx can authorize a transfer on behalf of a protocol-owned address. Real shielded sends are unaffected: the SDK uses a transparent refund address as the packet sender, while the funds are still drawn from the MASP through the shielded section of the tx. Mirror that behavior in the bench, so it exercises the txs actually produced in practice.
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎉 This pull request has been checked successfully and will be merged soon. 🎉
#5052 is queued for merge on branch main (3c68571).
This pull request has been created by Mergify to check the mergeability of #5052.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.
Required conditions of queue rule
main-queuefor merge:github-review-approved[🛡 GitHub branch protection]check-success = test-e2e-with-device-automationcheck-neutral = test-e2e-with-device-automationcheck-skipped = test-e2e-with-device-automationcheck-success = check-benchmarkscheck-neutral = check-benchmarkscheck-skipped = check-benchmarkscheck-success = check-packagescheck-neutral = check-packagescheck-skipped = check-packagescheck-success = build-binariescheck-neutral = build-binariescheck-skipped = build-binariescheck-success = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)check-neutral = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)check-skipped = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)check-success = lintscheck-neutral = lintscheck-skipped = lintscheck-success = rust-docscheck-neutral = rust-docscheck-skipped = rust-docscheck-success = test-wasmcheck-neutral = test-wasmcheck-skipped = test-wasmcheck-success = test-e2e (0)check-neutral = test-e2e (0)check-skipped = test-e2e (0)check-success = test-e2e (1)check-neutral = test-e2e (1)check-skipped = test-e2e (1)check-success = test-e2e (2)check-neutral = test-e2e (2)check-skipped = test-e2e (2)check-success = test-e2e (3)check-neutral = test-e2e (3)check-skipped = test-e2e (3)check-success = test-e2e (4)check-neutral = test-e2e (4)check-skipped = test-e2e (4)check-success = test-integrationcheck-neutral = test-integrationcheck-skipped = test-integrationcheck-success = test-unitcheck-neutral = test-unitcheck-skipped = test-unitcheck-neutral = Mergify Merge Protectionscheck-skipped = Mergify Merge Protectionscheck-success = Mergify Merge ProtectionsRequired conditions to stay in the queue:
#approved-reviews-by >= 1base = maingithub-review-approved[🛡 GitHub branch protection]check-success = test-e2e-with-device-automationcheck-neutral = test-e2e-with-device-automationcheck-skipped = test-e2e-with-device-automationcheck-success = check-benchmarkscheck-neutral = check-benchmarkscheck-skipped = check-benchmarkscheck-success = check-packagescheck-neutral = check-packagescheck-skipped = check-packagescheck-success = build-binariescheck-neutral = build-binariescheck-skipped = build-binariescheck-success = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)check-neutral = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)check-skipped = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)check-success = lintscheck-neutral = lintscheck-skipped = lintscheck-success = rust-docscheck-neutral = rust-docscheck-skipped = rust-docscheck-success = test-wasmcheck-neutral = test-wasmcheck-skipped = test-wasmcheck-success = test-e2e (0)check-neutral = test-e2e (0)check-skipped = test-e2e (0)check-success = test-e2e (1)check-neutral = test-e2e (1)check-skipped = test-e2e (1)check-success = test-e2e (2)check-neutral = test-e2e (2)check-skipped = test-e2e (2)check-success = test-e2e (3)check-neutral = test-e2e (3)check-skipped = test-e2e (3)check-success = test-e2e (4)check-neutral = test-e2e (4)check-skipped = test-e2e (4)check-success = test-integrationcheck-neutral = test-integrationcheck-skipped = test-integrationcheck-success = test-unitcheck-neutral = test-unitcheck-skipped = test-unitcheck-neutral = Mergify Merge Protectionscheck-skipped = Mergify Merge Protectionscheck-success = Mergify Merge Protections