
このプロジェクトは、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インジェクションのパラメータ 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
