SQL 인젝션
설명
SQL 및 NoSQL 인젝션 취약점을 확인합니다. SQL 인젝션 공격은 클라이언트에서 응용 프로그램으로의 입력 데이터를 통해 SQL 쿼리를 삽입하거나 “인젝션”하는 것으로 구성됩니다. 성공적인 SQL 인젝션 공격은 데이터베이스에서 민감한 데이터를 읽을 수 있게 하거나 데이터베이스 데이터를 수정(삽입/업데이트/삭제)하거나 데이터베이스에 관리 작업(예: DBMS 종료)을 실행하거나 DBMS 파일 시스템에 있는 특정 파일의 내용을 복구하거나 경우에 따라서는 운영 체제에 명령을 실행할 수 있습니다. SQL 인젝션 공격은 SQL 명령어가 미리 정의된 SQL 명령어의 실행을 변경하기 위해 데이터 평면 입력에 삽입되는 인젝션 공격의 일종입니다. 이 체크는 요청의 매개변수(경로, 쿼리 문자열, 헤더, JSON, XML 등)를 수정하여 SQL 또는 NoSQL 쿼리에 구문 오류를 발생시키려고 합니다. 그런 다음 로그와 응답을 분석하여 오류가 발생했는지 감지하려고 합니다. 오류가 감지되면 취약점이 존재할 가능성이 높습니다.
복구
소프트웨어는 상류 구성 요소에서 외부 영향을 받는 입력을 사용하여 SQL 명령어의 전체 또는 일부를 생성하지만, 해당 입력이 하류 구성 요소로 전송될 때 의도된 SQL 명령어를 수정할 수 있는 특수 요소를 보존하지 않거나 잘못해서 보존하지 않습니다.
사용자 제어 가능한 입력의 SQL 구문을 충분히 제거하거나 따옴표 처리하지 않으면 생성된 SQL 쿼리로 해당 입력이 일반 사용자 데이터가 아닌 SQL로 해석되어 질 수 있습니다. 이를 사용하여 쿼리 논리를 변경하여 보안 검사를 우회하거나 백엔드 데이터베이스를 수정하는 추가 명령문을 삽입하는 데 사용할 수 있습니다. SQL 인젝션은 데이터베이스 기반 웹 사이트에서 흔한 문제가 되었습니다. 이 결함은 쉽게 감지되며 쉽게 악용될 수 있고 따라서 심지어 사용자 기반이 적은 사이트나 소프트웨어 패키지도 이러한 공격을 시도받을 가능성이 높습니다. 이 결함은 SQL이 실제로 제어 평면과 데이터 평면 사이에 실질적인 구분을 내세우지 않는다는 사실에 의존합니다.