명령어 삽입

Improper Neutralization of Special Elements used in a Command ('Command Injection')

설명

외부 입력값이 충분히 처리되지 않고 운영 체제 명령어에 사용되어 의도치 않게 명령어나 프로그램을 실행할 수 있는 취약점입니다.

잠재적 영향

  • 무단 코드 실행: 공격자가 운영 체제 명령어를 삽입하여 임의의 코드를 실행할 수 있어 시스템 권한이 위험에 처할 수 있습니다.

  • 데이터 손상: 공격자가 애플리케이션 데이터를 무단으로 읽거나 수정할 수 있습니다.

  • 서비스 거부(DoS): 악성 명령어를 통해 애플리케이션을 중단시키거나 다운시킬 수 있습니다.

해결 방법

  1. 사용자의 입력을 명령어로 처리하지 않도록 해야합니다.

  2. 외부 입력값을 철저히 검증하고 허용 목록 관리하여 지정된 명령어만 실행 가능하게 합니다.

  3. Java의 ProcessBuilder와 같이 보다 안전한 API를 사용하여 외부 명령어 실행을 분리하도록 합니다.

  4. 가능한 최저 권한으로 외부 명령 실행하도록 합니다.

취약한 코드 및 안전한 코드 예시

취약한 코드

안전한 코드

설명:

  • 취약한 코드: 외부 입력값을 검증하지 않고 단순히 명령어로 실행시키는 방식으로, 공격자가 임의의 명령어나 스크립트를 삽입할 수 있습니다.

  • 안전한 코드: 명령어를 실행하기 전 검증하여 지정된 허용된 명령어만 실행 가능하도록 설계해 안전성을 확보합니다.

관련 CVE

참조

Last updated