| Type | software |
| Product Environment | web |
| Product Name | RBC Mobile Banking App |
| Product Vendor | Royal Bank Canada |
| Product Version | Unknown |
| Product Link | https://play.google.com/store/apps/details?id=com.rbc.mobile.android&hl=en |
| Vulnerability Name | Improper Input Validation in Mobile Remote Deposit Capture |
| Severity | High |
|
CVSS String
|
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N |
| CVSS Score | 7.1 |
| CVE ID | - |
| Vendor Acknowledgement | Yes |
|
Affected digital Assets
|
1 |
|
Affected Users
|
17000000 |
| Date of Reporting | Jan 18, 2025 |
| PoC Exploit | - |
| Credit | 0xhamy |
RBC Mobile Banking Application (Android) is vulnerable to a business logic flaw allowing cheque amount manipulation during the Deposit a Cheque workflow.
The mobile remote deposit capture (RDC) feature allows users to scan the front and back of a cheque and manually enter the cheque amount. The backend processes the deposit based on the user-supplied amount without properly validating it against:
Because the application trusts client-supplied input for a financial value, attackers can submit a higher amount than the actual cheque value. The manipulated amount is processed and credited, resulting in unauthorized financial gain.
This constitutes improper server-side validation and parameter manipulation in a financial transaction workflow.
Authenticated users can:
The backend does not properly cross-verify the entered amount with the cheque’s actual value before crediting the account.
In testing:
Even small discrepancies demonstrate that:
If exploitable at scale, this may allow:
Obtain a valid cheque that has not been deposited.
Open the RBC Mobile App (Android).
Navigate to:
Deposit a Cheque
Scan the front and back of the cheque as instructed.
When prompted to enter the cheque amount, input a value slightly higher than the real amount written on the cheque.
Example:
239.76240.00Submit the deposit.
Observe that:
Example transaction description:
Mobile cheque deposit - 1818 on chequing account XXXXX
Enforce strict server-side validation of cheque amounts before crediting funds.
Cross-verify entered amount against:
Do not rely on client-supplied financial values.
Implement backend reconciliation before making funds available.
Add fraud detection for mismatched cheque/image amount discrepancies.
Consider delayed credit until issuer-side validation completes.