The vulnerability exists in the bsv-sdk gem's ARC broadcaster component, which is responsible for submitting transactions to the Bitcoin SV network via an ARC server. The root cause is an incomplete failure detection mechanism in the BSV::Network::ARC.rejected_status? method. This method only checked for two specific failure statuses (REJECTED and DOUBLE_SPEND_ATTEMPTED), while the ARC specification includes several others, such as INVALID, MALFORMED, and statuses indicating an ORPHAN transaction.
When a transaction is submitted using BSV::Network::ARC.broadcast, the ARC server might reject it with one of these unhandled statuses. The rejected_status? function would incorrectly return false, leading the handle_broadcast_response function to treat the failure as a success. Consequently, the broadcast method returns a success object to the application.
This flaw could trick an application into believing a transaction was successfully broadcast and accepted by the network when it was actually rejected. This could lead to severe integrity issues, such as releasing goods or marking an invoice as paid based on a transaction that never occurred. The patch addresses this by expanding the list of REJECTED_STATUSES and adding logic to detect ORPHAN transactions by checking the txStatus and extraInfo fields of the ARC response, ensuring all failure modes are correctly identified and handled by raising an error.