
Piwigo 13.8.0 以下は、パラメータ max_level および min_register においてSQLインジェクションの脆弱性があります。これらのパラメータは、ファイル include\ws_functions\pwg.users.php の ws_user_gerList 関数で使用されており、この同じ関数は ws.php ファイルから呼び出され、/admin.php?page=user_list で高度な方法でユーザーを検索するために使用される可能性があります。
論文 https://hdl.handle.net/10316/118126 および https://hdl.handle.net/10316/118059 の調査中に、Piwigo アプリケーションに新たな脆弱性が発見されました。この脆弱性は、次の地点からのフィルタリング検索における一部パラメータのサニタイズ不足に起因します: HOST/admin.php?page=user_list。
具体的には、Piwigo 13.8.0 以下は、パラメータ max_level および min_register において SQL Injection に対して脆弱です。これらのパラメータはファイル include\ws_functions\pwg.users.php の ws_user_gerList 関数で使用され、同じ関数が ws.php ファイルから呼び出されることで、/admin.php?page=user_list での高度なユーザー検索に使用される可能性があります。これにより、SQL クエリを操作することで「コード実行」や「情報漏洩」などの結果を引き起こす可能性があるため、これらのパラメータは SQL クエリで使用される前にサニタイズされる必要があります。この問題はバージョン 12.2.0 に影響し、バージョン 13.8.0 にも同様の脆弱性が報告されているため、将来のバージョンでも影響を受ける可能性があります。
前述のパラメータ (max_level および min_register) は変数にグループ化され、SQL クエリの実行で使用されます:

最初に HOST/admin.php?page=user_list ページにアクセスします

Firefox 経由で送信されたリクエストに従うと、複数のパラメータが存在することがわかります

パラメータ 'max_level' および 'min_register' に引用符を含めるように操作してリクエストを再送信すると、MYSQL エラーが表示され(実行された SQL クエリも表示されます)、両方のフィールドに SQL Injection の脆弱性が存在することが証明されます。
'max_level'

'min_register'

現時点では、開発者はこの問題に対する修正を実施しており、それは単純なホワイトリスト方式です(https://github.com/Piwigo/Piwigo/issues/2197 で言及されています)。これはもちろん最善の解決策ではなく、パラメータ化クエリを追加する方が良いですが、それが不可能なため(開発者が言及したロジスティクスの懸念による)、追加の保護層として Web アプリケーションファイアウォールを使用することをお勧めします。