IgnatiusHeo
설계단계 보안설계기준-시스템 자원 접근 및 명령어 수행 입력값 검증 본문
작성일: 230623
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(58~63p)
유형 | 입력데이터 검증 및 표현 |
설계항목 | 시스템 자원 접근 및 명령어 수행 입력값 검증 |
설명 | 시스템 자원접근 및 명령어를 수행할 때 입력값에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리 방법을 설계해야 한다. |
보안대책 | ① 외부입력값을 이용하여 시스템자원(IP, PORT번호, 프로세스, 메모리, 파일 등)을 식별하는 경우 허가되지 않은 자원이 사용되지 않도록 해야 한다. ② 서버프로그램 안에서 셸을 생성하여 명령어를 실행해야 하는 경우 외부입력값에 의해 악의적인 명령어가 실행되지 않도록 해야 한다. |
연관된 구현단계 |
- 코드삽입 https://cryptocurrencyclub.tistory.com/111 - 경로 조작 및 자원 삽입 https://cryptocurrencyclub.tistory.com/112 - 서버사이드 요청 위조 https://cryptocurrencyclub.tistory.com/121 - 운영체제 명령어 삽입 https://cryptocurrencyclub.tistory.com/114 |
가. 취약점 개요
ㅇ 위 내용을 볼 때, 예상 가능한 보안 위협: 비인가 자원 할당 및 명령 실행, 경로조작 및 정보 탈취
나. 설계시 고려사항
① 외부입력값을 이용하여 시스템 자원을 식별하는 경우 허가되지 않은 자원이 사용되지 않도록 해야 한다.
→ 외부입력값이 프로그램 내부에서 사용하는 리소스를 결정하는데 직접적으로 사용되지 않도록 설계한다. (기능 설계시 사용하는 리소스 목록과 사용 범위를 설정, 리소스 목록은 프로퍼티파일이나 XML파일로 정의하여 리소스 정보를 변경하는 경우 프로그램 수정을 최소화 할 수 있도록 관리)
→ 사용자의 요청 리소스가 디렉토리 내 모든 파일인 경우 목록화 하는것은 어려우니, 해당 경우는 경로조작을 일으킬 수 있는 문자(.. / \)를 제거하고 사용하여 지정 경로 내 파일만 접근 가능하도록 시큐어코딩 규칙을 정의한다.
→ FTP 서비스를 예시로 들면 사용자별 디렉토리를 제공, 해당 디렉토리에 파일을 업-다운로드할 수 있도록 설정하는 경우를 가정하면 사용자는 1. 사용자 개인 디렉토리에만 접근이 가능해야 하며, 2. 적절한 자원 사용범위를 설계하여 파일 관리 시 시스템에 영향이 가지 않도록 설계를 해야하며 3. 입력값에 대한 필터링 + 시큐어코딩을 설정.
② 서버프로그램 안에서 셸을 생성하여 명령어를 실행해야 하는 경우 외부 입력값에 의해 악의적인 명령어가 실행되지 않도록 해야 한다.
→ 셸을 생성해서 명령어 실행해야하는 경우면, 외부입력값이 직접적으로 명령어의 일부로 사용되지 않도록 해야한다.
→ 명령어 일부 사용값들을 프로퍼티파일이나 XML파일과 인덱싱을 조합, 목록화하여 허용 목록 내 값들로만 명령어가 조립되어 실행될 수 있도록 해야 한다.
→ 말이 어려운데, 서브커맨드 목록 만들어놓고 인덱싱 => 조립해서 커맨드 완성, 실행하도록 설정해야함. 외부입력값을 그대로 받아 셸에 직접 커맨드를 입력하는 경우는 없어야함. 맞말임.
다. 진단 세부사항
① 외부 입력값을 이용하여 시스템자원을 식별하는 경우 허가되지 않은 자원이 사용되지 않도록 해야 한다.
ㅇ 접근 허가된 시스템자원이 식별되고, 사용가능한 기능과 매핑되어 있는지 확인
ㅇ 시스템자원 접근 이력이 로그로 기록되도록 설계되어 있는지 확인
ㅇ 조작된 입력으로 비허가 자원의 접근가능 여부를 점검할 수 있는 테스트 계획의 수립 여부 확인
→ 경로조작에 사용 가능한 문자: / \\
② 서버프로그램 안에서 셸을 생성하여 명령어를 실행해야 하는 경우 외부입력값에 의해 악의적인 명령어가 실행되지 않도록 해야 한다.
ㅇ 명령어 실행 기능 포함여부를 식별, 해당 기능의 실행 가능 명령어 파라미터의 제한 설계 여부 확인
ㅇ 운영체제 명령어 실행 이력이 로그로 기록되도록 설계되어 있는지 확인
→ 누가/언제/어느IP에서 썼는지 확인 가능하도록 설계되어야함.
ㅇ 조작된 입력으로 비허가 명령어의 실행 가능 여부 테스트 계획 수립 여부 확인
→ 검증해야 할 특수문자: | & ;
끝.
'자격 > SW보안약점진단원' 카테고리의 다른 글
설계단계 보안설계기준-웹 기반 중요 기능 수행 요청 유효성 검증 (0) | 2023.06.23 |
---|---|
설계단계 보안설계기준-웹 서비스 요청 및 결과 검증 (0) | 2023.06.23 |
설계단계 보안설계기준-디렉토리 서비스 조회 및 결과 검증 (0) | 2023.06.22 |
설계단계 보안설계기준-XML 조회 및 결과 검증 (0) | 2023.06.22 |
설계단계 보안설계기준-DBMS 조회 및 결과 검증 (0) | 2023.06.20 |