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.