
Das Projekt demonstriert die Reproduktion einer SQL-Injection-Schwachstelle im id-Parameter und bietet anschließend Einblicke in die Eindämmung und Behebung dieses Sicherheitsproblems. https://www.cvedetails.com/cve/CVE-2017-17917/?q=CVE-2017-17917
Stack:
Ruby: 3.2.2
Rails: 7.0.8
Docker 24.0.5
Docker-Compose 1.29.2
PostgreSQL

Wir haben diese CVE ausgewählt, um das anhaltende Auftreten dieses Problems in den neuesten Rails-Versionen hervorzuheben und seine Relevanz für die Best Practices der Entwicklung zu bekräftigen.

Anforderungen:
docker
docker-compose
Schritte zum Erstellen eines Projekts:
sudo docker-compose build

sudo docker-compose run web bundle install

sudo docker-compose run web rails db:create db:migrate db:seed

sudo docker-compose up

Gehe zu http://localhost:3000/


SQL-Injection-Parameter 1 OR id > 1

Mit dieser SQL-Injection kann ein Angreifer Benutzerdaten abrufen, auf die er normalerweise keinen Zugriff hätte.
Schwierigkeitsgrad der Ausführung: einfach
Das Problem liegt in der Controller-Methode, insbesondere beim Aufruf einer where-Klausel wie folgt:
@clients = Client.where("id = #{params[:id_search]}")
Link zum Code
Das Problem wird durch den folgenden Ansatz gelöst:
@clients = Client.where(id: "#{params[:id_search]}")
Link zum Code
sudo docker-compose run web rspec
