Currently, the teleport
function can be called with any gas limit. This means if a user adds a small msg.value
, the _lzSend
function will be called, which in turn calls _payNative(_fee.nativeFee)
. There is a check if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);
that can be bypassed. This happens because the quote
function is declared but not utilized properly to verify the required fee.
Users can potentially bypass the fee check by sending a very small msg.value
, leading to insufficient fees being paid for the transaction. This could result in failed transactions or unexpected behavior, affecting the reliability and security of the teleport
function.
To ensure the correct fee is paid, calculate the required fee using the quote
function before calling _lzSend
and compare it with msg.value
. If msg.value
is less than the required fee, revert the transaction. This will enforce the correct fee payment and prevent any bypass.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.