운영체제 명령 인젝션
운영체제 명령 인젝션은 사용자 입력이 셸 명령 문자열에 포함되어 공격자가 의도한 명령이나 옵션이 서버 권한으로 실행되는 약점입니다.
운영체제 명령 인젝션
파일 변환, 네트워크 진단, 백업, 압축, 시스템 관리 기능이 외부 프로그램을 호출하면서 문자열을 직접 조합할 때 발생합니다. 셸 메타문자와 인수 경계가 핵심 위험입니다.
핵심 정보
발생 원인과 악용 조건
프로세스 실행 API에 명령과 인수를 분리해 전달하고 입력을 허용목록으로 제한해야 합니다. 가능하면 운영체제 명령 호출을 라이브러리 기능으로 대체합니다.
운영 효과는 데이터 생성 지점, 처리 목적, 사용자와 관리자 권한, 외부 연동, 백업과 로그, 삭제 절차를 연결할 때 확보됩니다. 설계 문서와 실제 운영 상태가 다를 수 있으므로 설정값, 표본 데이터, 접근기록, 변경 이력을 근거로 검증합니다.
영향 범위
원격코드 실행, 개인정보 파일 접근, 자격증명 탈취, 악성코드 설치, 내부망 이동과 로그 삭제가 가능합니다. 애플리케이션 계정이 관리자 권한이면 피해가 커집니다.
개인정보 관련 위험에는 기밀성 침해, 잘못된 수정과 삭제, 서비스 중단, 부정확한 프로파일링, 차별적 의사결정, 계정 탈취, 사칭과 2차 피싱이 포함됩니다. 위험 평가는 정보의 민감도, 변경 가능성, 결합 가능성, 노출 기간, 대상 인원, 공격자의 실제 접근 능력을 반영합니다.
진단과 우선순위 판단
외부 프로세스 호출 지점과 문자열 결합, 셸 사용 여부, 입력의 인수·옵션 변환을 코드리뷰합니다. 비정상 자식 프로세스와 명령 실행 로그를 확인합니다.
검토 결과에는 적용 범위, 남은 위험, 책임자, 개선 기한, 재검증 조건을 기록합니다. 외부 서비스와 오픈소스 구성요소가 관련되면 계약서와 보안 공지, 버전, 데이터 처리 위치, 하위 수탁·의존 관계도 확인합니다.
예방과 완화
- 셸을 거치지 않는 안전한 API와 고정된 명령·인수 구조를 사용합니다.
- 입력은 허용된 값 목록과 형식으로 제한합니다.
- 애플리케이션 프로세스의 운영체제 권한과 네트워크를 최소화합니다.
- 비정상 자식 프로세스와 명령 실행을 탐지·차단합니다.
보호조치는 예방, 탐지, 대응, 복구 단계에 나누어 배치합니다. 한 통제가 우회되거나 오작동해도 피해가 곧바로 전체 데이터로 확산되지 않도록 권한·네트워크·데이터·로그 통제를 겹쳐 적용합니다.
혼동하기 쉬운 개념
SQL 인젝션은 데이터베이스 질의 구조를, 명령 인젝션은 운영체제 명령 실행 구조를 오염시킵니다.