반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - XML 조회 및 결과 검증
설명
- XML 조회를 위한 질의문(XPath, XQuery 등) 생성 시 사용되는 입력값과 조회 결과에 대한 검증방법 (필터링 등)을 설계하고 유효하지 않은 값에 대한 처리방법을 설계해야 한다.
설계항목내용
- XML 문서를 조회하는 기능을 구현해야 하는 경우 XML쿼리에 사용되는 파라미터는 반드시 XML 쿼리를 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 쿼리문에 입력값을 자료형에 따라 바인딩해서 사용해야 한다
가. 취약점 개요
- XML 문서를 조회할 경우 입력값 조작을 통해 XQuery나 XPath와 같은 쿼리문의 구조를 임의로 변경하여 허가되지 않은 데이터를 조회하거나 인증절차를 우회할 수 있다.
나. 설계 시 고려사항
1. 공통 검증 컴포넌트를 이용한 입력값 필터링
- 외부 입력값에서 XML삽입 공격이 가능한 문자열들을 필터링하는 Validator 컴포넌트를 개발하여 XML조회를 수행하는 애플리케이션 작성 시 입력값에 대한 검증 작업이 일괄 적용되도록 설계한다.
2. 필터 컴포넌트를 이용한 입력값 필터링
- Filter컴포넌트에서 XML 삽입이 실행될 수 있는 입력값(", [, ], /, =, @)을 필터링하도록 작성하여 전체 요청 또는 XML필터링이 요구되는 요청에 대해 프레임워크에서 일괄 적용하도록 설계한다.
(ㄷ) 개별 코드에서 입력값을 필터링하도록 시큐어코딩 규칙 정의
- 각각의 컴포넌트에서 입력값에 대해 XML삽입을 발생시킬 수 있는 문자열(", [, ], /, =, @ 등)을 제거 또는 안전하게 치환하여 사용할 수 있도록 시큐어코딩 규칙을 정의한다.
(ㄹ) 안전한 API를 사용하도록 시큐어코딩 규칙 정의
- XML 조회를 수행하는 쿼리문 작성 시 외부 입력값이 쿼리문의 구조를 바꿀 수 없는 API(예. Java API ‐ XQuery)를 사용하도록 시큐어코딩 규칙을 정의한다.
참고자료
- "XML Path Language (XPath) Version 1.0” W3C Recommendation, 16 Nov 1999
http://www.w3.org/TR/xpath - XQuery Injection, Common Attack Pattern Enumeration and Classification (CAPEC)
http://capec.mitre.org/data/definitions/84.html - "Blind XPath Injection", Amit Klein
http://www.packetstormsecurity.org/papers/bypass/Blind_XPath_Injection_20040518.pdf - Failure to Sanitize Data within XPath Expressions ('XPath injection')
http://cwe.mitre.org/data/definitions/643.html - CWE-652 XQuery Injection, MITRE,
http://cwe.mitre.org/data/definitions/652.html - CWE-643 XPath Injection, MITRE,
http://cwe.mitre.org/data/definitions/643.html - 2016 OWASP Application Security Verification Standard, OWASP, Malicious Input Handling Verification Requirements,
http://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project
반응형
'공부 > KISA' 카테고리의 다른 글
웹 기반 중요기능 수행 요청 유효성 검증 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.09 |
---|---|
웹 서비스 요청 및 결과 검증 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.09 |
시스템 자원 접근 및 명령어 수행 입력값 검증 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.09 |
디렉터리 서비스 조회 및 결과 검증 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.09 |
DBMS 조회 및 결과 검증 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.08 |
댓글