문제
Command Injection 공격의 원리를 설명하고, 이를 방어하기 위한 핵심 대응 방안을 4가지 이상 서술하시오.
정답
Command Injection은 애플리케이션이 사용자 입력을 검증 없이 시스템 명령어 실행에 사용할 때, 공격자가 악의적인 명령어를 삽입하여 서버의 운영체제 명령을 임의로 실행하는 공격이다. 대응으로는 1) 입력값 화이트리스트 검증과 특수문자(;|&`$) 필터링, 2) 매개변수화된 API 사용으로 명령어와 인수 분리, 3) 애플리케이션 실행 계정의 최소 권한 적용, 4) 샌드박스 환경에서 명령 실행, 5) 입력값 이스케이프 처리 등이 있다.
시스템 명령어 실행화이트리스트 검증매개변수화 API최소 권한샌드박스
해설
Command Injection은 웹 애플리케이션에서 사용자 입력을 system(), exec() 등의 함수에 직접 전달할 때 발생한다. 공격자는 세미콜론(;), 파이프(|), 앰퍼샌드(&) 등을 이용해 추가 명령을 연결 실행할 수 있다. 방어는 입력 검증이 핵심이며, 가능하면 시스템 명령 호출을 피하고 라이브러리 함수를 사용하는 것이 좋다.