분류: 입력데이터 검증 및 표현 / 코드삽입, 경로 조작 및 자원 삽입, 서버사이드 요청 위조, 운영체제 명령어 삽입
가. 항목명
시스템 자원 접근 및 명령어 수행 입력값 검증
나. 취약점 설명
경로조작 및 자원삽입
시스템이 보호하는 자원에 임의접근하여 자원의 수정/삭제, 시스템 정보누출, 자원 간 충돌로 인한 서비스 장애 등을 유발시키는 취약점
입력값 조작을 통한 허가되지 않은 명령 실행(운영체제 명령어 삽입)
입력값에 의해 의도하지 않은 시스템 명령어가 실행되어 부적절하게 사용자 권한이 변경되거나 운영에 악영향을 미치는 취약점
다. 보안대책
① 허가되지 않은 자원이 사용되지 않도록 설계
② 외부입력값에 의해 악의적인 명령어 실행되지 않도록 설계
라. 설계시 고려사항
① 허가되지 않은 자원이 사용되지 않도록 설계
- 외부입력값이 프로그램 내부에서 사용하는 리소스를 결정하는데 직접적으로 사용되지 않게 설계
- 리소스 목록은 프로펄티 파일이나 XML 파일로 정의하여 관리
- 경로조작을 일으킬 수 있는 문자(.. / \ )를 제거하여 사용
- 지정된 경로 내의 파일만 접근하도록 설계
② 외부입력값에 의해 악의적 명령어가 실행되지 않도록 설계
- 서버프로그램 안에서 셸을 생성해서 명령어가 실행되는 구조를 가지지 않도록 설계
- 사용해야하는 명령어는 목록화하여 조립되어 실행도록 설계
- 목록화된 정보 검색 시 인덱스 값으로 사용
마. 진단기준 및 세부사항
① 허가되지 않은 자원이 사용되지 않도록 설계
- 접근이 허가된 시스템 자원이 식별되고 사용가능한 기능과 매핑되어있는지
- 시스템자원 접근 이력이 로그로 기록되고 있는지
- 조작된 입력으로 자원의 접근가능 여부를 테스트 계획 수립 확인
- 경로 조작에 사용되는 .., /, \\ 등
② 쉘 생성하여 명령어 실행하는 경우 외부입력값에 의한 악의적인 명령어가 실행되지 않도록 설계
- 프로그램 내 명령어를 실행하는 기능 포함여부를 식별하고 실행가능한 명령어 또는 파라미터를 제한하여 설계
- 명령어 실행 이력이 로그로 기록되는지
- 조작된 입력으로 명령어가 실행가능한지 테스트
- 검증해야할 문자열: (|, &, ; 등)
바. 안전한 보안설계의 예
No | 요구사항명 | 해결방안 | 검수기준 | 비고 |
1 | DB사용자 계정에 최소권한 부여 | 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 | 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. | 지속적인 DB사용자 계정 관리가 필요 |
'보안 > SW보안약점 진단원' 카테고리의 다른 글
[설계보안] 웹 기반 중요 기능 수행 요청 유효성 검증 (0) | 2022.06.23 |
---|---|
[설계보안] 웹 서비스 요청 및 결과 검증 (0) | 2022.06.22 |
[설계보안] 디렉토리 서비스 조회 및 결과 검증 (0) | 2022.06.22 |
[설계보안] XML 조회 및 결과 검증 (0) | 2022.06.22 |
[설계보안] DBMS 조회 및 결과 검증 (0) | 2022.06.22 |