
El proyecto demuestra la replicación de una vulnerabilidad de inyección SQL en el parámetro id y, posteriormente, ofrece información sobre cómo mitigar y resolver este problema de seguridad. 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

Seleccionamos este CVE para resaltar la persistencia de este problema en las últimas versiones de Rails, reafirmando su relevancia en las mejores prácticas de desarrollo.

Requisitos:
docker
docker-compose
Pasos para construir el proyecto:
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



Parámetro de inyección SQL 1 OR id > 1

Con esta inyección SQL, un atacante puede recuperar datos de usuario a los que normalmente no tendría acceso.
Grado de dificultad de ejecución: fácil
El problema radica en el método del controlador, específicamente al invocar una cláusula where de la siguiente manera:
@clients = Client.where("id = #{params[:id_search]}")
Enlace al código
El problema se resuelve utilizando el siguiente enfoque:
@clients = Client.where(id: "#{params[:id_search]}")
Enlace al código
sudo docker-compose run web rspec
