[2026 주요정보통신기반시설] CI-01 코드인젝션(Code Injection)

웹애플리케이션내 다양한 인젝션 공격(LDAP, 운영체제명령실행, SSI, XPATH, XML, SSTI 인젝션 등)에 대해 외부입력값이 쿼리나 명령어로 삽입되어 비인가된 접근이나 코드 실행의 가능 유무 점검

코드인젝션(Code Injection)

가이드라인 원문

항목내용
항목코드CI-01
점검내용웹애플리케이션내 다양한 인젝션 공격(LDAP, 운영체제명령실행, SSI, XPATH, XML, SSTI 인젝션 등)에 대해 외부입력값이 쿼리나 명령어로 삽입되어 비인가된 접근이나 코드 실행의 가능 유무 점검
점검대상웹 애플리케이션 소스코드, 웹방화벽
양호기준임의의 입력값에 대하여 철저한 검증이 이루어져, 허용되지 않은 값이 필터링되고 허용된 값만 처리되는 경우
취약기준임의의 입력값에 대하여 검증 없이 명령이 실행되는 경우
조치방법화이트리스트 방식으로 쿼리를 허용된 값만 처리하고, 특수문자에 대해 입력값 검증

상세 설명

1. 판단 기준

기본 판단 기준

  • 양호: 임의의 입력값에 대하여 철저한 검증이 이루어져, 허용되지 않은 값이 필터링되고 허용된 값만 처리되는 경우
  • 취약: 임의의 입력값에 대하여 검증 없이 명령이 실행되는 경우

경계 케이스 (Edge Case) 처리 방법

  • HTML 에디터 등 정상적인 HTML 사용이 필요한 기능: 화이트리스트 방식 적용
  • 특수문자 필터링 시 서비스에 필요한 정상적인 특수문자 사용 가능한지 사전 테스트 필요

권장 설정값

  • 화이트리스트 방식: 영문(a-z, A-Z)과 숫자(0-9)만 허용
  • 특수문자 사용 시: 백슬래시(\)를 붙여 이스케이프 처리

2. 점검 방법

LDAP 인젝션 점검

1
Step 1) 사용자 입력값에 대하여 변조된 LDAP 쿼리 삽입 후 실행 가능 여부 확인

운영체제 명령 실행 점검

1
Step 1) 웹 애플리케이션 기능 내 전달되는 파라미터 값에 대하여 운영체제 명령어 삽입 후 실행 여부 확인

SSI 인젝션 점검

1
Step 1) 사용자가 입력 가능한 파라미터 값에 <!--#echo var="DOCUMENT_ROOT" -->를 삽입하여 전송 후 반환되는 페이지에 사이트의 홈 디렉터리가 표시되는지 확인

3. 조치 방법

1. LDAP 인젝션 조치

  1. 사용자 입력값을 화이트리스트로 지정하여 영문(a-z, A-Z)과 숫자(0-9)만을 허용
  2. 특수문자를 사용해야 하는 경우 입력값(DN에 사용되는 특수문자는 \를 붙여 이스케이프 처리)에 대해 실행 명령이 아닌 일반 문자로 인식되도록 처리
  3. 웹 방화벽에 LDAP 관련 특수문자를 필터링하도록 룰셋 적용

2. 운영체제 명령 실행 조치

  1. 웹 애플리케이션 설계 시 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현
  2. 언어/프레임워크에서 제공하는 안전한 API 사용
  3. 특수문자 필터링 처리
    • Windows: &, |, ^, %
    • Unix/Linux: &, &&, |, ||, ;, `, $(), <, >

3. SSI 인젝션 조치

  1. 화이트리스트 방식으로 사용자 입력에 대한 사용 가능한 문자들을 정의
  2. 필터링 해야 하는 대상: GET 질의 문자열, POST 데이터, 쿠키, URL 등 모든 데이터
  3. 웹 서버의 SSI 기능을 사용하지 않거나, 웹 방화벽에 특수문자를 필터링하도록 룰셋 적용

4. XXE 인젝션 조치

  1. 허용된 태그와 속성만 사용하도록 화이트리스트 방식을 이용한 입력값 검증 로직 구현
  2. 언어별 XML 파서에서 외부 엔티티 처리를 명시적으로 비활성화
1
2
3
// Java DTD 비활성화 예시
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);

4. 참고 자료

특수문자 필터링 예시:

구분필터링 전필터링 후
백슬래시\\5c
등호=\3d
더하기+\2b
곱하기*\2a

필터링 대상 문자:

  • 특수문자: ', ", -, #, (, ), <, >, =, /*, */, +, *, ;, &, |, \, \0
  • SQL 키워드: union, select, insert, drop, update, and, or

5. 스크립트

  • 취약점 점검 스크립트
    • 이 스크립트는 KISA 주요정보통신기반시설 기술적 취약점 분석·평가 가이드라인(2026)을 준수하여 제작된 자동 점검 도구입니다. 복잡한 단일 파일 방식이 아닌 모듈화된 구조로 설계되어 유지보수가 쉽고 확장이 용이합니다.
    • 다양한 환경에서 테스트를 진행했으나, 혹시 점검 로직에 이슈가 발견되거나 개선이 필요한 경우 적극적인 제보를 부탁드립니다.
Hugo로 만듦
JimmyStack 테마 사용 중