IgnatiusHeo
설계단계 보안설계기준-XML 조회 및 결과 검증 본문
작성일: 230621
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(50~53p)
구분 | 입력데이터 검증 및 표현 |
설계항목 | XML 조회 및 결과 검증 |
설명 | XML 조회시 질의문(XPath, XQuery 등) 내 입력값과 그 조회결과에 대한 유효성 검증 방법(필터링 등)과 유효하지 않은 값에 대한 처리방법을 설계해야 한다. |
보안대책 | ① XML문서를 조회하는 기능을 구현해야 하는 경우 XML질의문에 사용되는 파라미터는 반드시 XML쿼리를 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 질의문에 입력값을 자료형에 따라 바인딩해서 사용해야 한다. |
연관된 구현단계 |
- XML 삽입 https://cryptocurrencyclub.tistory.com/118 - 부적절한 XML 외부개체 참조 https://cryptocurrencyclub.tistory.com/117 |
가. 취약점 개요
ㅇ 위 내용을 볼 때, 예상 가능한 보안 위협: 인가되지 않은 데이터 접근, 권한 우회?
→ XML(Extensible Markup Language): W3C에서 개발한 마크업언어로, XML Schema WG에서 Recommendation 아이템 2개가 나왔고, 이걸 준용해서 사용하는 걸로 보임.
W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures: https://www.w3.org/TR/xmlschema11-1/
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes: https://www.w3.org/TR/xmlschema11-2/
뭔가 HTML하고 비슷해 보인다?
나. 설계시 고려사항
① XML문서를 조회하는 기능을 구현해야 하는 경우 XML질의문에 사용되는 파라미터는 반드시 XML질의문을 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 질의문에 입력값을 자료형에 따라 바인딩해서 사용해야 한다.
- 공통 검증 컴포넌트를 이용한 입력값 필터링: 외부입력값에서 XML삽입 공격이 가능한 문자열들을 필터링하는 Validator 컴포넌트를 개발하여 XML조회를 수행하는 애플리케이션 작성 시 입력값에 대한 검증 작업이 일괄 적용되도록 설계한다.
- 필터 컴포넌트를 이용한 입력값 필터링: Filter 컴포넌트에서 XML 삽입 공격에 활용될 수 있는 입력값( * [ ] / = @ )을 필터링하도록 작성하여 전체 요청 또는 XML 필터링이 요구되는 요청에 대해 프레임워크에서 일괄 적용하도록 설계한다.
- 안전한 API를 사용하도록 시큐어코딩 규칙 정의: XML조회를 수행하는 질의문 작성 시 외부입력값이 질의문의 구조를 바꿀 수 없는 API(ex. Java API-XQuery)를 사용하도록 시큐어코딩 규칙을 정의한다.
- 개별 코드에서 입력값 필터링하도록 시큐어코딩 규칙 정의: 각각의 컴포넌트에서 입력값에 대해 XML삽입을 발생시킬 수 있는 문자열을 제거 또는 안전하게 치환하여 사용할 수 있도록 시큐어코딩 규칙을 정의한다.
→ 공통 검증 컴포넌트/필터/API사용이 DBMS 쪽 설계 고려사항하고 비슷해 보임. (DBMS에서는 API가 라이브러리)
다. 진단 세부사항
① XML문서를 조회하는 기능을 구현하는 경우 XML쿼리 파라미터는 반드시 쿼리를 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 질의문에 입력값을 자료형에 따라 바인딩해서 사용해야 한다. 또한 XML 조회를 위한 질의문 생성 시 사용되는 입력값과 조회결과에 대한 검증방법(필터링 등)을 설계하고 유효하지 않은 값에 대한 처리방법이 명시되어 있는지 확인한다.
ㅇ XML 조회에 사용되는 외부 입력값을 안전하게 필터링하는 기능이 설계되어 있거나 안전한 외부라이브러리를 사용하도록 설계되어 있는지 확인
ㅇ XML데이터를 조회하는 기능 구현시, XML필터링을 적용하기 위한 코딩규칙이나 안전하게 사용할 수 있는 API에 대한 설명이 개발가이드에 정의되어 있는지 확인
ㅇ XML조회 구문을 변경할 수 있는 입력값을 사용하여 XML조회 구문이 변경되는지를 점검하는 테스트계획의 수립 여부 확인
→ 구문 변경 가능 입력값: 쿼리예약어, * [ ] / = @
끝.
'자격 > SW보안약점진단원' 카테고리의 다른 글
설계단계 보안설계기준-웹 서비스 요청 및 결과 검증 (0) | 2023.06.23 |
---|---|
설계단계 보안설계기준-시스템 자원 접근 및 명령어 수행 입력값 검증 (0) | 2023.06.23 |
설계단계 보안설계기준-디렉토리 서비스 조회 및 결과 검증 (0) | 2023.06.22 |
설계단계 보안설계기준-DBMS 조회 및 결과 검증 (0) | 2023.06.20 |
23년도 SW보안약점 진단원 이수시험 스터디 시작 (0) | 2023.06.19 |