### 취약점 해당 버전
2021-01-13 이전에 설치된 Laravel 4,5,6,7,8 모든 버전에서 발생하는 취약점입니다.
### 취약점 요약
취약점은 `where('id', $id)` 조건에서 $id 에 배열을 입력할 경우, 배열의 두번째 인자값을 통해 두번째 조건의 입력값을 강제로 할당할 수 있게 됩니다.
### 테스트 코드
```
use App\Models\User;
$id = request()->get('id');
$user = User::where('id', $id)->where('is_admin', 0)->first();
```
- 정상적인 경우
URL) http://example.com/dev?id=1
Query) select * from `users` where `id` = '1' and `is_admin` = '0' limit 1;
- 취약점 공격을 시도한 경우
URL) http://example.com/dev?id[]=1&id[]=1
Query) select * from `users` where `id` = '1' and `is_admin` = '1' limit 1;
> PHP 소스 코드에선 is_admin=0 으로 조건을 주었으나, 사용자가 입력한 배열값에 의해 1로 강제로 바뀌는 문제 발생.
### 취약점 해결
6.20.12, 7.30.3, 8.22.1 버전은 보안 패치가 완료되었으므로 composer update 만으로 업데이트 됩니다.
4, 5 버전 사용중인 곳들은 중요 쿼리에 허용되지 않은 배열이 들어오지 않도록 입력값을 강화하는 등의 작업이 필요해 보입니다.
ex) validation rule 에 `string` 룰 추가시 배열 입력 불가