코드인젝션(Code Injection)
가이드라인 원문
| 항목 | 내용 |
|---|---|
| 항목코드 | CI-01 |
| 점검내용 | 웹애플리케이션내 다양한 인젝션 공격(LDAP, 운영체제명령실행, SSI, XPATH, XML, SSTI 인젝션 등)에 대해 외부입력값이 쿼리나 명령어로 삽입되어 비인가된 접근이나 코드 실행의 가능 유무 점검 |
| 점검대상 | 웹 애플리케이션 소스코드, 웹방화벽 |
| 양호기준 | 임의의 입력값에 대하여 철저한 검증이 이루어져, 허용되지 않은 값이 필터링되고 허용된 값만 처리되는 경우 |
| 취약기준 | 임의의 입력값에 대하여 검증 없이 명령이 실행되는 경우 |
| 조치방법 | 화이트리스트 방식으로 쿼리를 허용된 값만 처리하고, 특수문자에 대해 입력값 검증 |
상세 설명
1. 판단 기준
기본 판단 기준
- 양호: 임의의 입력값에 대하여 철저한 검증이 이루어져, 허용되지 않은 값이 필터링되고 허용된 값만 처리되는 경우
- 취약: 임의의 입력값에 대하여 검증 없이 명령이 실행되는 경우
경계 케이스 (Edge Case) 처리 방법
- HTML 에디터 등 정상적인 HTML 사용이 필요한 기능: 화이트리스트 방식 적용
- 특수문자 필터링 시 서비스에 필요한 정상적인 특수문자 사용 가능한지 사전 테스트 필요
권장 설정값
- 화이트리스트 방식: 영문(a-z, A-Z)과 숫자(0-9)만 허용
- 특수문자 사용 시: 백슬래시(
\)를 붙여 이스케이프 처리
2. 점검 방법
LDAP 인젝션 점검
| |
운영체제 명령 실행 점검
| |
SSI 인젝션 점검
| |
3. 조치 방법
1. LDAP 인젝션 조치
- 사용자 입력값을 화이트리스트로 지정하여 영문(a-z, A-Z)과 숫자(0-9)만을 허용
- 특수문자를 사용해야 하는 경우 입력값(DN에 사용되는 특수문자는
\를 붙여 이스케이프 처리)에 대해 실행 명령이 아닌 일반 문자로 인식되도록 처리 - 웹 방화벽에 LDAP 관련 특수문자를 필터링하도록 룰셋 적용
2. 운영체제 명령 실행 조치
- 웹 애플리케이션 설계 시 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현
- 언어/프레임워크에서 제공하는 안전한 API 사용
- 특수문자 필터링 처리
- Windows:
&,|,^,% - Unix/Linux:
&,&&,|,||,;,`,$(),<,>등
- Windows:
3. SSI 인젝션 조치
- 화이트리스트 방식으로 사용자 입력에 대한 사용 가능한 문자들을 정의
- 필터링 해야 하는 대상: GET 질의 문자열, POST 데이터, 쿠키, URL 등 모든 데이터
- 웹 서버의 SSI 기능을 사용하지 않거나, 웹 방화벽에 특수문자를 필터링하도록 룰셋 적용
4. XXE 인젝션 조치
- 허용된 태그와 속성만 사용하도록 화이트리스트 방식을 이용한 입력값 검증 로직 구현
- 언어별 XML 파서에서 외부 엔티티 처리를 명시적으로 비활성화
| |
4. 참고 자료
특수문자 필터링 예시:
| 구분 | 필터링 전 | 필터링 후 |
|---|---|---|
| 백슬래시 | \ | \5c |
| 등호 | = | \3d |
| 더하기 | + | \2b |
| 곱하기 | * | \2a |
필터링 대상 문자:
- 특수문자:
',",-,#,(,),<,>,=,/*,*/,+,*,;,&,|,\,\0 - SQL 키워드:
union,select,insert,drop,update,and,or등
5. 스크립트
- 취약점 점검 스크립트
- 이 스크립트는 KISA 주요정보통신기반시설 기술적 취약점 분석·평가 가이드라인(2026)을 준수하여 제작된 자동 점검 도구입니다. 복잡한 단일 파일 방식이 아닌 모듈화된 구조로 설계되어 유지보수가 쉽고 확장이 용이합니다.
- 다양한 환경에서 테스트를 진행했으나, 혹시 점검 로직에 이슈가 발견되거나 개선이 필요한 경우 적극적인 제보를 부탁드립니다.