Notice
Recent Posts
Recent Comments
Link
IgnatiusHeo
구현단계 보안약점 제거 기준-부적절한 XML 외부개체 참조 본문
작성일: 230704
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(244~250p)
구분 | - 입력데이터 검증 및 표현 |
설계단계 | - XML 조회 및 결과 검증 https://cryptocurrencyclub.tistory.com/90 |
개요 | XML 문서에는 DTD(Document Type Definition)를 포함할 수 있으며, DTD는 XML 엔티티 (entitiy)*를 정의한다. 부적절한 XML 외부개체 참조 보안약점은 서버에서 XML 외부 엔티티를 처리할 수 있도록 설정된 경우에 발생할 수 있다. 취약한 XML parser가 외부 값을 참조하는 XML 값을 처리할 때, 공격자가 삽입한 공격 구문이 동작되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생 할 수 있다. |
진단 세부사항 (설계단계) |
① XML문서를 조회하는 기능을 구현하는 경우 XML쿼리 파라미터는 반드시 쿼리를 조작할 수 없도록 필터링해서 사용하거나, 미리 작성된 질의문에 입력값을 자료형에 따라 바인딩해서 사용해야 한다. 또한 XML 조회를 위한 질의문 생성 시 사용되는 입력값과 조회결과에 대한 검증방법(필터링 등)을 설계하고 유효하지 않은 값에 대한 처리방법이 명시되어 있는지 확인한다. ㅇ XML 조회에 사용되는 외부 입력값을 안전하게 필터링하는 기능이 설계되어 있거나 안전한 외부라이브러리를 사용하도록 설계되어 있는지 확인 ㅇ XML데이터를 조회하는 기능 구현시, XML필터링을 적용하기 위한 코딩규칙이나 안전하게 사용할 수 있는 API에 대한 설명이 개발가이드에 정의되어 있는지 확인 ㅇ XML조회 구문을 변경할 수 있는 입력값을 사용하여 XML조회 구문이 변경되는지를 점검하는 테스트계획의 수립 여부 확인 → 구문 변경 가능 입력값: 쿼리예약어, * [ ] / = @ |
보안대책 (구현단계) |
로컬 정적 DTD를 사용하도록 설정하고, 외부에서 전송된 XML문서에 포함된 DTD를 완전하게 비활성화해야 한다. 비활성화를 할 수 없는 경우에는 외부 엔티티 및 외부 문서 유형 선언을 각 파서에 맞는 고유한 방식으로 비활성화 한다. |
진단방법 (구현단계) |
① XML 파일을 파싱하고 있는지 확인한 후 신뢰할 수 없는 외부 입력 값의 파일에 대한 외부 엔티티를 비활성화하는 코드가 없을 경우 취약하다고 판정한다. |
다. 코드예제
ㅇ 분석
1: public void unmarshal(File receivedXml)
2:throws JAXBException, ParserConfigurationException, SAXException, IOException {
3: JAXBContext jaxbContext = JAXBContext.newInstance( Student.class );
4: Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
5:
6: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
7: dbf.setNamespaceAware(true);
8: DocumentBuilder db = dbf.newDocumentBuilder();
9: Document document = db.parse(receivedXml);
10:
11: Student employee = (Student) jaxbUnmarshaller.unmarshal( document );
12: }
ㅇ 설명
1. receivedXml을 별 검증 없이 r9에서 파싱 후 11에서 언마샬을 수행하는데 이 과정에서 입력 xml의 검증 내용이 없음
2. r9 전에 검증하는 내용이 있어야 할듯
끝.
'자격 > SW보안약점진단원' 카테고리의 다른 글
구현단계 보안약점 제거 기준-LDAP 삽입 (0) | 2023.07.04 |
---|---|
구현단계 보안약점 제거 기준-XML 삽입 (0) | 2023.07.04 |
구현단계 보안약점 제거 기준-신뢰되지 않는 URL주소로 자동접속 연결 (0) | 2023.07.04 |
구현단계 보안약점 제거 기준-위험한 형식 파일 업로드 (0) | 2023.07.04 |
구현단계 보안약점 제거 기준-운영체제 명령어 삽입 (0) | 2023.07.03 |