OS 명령어 인젝션
GitLab v19.5요약
OS 명령어 인젝션 취약점을 검사합니다. 이 검사는 요청의 매개변수(경로, 쿼리 문자열, 헤더, JSON, XML 등)를 수정하여 OS 명령어 실행을 시도합니다. 대상 애플리케이션 서버에서 임의의 OS 명령어를 실행할 수 있는 상태입니다.
설명#
OS 명령어 인젝션 취약점을 검사합니다. OS 명령어 인젝션 공격은 클라이언트에서 애플리케이션으로 전달되는 입력 데이터를 통해 OS 명령어를 삽입하거나 "주입"하는 방식으로 이루어집니다. OS 명령어 인젝션 공격이 성공하면 임의의 명령어가 실행됩니다. 이를 통해 공격자는 데이터를 읽고, 쓰고, 삭제할 수 있습니다. 명령어가 실행되는 사용자 권한에 따라 관리 기능까지 포함될 수 있습니다.
이 검사는 요청의 매개변수(경로, 쿼리 문자열, 헤더, JSON, XML 등)를 수정하여 OS 명령어 실행을 시도합니다. 표준 인젝션과 블라인드 인젝션을 모두 수행합니다. 블라인드 인젝션은 성공하면 응답에 지연이 발생합니다.
해결 방안#
대상 애플리케이션 서버에서 임의의 OS 명령어를 실행할 수 있는 상태입니다. OS 명령어 인젝션은 시스템 전체 침해로 이어질 수 있는 심각한 취약점입니다. OS 명령어를 실행하는 함수에서 명령어나 명령어 인수를 구성할 때 사용자 입력을 사용해서는 안 됩니다. 사용자가 업로드하거나 다운로드하면서 제공한 파일명도 여기에 포함됩니다.
애플리케이션이 다음에 해당하지 않도록 합니다:
- 실행할 프로세스 이름에 사용자 제공 정보를 사용하는 경우
- 셸 메타 문자를 이스케이프하지 않는 OS 명령어 실행 함수에 사용자 제공 정보를 사용하는 경우
- OS 명령어의 인수에 사용자 제공 정보를 사용하는 경우
애플리케이션은 OS 명령어에 전달할 인수를 하드코딩된 집합으로 갖추어야 합니다. 이러한 함수에 파일명을 전달해야 한다면 파일명의 해시값이나 다른 고유 식별자를 대신 사용하기를 권장합니다. 제3자 명령어를 겨냥한 알려지지 않은 공격의 위험이 있으므로, OS 시스템 명령어를 사용하는 대신 동일한 기능을 구현한 네이티브 라이브러리를 사용하기를 강력히 권장합니다.