I am planning to add a few chapters on securing services in my Linux Command Line book. But, to make it practical & hands on, I needed one real application which the readers can deploy and secure. I needed something simple, say one single binary so that it becomes easier to convert it into a proper systemd service.
I decided to write one in Rust :) This also helps to showcase that one can
write totally insecure code even in Rust (or any other language). Let me
introduce Very Bad Web application. The
README contains the build instructions. The index page shows the available
Issues in the service
The service has the following 3 major issues:
- Directory traversal
- Arbitrary file read
- Remote code execution
I am currently updating the systemd (services) chapter in my book to show how to secure the service using only the features provided by the latest systemd. In future I will also have chapters on SELinux and AppArmor and learn how to secure the service using those two options.
If you think I should add some other nice security holes in this application, please feel free to suggest :)