
Rails에서 CVE-2017-17917 SQL 인젝션의 교육적 시연, 단계별 재현 및 매개변수화된 쿼리를 사용한 안전한 코딩 대응 포함.
이 프로젝트는 id 매개변수의 SQL 인젝션 취약점 복제를 시연하고, 이후 이 보안 문제를 완화하고 해결하는 방법에 대한 통찰력을 제공합니다. 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 Injection 매개변수 1 OR id > 1

이 SQL 인젝션을 통해 공격자는 일반적으로 접근할 수 없는 사용자 데이터를 검색할 수 있습니다.
실행 난이도: 쉬움
문제는 컨트롤러 메서드에 있으며, 특히 다음과 같이 where 절을 호출할 때 발생합니다:
@clients = Client.where("id = #{params[:id_search]}")
Link to Code
문제는 다음과 같은 접근 방식을 사용하여 해결됩니다:
@clients = Client.where(id: "#{params[:id_search]}")
Link to Code
sudo docker-compose run web rspec
