
Il progetto dimostra la replica di una vulnerabilità di SQL injection nel parametro id e successivamente fornisce informazioni su come mitigare e risolvere questo problema di sicurezza. 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

Abbiamo selezionato questa CVE per evidenziare la persistente ricorrenza di questo problema nelle ultime versioni di Rails, ribadendo la sua rilevanza nelle best practice di sviluppo.

Requisiti:
docker
docker-compose
Passaggi per creare un progetto:
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

Vai su http://localhost:3000/


Parametro di SQL injection 1 OR id > 1

Con questa SQL injection, un attaccante può recuperare dati utente a cui normalmente non avrebbe accesso.
grado di difficoltà di esecuzione: facile
Il problema risiede nel metodo del controller, in particolare quando si invoca una clausola where come segue:
@clients = Client.where("id = #{params[:id_search]}")
Link al codice
Il problema si risolve utilizzando il seguente approccio:
@clients = Client.where(id: "#{params[:id_search]}")
Link al codice
sudo docker-compose run web rspec
