A business logic vulnerability is a flaw in an application's design or implementation that will open a gateway for the attacker to manipulate legitimate functions for malicious purposes.
This blog explains a high-severity business logic vulnerability found in a split payment and loan application. I will explain how a lack of backend checks allowed users to bypass disabled chat features in settled groups. Such issues arise just by changing the value, which might be strong, but by applying some manipulation or logic, the changes can take place easily. The developers might think will not take place, still vulnerable.
While testing an iOS application built with Swift and using REST API, there was a feature designed in such a way that a user could create a split payment and invite other users in the same split group for chat and adding their expenditures/shares. I discovered a business logic vulnerability within the application where the vulnerability allows users to bypass disabled chat functionality after the settlement of split payment and send messages in a settled group. This blog will demonstrate the discovery, steps, impact, and how to secure against this type of issue.
The exact vulnerability lies in lack of proper management of UUID parameter checks after a group has been settled. While the UI disables the chat or add payment feature, the backend API still processes comment requests if specific UUID parameters are manipulated. This indicates missing authorization checks on the API endpoint `https://api.redacted..com/_ah/api/v1/comment_add` after the group status is marked as changed by the admin.
This vulnerability can have several negative impacts:
Business logic flaws are just one piece of the puzzle. Read about other common pitfalls in 10 Cryptography Mistakes You're Probably Making.
To prevent this type of vulnerability, the following measures could be taken:
Business logic vulnerabilities can be a serious issue for which it should have significant security implications. By thoroughly testing and implementing proper authorization checks, developers can prevent such issues. This is crucial to ensure that all aspects and functionality of an application, including both the client side and backend, are consistently secured.
Explore hands-on labs and real-world scenarios in our Application Security courses on AppSecEngineer. Learn how to identify vulnerabilities that sneak past the UI and strike deep in the backend logic.