분류: 입력데이터 검증 및 표현 / 크로스사이트 스크립트
가. 항목명
웹 서비스 요청 및 결과 검증
나. 취약점 설명
외부 입력값 검증 없이 응답페이지 생성에 사용(Reflected XSS)
웹 페이지에 악의적 스크립트가 포함되어 페이지 열람하는 접속자의 권한으로 부적절한 스크립트가 실행되는 취약점
DB에 저장된 값을 검증없이 응답페이지 생성에 사용(Stored XSS)
악의적인 스크립트가 포함된 정보를 저장하여 사용자들이 해당 정보를 조회하는 경우 접속자의 권한으로 부적절한 스크립트가 실행되는 취약점
다. 보안대책
① 입력받은 값을 생성되는 페이지에 사용하는 경우 크로스사이트 스크립팅 필터링 수행
② DB조회 결과를 생성되는 페이지에 사용하는 경우 HTML 인코딩 및 크로스사이트 스크립팅 필터링 수행
라. 설계시 고려사항
① 입력받은 값을 동적으로 생성되는 응답페이지에 사용하는 경우 필터링 수행
- 필터를 이용한 검증
- 웹 컴포넌트인 Filter 사용하여 XSS필터나 HTML인코딩 적용 및 치환
- 인터셉트를 이용한 검증
- MVC 프렘이워크 사용하는 경우 Interceptor 컴포넌트 사용하여 필터링
- 라이브러리 또는 Validator 컴포넌트를 이용한 검증
- 공통코드로 입력값을 검증하는 Validator 컴포넌트를 작성하여 사용자 입력값 필터링
② DB조회결과를 동적으로 생성되는 응답페이지 사용하는 경우 필터링 수행
- View 컴포넌트에 출력값 HTML 인코딩
- View 컴포넌트에서 XSS 필터링 또는 HTML 인코딩 적용
- DB조회 결과값 XSS 필터링 적용
- DB에서 읽어오는 데이터도 출력 전 검증작업 수행
마. 진단기준 및 세부사항
① 사용자 입력값으로 동적으로 생성되는 페이지에 사용할 경우
- XSS 필터 컴포넌트 설계 확인
- 외부 라이브러리 사용여부 확인 ( Java - LUCY XSS Filter, OWASPESAPIXSSFilter )
- 필터링 규칙이 화이트리스트 방식으로 적용되는지 확인
- 외부 입력값에대한 XSS 필터링 방법이 적용되어 있는지 확인
- Filter 사용 시 웹서버 설정파일 확인
- 개별 프로그램서 입력값 필터링 코딩 규칙 확인
- 개별 프로그램(Controller, View 컴포넌트) 출력값 필터링 규칙 확인
- XSS 발생하는 입력값에 대한 필터링 적용여부 테스트 확인
② DB조회 결과값을 동적으로 생성되는 페이지에 사용하는 경우
- XSS 필터 컴포넌트 설계 확인
- 외부 라이브러리 사용여부 확인 ( Java - LUCY XSS Filter, OWASPESAPIXSSFilter )
- 필터링 규칙이 화이트리스트 방식으로 적용되는지 확인
- DB조회결과를 응답페이지에 생성하는 경우 XSS 필터 및 HTML 인코딩 적용 확인
바. 안전한 보안설계의 예
No | 요구사항명 | 해결방안 | 검수기준 | 비고 |
1 | DB사용자 계정에 최소권한 부여 | 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 | 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. | 지속적인 DB사용자 계정 관리가 필요 |
'보안 > SW보안약점 진단원' 카테고리의 다른 글
[설계보안]HTTP 프로토콜 유효성 검증 (0) | 2022.06.24 |
---|---|
[설계보안] 웹 기반 중요 기능 수행 요청 유효성 검증 (0) | 2022.06.23 |
[설계보안] 시스템 자원 접근 및 명령어 수행 입력값 검증 (0) | 2022.06.22 |
[설계보안] 디렉토리 서비스 조회 및 결과 검증 (0) | 2022.06.22 |
[설계보안] XML 조회 및 결과 검증 (0) | 2022.06.22 |