OS 명령어 삽입

설명

OS 명령어 삽입 취약점을 확인합니다. OS 명령어 삽입 공격은 클라이언트로부터의 입력 데이터를 통해 OS 명령어를 삽입하거나 “인젝션”하는 것으로 구성됩니다. 성공적인 OS 명령어 삽입 공격은 임의의 명령어를 실행할 수 있게 합니다. 이를 통해 공격자는 데이터를 읽고 쓰며 삭제할 수 있습니다. 명령어가 실행되는 사용자에 따라, 시스템 관리 기능 또한 포함될 수 있습니다.

이 검사는 요청의 매개변수들(경로, 쿼리 문자열, 헤더, JSON, XML 등)을 수정하여 OS 명령어를 실행하려고 시도합니다. 표준 삽입과 블라인드 삽입 모두 수행됩니다. 블라인드 삽입은 성공 시 응답 지연을 유발합니다.

수정 방법

대상 응용프로그램 서버에서 임의의 OS 명령어를 실행하는 것이 가능합니다. OS 명령어 삽입은 시스템 전체 침해로 이어질 수 있는 중대한 취약점입니다. 사용자 입력은 절대로 명령이나 명령 인자를 실행하는 함수에 사용해서는 안 됩니다. 이에는 사용자 업로드나 다운로드로 제공된 파일명도 포함됩니다.

응용프로그램에서 다음을 하지 않아야 합니다:

  • 프로세스 이름에 사용자 제공 정보를 사용하여 실행하지 않도록 함.
  • 쉘 메타 문자를 이스케이프하지 않는 OS 명령어 실행 함수에 사용자 제공 정보를 사용하지 않도록 함.
  • OS 명령어에 인자로 사용자 제공 정보를 사용하지 않도록 함.

응용프로그램은 OS 명령어에 전달될 일련의 고정된 인수값들이 있어야 합니다. 이러한 함수에 파일명이 전달된다면, 파일명의 해시를 대신 사용하거나 다른 고유 식별자를 사용하는 것이 좋습니다. 제 3자 명령어에 대한 알 수 없는 공격 위험 때문에 OS 시스템 명령어 대신 동일한 기능을 구현하는 네이티브 라이브러리를 사용하는 것이 강력히 권장됩니다.

링크