
Проект демонстрирует воспроизведение уязвимости SQL-инъекции в параметре id, а также содержит рекомендации по смягчению и устранению этой проблемы безопасности. https://www.cvedetails.com/cve/CVE-2017-17917/?q=CVE-2017-17917
Стек:
Ruby: 3.2.2
Rails: 7.0.8
Docker 24.0.5
Docker-Compose 1.29.2
PostgreSQL

Мы выбрали этот CVE, чтобы подчеркнуть сохраняющееся наличие этой проблемы в последних версиях Rails, что подтверждает актуальность лучших практик разработки.

Требования:
docker
docker-compose
Шаги по сборке проекта:
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

Перейдите на http://localhost:3000/


Параметр SQL-инъекции 1 OR id > 1

С помощью этой SQL-инъекции злоумышленник может получить данные пользователей, к которым у него обычно нет доступа.
Сложность выполнения: лёгкая
Проблема заключается в методе контроллера, а именно при вызове условия where следующим образом:
@clients = Client.where("id = #{params[:id_search]}")
Ссылка на код
Проблема решается следующим способом:
@clients = Client.where(id: "#{params[:id_search]}")
Ссылка на код
sudo docker-compose run web rspec
