Security analysis of software source code
Short description of the system. Commercial secure VoIP system certified by the Israeli Ministry of Defense.
Technologies: modular architecture, web server, VoIP server, client applications for Windows, iOS, Android; DBMS: Oracle; programming languages: .NET, C / C#, Objective C, Java.
Total number of lines of source code: 1.2 million.
Objective: in white-box mode, conduct an independent security audit of the source code.
Solution. Automated static analysis had been performed by the customer. Therefore, we only used a manual security audit method. In the C code, unsafe memory functions were identified. They allowed buffer overflows and memory leaks. In mobile applications, logical errors were identified. They could allow hackers to intercept encryption keys using a MitM attack. We also identified architectural errors. They could allow hackers to use a DoS attack to block a subscriber. Detailed reports were compiled for executive management and technical specialists. The reports included descriptions of all problems that were found and recommendations for resolving them.
Duration of work: 2 months.
Conclusions. Despite the significant efforts of the customer to find the security problems in their system, using modern licensed security scanners of source code, our independent line-by-line audit of the code identified additional problems not detected by the customer. The elimination of these problems allowed the customer to raise the security of their application to a new level. They avoided compromising the confidential information of customers.
Learn more about security analysis of source code.
Short description of the system. A decentralized exchange that allows to users trade cryptocurrencies and tokens based on Ethereum smart contracts.
Technologies: independent frontend and backend, administrator interface in iOS application, DBMS: PostgreSQL, programming languages: Go, Python, JS, Objective-C, Java.
Total number of lines of source code: 960 thousand.
Objective: in white-box mode, find the vulnerabilities in the system and the hacking possibilities.
Solution: Static code analysis at the first stage revealed errors of repeating code usage. They were fraught with serious potential logical problems. Erroneous parameters, errors in variable dependency models, insufficient coverage of implemented test scenarios were also found. Further manual analysis of the source code helped to identify hidden problems with incorrect validation of input data, logical problems with the sources of cryptocurrency quotes and quotes for cryptocurrency pairs, as well as the possibility of injecting incorrect data to be put into a smart contract. Detailed reports for executive management and technical specialists were generated. The reports contained descriptions of all the problems the were found and recommendations for resolving them.
Duration of work: 2 months.
Conclusions. With our help, the cryptocurrency exchange eliminated significant security issues that threatened the success of the organization. We managed to conduct our audit before the official launch of the exchange, therefore it was not exposed to the risks after the web applications were published and real users started coming in.
Learn more about security analysis of source code.
A global manufacturer of household and industrial equipment was going to implement new modules for their ERP, CRM, financial, and e-commerce systems.
The modules were written using Java, C++ and SAP UI5.
The customer had scanned the source code with security scanners of source code, performed a pentest, found security issues, fixed them, and asked us to do a manual security review.
The total work scope was about 2 million lines, and about 3 months later, we presented a comprehensive report showing the critical security problems, which were missed by the security scanners and even by the grey-box penetration test.
For example, we found critical race-condition vulnerabilities, which, although unlikely to occur, could cause huge damage.
Another example was a backdoor in the software code allowing the software developers to have unauthorized access to the production system. The developers explained that they needed this access for legitimate debugging purposes, however, that was a risk, and we insisted on closing this backdoor.
Conclusions. The customer made the right decision in entrusting us to independently verify the results of their security work and received important information on omissions that could cause serious financial damage. Corrections to the systems were made, their security was improved, and the risks of losses were minimized.
Learn more about security analysis of source code.