
New Video from @LiveOverflow on Web Application Security Audits
In this video, LiveOverflow shares his experience with security audits for web applications, focusing on the challenges and techniques used when the source code is not available. He explains how, even without access to the source code, valuable clues about the backend implementation can be obtained through error messages, stack traces, unique HTTP headers, or the behavior of API endpoints. For example, he mentions that the use of the G Json library in Go can be detected by how it handles JSON requests, which can help identify the backend technology used. LiveOverflow emphasizes the importance of knowing specific programming languages and frameworks, as each has its own typical problems and pitfalls. This knowledge allows for optimizing security tests by focusing on common vulnerabilities in these environments. He illustrates this with an example from a CTF (Capture The Flag) challenge at 38C3, where he had to audit a Go application without access to the source code. The challenge in question was a key-value store implemented in Go. LiveOverflow explains how he analyzed the code to understand its operation and identify potential vulnerabilities. He describes the code structure, which uses a Go frontend to handle HTTP requests and a Go backend to store data, with the two communicating via a Unix socket. This unusual architecture initially caused confusion, but he eventually discovered an arbitrary file access vulnerability. The vulnerability lay in how the Go backend opened and read files using the OS open function. Although the code included a check to prevent access to certain sensitive files like flag.txt, LiveOverflow found a workaround by exploiting the proc file system to read file descriptors opened by other processes. This method allowed him to bypass the security checks and read the flag.txt file. However, the solution intended by the CTF organizers was different and more subtle. It relied on a race condition in the Go code, where an error variable shared between multiple threads could be modified unexpectedly. By exploiting this race condition, it was possible to read the flag.txt file by sending simultaneous requests to reset the error variable. LiveOverflow concludes by emphasizing the importance of understanding concurrency concepts in Go and paying attention to variable declarations and assignments, especially those related to errors. This experience allowed him to better understand common pitfalls in Go and improve his security auditing skills. To learn more about hacking techniques and security audits, you can watch the full video at the following address: https://www.youtube.com/watch?v=wVknDjTgQoo