상세 컨텐츠

본문 제목

보안 버퍼 오버플로우 20220811

보안

by MustThanks 2022. 8. 11. 22:08

본문

반응형

버퍼 오버플로우

스택(Stack)이나 힙(Heap)에 할당되는 메모리에 문자열 등이 저장될 때 최초 정의된 메모리의 크기를 초과하여 문자열을 저장하는 경우 버퍼 오버플로우가 발생한다

 

포맷스트일 사입

공격자는 외부입력값에 포맷 문자열을 삽입하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그결과 공격자는 취약한 프로세스의 권한을 취득하여

임의의 코드를 실행 할 수 있다

 

설계 시 고려사항

C C++ 같이 메모리를 프로그래머가 관리하는 플랫폼을 사용하는 경우 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계 설정 또는 검사를 수행해야 한다

-      실행되는 시스템에 Non-excutable stack , 랜덤스택(ASLR), 스택가드(StackGuard)와 같은 메모리 보호 정책이 적용되도록 해야 하며 프로그램 코딩 시 안전한 함수를 사용하고

메모리 사용시 경계 값을 검사하고 사용할 수 있도록 시큐어코딩 규칙을 정의하여 개발자들이 준수 할 수 있도록 한다.

 

   개발시 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 해야한다

-      메모리 버퍼오버플로우 취약성을 가지고 있는 함수들을 식별하여 개발자들이 해당 함수를 사용하지 않고 안전한 함수를 사용할 수 있도록 시큐어코딩

규칙을 정의하고 개발자가 준수할 수 있도록 한다

 

보안기능 입력값 검증

보안 대책

-      사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다

-      쿠키 환경변수 파라미터 등 외부 입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.

-      중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며 불가피하게 전송해야 하는 경우에는 해당 정보를 암호화해서 전송해야 한다

 

취약점 개요

-      보안 기능결정에 사용되는 부적절한 입력값

서버는 사용자가 전달하는 쿠키 환경변수 파라미터 등을 충분히 검증하지 않고 사용할 경우 공격자는 이에 포함된 사용자의 권한 역할 등을 나타내는 변수를

조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행한다

 

-      정수형 오버플로우

정수형 변수의 오버플로우는 정수 값이 증가하면서 허용된 가장 큰 값보다 더켜져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다

특히 반복문 제어 메모리 할당  메모리 복사등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제를 유발할 수 있다

-      Null Pointer 역참조

일반적으로 그 객체가 널(NULL)이 될 수 없다 라고 하는 가정을 위반했을 때 발생한다 공격자가 의도적으로 널 포이터 역참조를 발생시키는 경우 그결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다

설계 시 고려사항

사용자의 역할 권한을 결정하는 정보는 서버에서 관리해야 한다.

상태정보나 인증,인가,권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장해서 사용하도록 설계한다

 

쿠키 환경 변수 파라미터 등 외부입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계해야 하며, 만약 외부입력값(쿠키,환경변수,파라미터 등)을 받아서

수행해야하는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

 

특히 입력값에 대한 검증작업은 클라이언트 측에서 수행하는 검증방식과 서버에서 수행하는 검증방식이 동일해야 한다

또한 외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용해야 한다

 

중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 암호화해서 전송해야 한다

중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지 인증코드를 이용하여 서버 측에서 무결성을 검증

 

업로드 다운로드 파일 검증

보안대책

-      업로드 되어 저장되는 파일의 타입,크기 개수 실행권한을 제한해야 한다

-      업로드 되어 저장되는 파일은 외부에서 식별되지 않아야 한다

-      파일 다운로드 요청시 요청파일명에 대한 검증작업을 수행해야 한다

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

 

취약점 개요

위험한 형식 파일 업로드

-           서버 측에서 실행될 수 있는 스크립트 파일(asp,j,php 파일 등)을 업로드 가능하고 이 파일을 공격자가 웹으로 직접 실행시킬 수 있는 경우 시스템 내부

명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있게 된다.

 

-      경로조작 문자를 이용한 파일 다운로드 취약점

외부입력값에 대해 경로조작에 사용될 수 있는 문자를 필터링하지 않으면 예상 밖의 접근제한 영역에 대한 경로 문자열 구성이 가능해져 시스템정보 노출

 

-      무결성 검사 없는 코드 다운로드

원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고 이를 실행할 경우 호스트 서버의 변조 DNS 스프핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있게 된다

 

설계 시 고려사항

-      업로드 되어 저장되는 파일의 타입 크기 개수 실행권한을 제한해야 한다

(ㄱ) 업로드 파일의 크기 제한

업로드 되는 파일의 크기 제한은 프레임워크에서 설정할 수도 있고 프로그램에서 설정할 수도 있다

Spring 프레임워크를 사용하는 경우 MultipartResolvet 컴포넌트의 속성 값을 설정하여 업로드 파일의 크기를 제한할 수 있다.

 

(ㄴ)  파일의 타입 제한

업로드 되는 파일유형의 통제는 서버와 클라이언트가 동일한 정책을 적용하도록 설계해야 하며 파일의 MIME-TYPE과 확장자가 동시에 검사될 수 있도록

업로드 파일에 대한 필터링 기능을 수행하는 공통모듈을 설계하여 모든 파일 업로드 기능에 적용하거나 업로드 기능을 가진 컴포넌트에서 직접 필터링하도록

시큐어코딩 규칙을 정의한다

 

(ㄷ) 업로드 되어 저장되는 파일은 실행 권한 제거

업로드 된 파일은 받드시 실행권한을 가지지 않도록 시스템이 설정되어 있어야 한다. 업로드 된 파일이 저장되는 디렉토리의 파일 또는 디렉토리 생성 시 기본권한을 확인하고 업로드 된 파일에 실행 권한이 주어지지 않도록 시스템 설정을 확인한다 파일이 읽기 권한을 가지고 있기만 해도 서버에서 해당 파일을 읽어서 실행할 수 있으므로 서버 설정으로 업로드 경로의 파일이 실행되지 않도록 설정해야 한다

 

-      업로드 되어 저장되는 파이른 외부에서 식별되지 않아야 한다

(ㄱ) 업로드 되는 파일의 저장경로는 외부에서 직접 접근이 불가능한 경로사용

파일이 저장되는 경로는 URL으로 직접적으로 접근 가능하지 않은 디렉토리를 사용한다 이경우 외부에서 URL 조작으로 업로드 된 파일에 접근이 불가능하프로 업로드 되어 저장된 파일에 대한 통제가 가능하다 이렇게 업로드 된 파일을 다운로드 하기 위해서는 다운로드 처리를 수행하는 컨트롤러를 구현해야 하며 컨트롤러 구현 시 안전하게 파일을 다운로드 처리하기 위한 통제 기능을 적용할 수 있다

 

(ㄴ) 업로드 되어 저장되는 파일의 파일명은 랜덤하게 생성하여 사용

저장된 파일을 공격자가 찾을 수 없도록 파일명을 랜덤하게 생성하여 디렉토리에 저장한다 이경우 업로드 한 파일명과 저장된 파일명이 매핑 되어

관리 될 수 있도록 DB 테이블의 컬럼을 설계할 때 업로드 파일명 저장된 파일명이 함께 저장되도록 설계한다

-      파일 다운로드 요청 시 요청 파일명에 대한 검증작업을 수행해야 한다.

(ㄱ) 파일 다운로드를 위해 요청되는 파일명에 경로를 조작하는 문자가 포함되어 있는지 점검 파일명에

경로조작이 가능한 ‘..’,’/’,’\’ 문자는 제거하고 사용할 수 있도록 필터링한다

(ㄴ) 허가된 사용자의 허가된 안전한 파일에 대한 다운로드 요청인지 확인

파일 다운로드 요청 시 허가된 사용자와 파일인지를 확인하는 기능이 구현되도록 파일 다운로드 컴포넌트가 설계되어야 하며 파일을 다운로드하는 사용자의 안전을 위해

파일에 대한 악성코드 또는 바이러스 겈사를 수행한뒤 파일이 다운로드 되도록 기능을 설계한다

(ㄷ) 사용자의 요청에 의해 서버에 존재하는 파일이 참조되는 경우 화이트리스트 정책으로 접근통제

시스템에 저장되어 있는 파일을 다운로드 서비스 하는경우 허용 파일에 대한 목록을 작성하고 목록의 범위안의 파일에 대해서만 제한적으로 접근 또는 다운로드 할 수 있도록 설계한다

 

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

원격지에서 다운로드 받은 파일을 사용하거나 실행하는 기능을 궇ㄴ해야 하는 경우 해당 파일과 파일의 체크섬 값(해시 값 등)을 같이 다운로드 받아

파일에 대한 무결성 검사를 수행한 뒤 사용할 수 있도록 설계한다스택(Stack)이나 힙(Heap)에 할당되는 메모리에 문자열 등이 저장될 때 최초 정의된 메모리의 크기를 초과하여 문자열을 저장하는 경우 버퍼 오버플로우가 발생한다

 

포맷스트일 사입

공격자는 외부입력값에 포맷 문자열을 삽입하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그결과 공격자는 취약한 프로세스의 권한을 취득하여

임의의 코드를 실행 할 수 있다

 

설계 시 고려사항

C C++ 같이 메모리를 프로그래머가 관리하는 플랫폼을 사용하는 경우 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계 설정 또는 검사를 수행해야 한다

-      실행되는 시스템에 Non-excutable stack , 랜덤스택(ASLR), 스택가드(StackGuard)와 같은 메모리 보호 정책이 적용되도록 해야 하며 프로그램 코딩 시 안전한 함수를 사용하고

메모리 사용시 경계 값을 검사하고 사용할 수 있도록 시큐어코딩 규칙을 정의하여 개발자들이 준수 할 수 있도록 한다.

 

   개발시 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 해야한다

-      메모리 버퍼오버플로우 취약성을 가지고 있는 함수들을 식별하여 개발자들이 해당 함수를 사용하지 않고 안전한 함수를 사용할 수 있도록 시큐어코딩

규칙을 정의하고 개발자가 준수할 수 있도록 한다

 

보안기능 입력값 검증

보안 대책

-      사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다

-      쿠키 환경변수 파라미터 등 외부 입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.

-      중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며 불가피하게 전송해야 하는 경우에는 해당 정보를 암호화해서 전송해야 한다

 

취약점 개요

-      보안 기능결정에 사용되는 부적절한 입력값

서버는 사용자가 전달하는 쿠키 환경변수 파라미터 등을 충분히 검증하지 않고 사용할 경우 공격자는 이에 포함된 사용자의 권한 역할 등을 나타내는 변수를

조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행한다

 

 

-      정수형 오버플로우

정수형 변수의 오버플로우는 정수 값이 증가하면서 허용된 가장 큰 값보다 더켜져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다

특히 반복문 제어 메모리 할당  메모리 복사등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제를 유발할 수 있다

-      Null Pointer 역참조

일반적으로 그 객체가 널(NULL)이 될 수 없다 라고 하는 가정을 위반했을 때 발생한다 공격자가 의도적으로 널 포이터 역참조를 발생시키는 경우 그결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다

 

설계 시 고려사항

사용자의 역할 권한을 결정하는 정보는 서버에서 관리해야 한다.

상태정보나 인증,인가,권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장해서 사용하도록 설계한다

 

쿠키 환경 변수 파라미터 등 외부입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계해야 하며, 만약 외부입력값(쿠키,환경변수,파라미터 등)을 받아서

수행해야하는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

 

특히 입력값에 대한 검증작업은 클라이언트 측에서 수행하는 검증방식과 서버에서 수행하는 검증방식이 동일해야 한다

또한 외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용해야 한다

 

중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 암호화해서 전송해야 한다

중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지 인증코드를 이용하여 서버 측에서 무결성을 검증

 

업로드 다운로드 파일 검증

보안대책

-      업로드 되어 저장되는 파일의 타입,크기 개수 실행권한을 제한해야 한다

-      업로드 되어 저장되는 파일은 외부에서 식별되지 않아야 한다

-      파일 다운로드 요청시 요청파일명에 대한 검증작업을 수행해야 한다

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

 

취약점 개요

위험한 형식 파일 업로드

-           서버 측에서 실행될 수 있는 스크립트 파일(asp,j,php 파일 등)을 업로드 가능하고 이 파일을 공격자가 웹으로 직접 실행시킬 수 있는 경우 시스템 내부

명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있게 된다.

 

-      경로조작 문자를 이용한 파일 다운로드 취약점

외부입력값에 대해 경로조작에 사용될 수 있는 문자를 필터링하지 않으면 예상 밖의 접근제한 영역에 대한 경로 문자열 구성이 가능해져 시스템정보 노출

 

 

-      무결성 검사 없는 코드 다운로드

원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고 이를 실행할 경우 호스트 서버의 변조 DNS 스프핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있게 된다

 

설계 시 고려사항

-      업로드 되어 저장되는 파일의 타입 크기 개수 실행권한을 제한해야 한다

(ㄱ) 업로드 파일의 크기 제한

업로드 되는 파일의 크기 제한은 프레임워크에서 설정할 수도 있고 프로그램에서 설정할 수도 있다

Spring 프레임워크를 사용하는 경우 MultipartResolvet 컴포넌트의 속성 값을 설정하여 업로드 파일의 크기를 제한할 수 있다.

 

 

(ㄴ)  파일의 타입 제한

업로드 되는 파일유형의 통제는 서버와 클라이언트가 동일한 정책을 적용하도록 설계해야 하며 파일의 MIME-TYPE과 확장자가 동시에 검사될 수 있도록

업로드 파일에 대한 필터링 기능을 수행하는 공통모듈을 설계하여 모든 파일 업로드 기능에 적용하거나 업로드 기능을 가진 컴포넌트에서 직접 필터링하도록

시큐어코딩 규칙을 정의한다

 

(ㄷ) 업로드 되어 저장되는 파일은 실행 권한 제거

업로드 된 파일은 받드시 실행권한을 가지지 않도록 시스템이 설정되어 있어야 한다. 업로드 된 파일이 저장되는 디렉토리의 파일 또는 디렉토리 생성 시 기본권한을 확인하고 업로드 된 파일에 실행 권한이 주어지지 않도록 시스템 설정을 확인한다 파일이 읽기 권한을 가지고 있기만 해도 서버에서 해당 파일을 읽어서 실행할 수 있으므로 서버 설정으로 업로드 경로의 파일이 실행되지 않도록 설정해야 한다

 

-      업로드 되어 저장되는 파이른 외부에서 식별되지 않아야 한다

(ㄱ) 업로드 되는 파일의 저장경로는 외부에서 직접 접근이 불가능한 경로사용

파일이 저장되는 경로는 URL으로 직접적으로 접근 가능하지 않은 디렉토리를 사용한다 이경우 외부에서 URL 조작으로 업로드 된 파일에 접근이 불가능하프로 업로드 되어 저장된 파일에 대한 통제가 가능하다 이렇게 업로드 된 파일을 다운로드 하기 위해서는 다운로드 처리를 수행하는 컨트롤러를 구현해야 하며 컨트롤러 구현 시 안전하게 파일을 다운로드 처리하기 위한 통제 기능을 적용할 수 있다

 

(ㄴ) 업로드 되어 저장되는 파일의 파일명은 랜덤하게 생성하여 사용

저장된 파일을 공격자가 찾을 수 없도록 파일명을 랜덤하게 생성하여 디렉토리에 저장한다 이경우 업로드 한 파일명과 저장된 파일명이 매핑 되어

관리 될 수 있도록 DB 테이블의 컬럼을 설계할 때 업로드 파일명 저장된 파일명이 함께 저장되도록 설계한다

-      파일 다운로드 요청 시 요청 파일명에 대한 검증작업을 수행해야 한다.

(ㄱ) 파일 다운로드를 위해 요청되는 파일명에 경로를 조작하는 문자가 포함되어 있는지 점검 파일명에

경로조작이 가능한 ‘..’,’/’,’\’ 문자는 제거하고 사용할 수 있도록 필터링한다

(ㄴ) 허가된 사용자의 허가된 안전한 파일에 대한 다운로드 요청인지 확인

파일 다운로드 요청 시 허가된 사용자와 파일인지를 확인하는 기능이 구현되도록 파일 다운로드 컴포넌트가 설계되어야 하며 파일을 다운로드하는 사용자의 안전을 위해

파일에 대한 악성코드 또는 바이러스 겈사를 수행한뒤 파일이 다운로드 되도록 기능을 설계한다

(ㄷ) 사용자의 요청에 의해 서버에 존재하는 파일이 참조되는 경우 화이트리스트 정책으로 접근통제

시스템에 저장되어 있는 파일을 다운로드 서비스 하는경우 허용 파일에 대한 목록을 작성하고 목록의 범위안의 파일에 대해서만 제한적으로 접근 또는 다운로드 할 수 있도록 설계한다

 

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

원격지에서 다운로드 받은 파일을 사용하거나 실행하는 기능을 궇ㄴ해야 하는 경우 해당 파일과 파일의 체크섬 값(해시 값 등)을 같이 다운로드 받아

파일에 대한 무결성 검사를 수행한 뒤 사용할 수 있도록 설계한다 

포맷스트일 사입

공격자는 외부입력값에 포맷 문자열을 삽입하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그결과 공격자는 취약한 프로세스의 권한을 취득하여

임의의 코드를 실행 할 수 있다

 

설계 시 고려사항

C C++ 같이 메모리를 프로그래머가 관리하는 플랫폼을 사용하는 경우 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계 설정 또는 검사를 수행해야 한다

-      실행되는 시스템에 Non-excutable stack , 랜덤스택(ASLR), 스택가드(StackGuard)와 같은 메모리 보호 정책이 적용되도록 해야 하며 프로그램 코딩 시 안전한 함수를 사용하고

메모리 사용시 경계 값을 검사하고 사용할 수 있도록 시큐어코딩 규칙을 정의하여 개발자들이 준수 할 수 있도록 한다.

 

   개발시 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 해야한다

-      메모리 버퍼오버플로우 취약성을 가지고 있는 함수들을 식별하여 개발자들이 해당 함수를 사용하지 않고 안전한 함수를 사용할 수 있도록 시큐어코딩

규칙을 정의하고 개발자가 준수할 수 있도록 한다

 

보안기능 입력값 검증

보안 대책

-      사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다

-      쿠키 환경변수 파라미터 등 외부 입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.

-      중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며 불가피하게 전송해야 하는 경우에는 해당 정보를 암호화해서 전송해야 한다

 

취약점 개요

-      보안 기능결정에 사용되는 부적절한 입력값

서버는 사용자가 전달하는 쿠키 환경변수 파라미터 등을 충분히 검증하지 않고 사용할 경우 공격자는 이에 포함된 사용자의 권한 역할 등을 나타내는 변수를

조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행한다

 

 

-      정수형 오버플로우

정수형 변수의 오버플로우는 정수 값이 증가하면서 허용된 가장 큰 값보다 더켜져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다

특히 반복문 제어 메모리 할당  메모리 복사등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제를 유발할 수 있다

-      Null Pointer 역참조

일반적으로 그 객체가 널(NULL)이 될 수 없다 라고 하는 가정을 위반했을 때 발생한다 공격자가 의도적으로 널 포이터 역참조를 발생시키는 경우 그결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다

 

설계 시 고려사항

사용자의 역할 권한을 결정하는 정보는 서버에서 관리해야 한다.

상태정보나 인증,인가,권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장해서 사용하도록 설계한다

 

쿠키 환경 변수 파라미터 등 외부입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계해야 하며, 만약 외부입력값(쿠키,환경변수,파라미터 등)을 받아서

수행해야하는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

 

특히 입력값에 대한 검증작업은 클라이언트 측에서 수행하는 검증방식과 서버에서 수행하는 검증방식이 동일해야 한다

또한 외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용해야 한다

 

중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 암호화해서 전송해야 한다

중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지 인증코드를 이용하여 서버 측에서 무결성을 검증

 

업로드 다운로드 파일 검증

보안대책

-      업로드 되어 저장되는 파일의 타입,크기 개수 실행권한을 제한해야 한다

-      업로드 되어 저장되는 파일은 외부에서 식별되지 않아야 한다

-      파일 다운로드 요청시 요청파일명에 대한 검증작업을 수행해야 한다

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

 

취약점 개요

위험한 형식 파일 업로드

-           서버 측에서 실행될 수 있는 스크립트 파일(asp,j,php 파일 등)을 업로드 가능하고 이 파일을 공격자가 웹으로 직접 실행시킬 수 있는 경우 시스템 내부

명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있게 된다.

 

-      경로조작 문자를 이용한 파일 다운로드 취약점

외부입력값에 대해 경로조작에 사용될 수 있는 문자를 필터링하지 않으면 예상 밖의 접근제한 영역에 대한 경로 문자열 구성이 가능해져 시스템정보 노출

 

 

-      무결성 검사 없는 코드 다운로드

원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고 이를 실행할 경우 호스트 서버의 변조 DNS 스프핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있게 된다

 

설계 시 고려사항

-      업로드 되어 저장되는 파일의 타입 크기 개수 실행권한을 제한해야 한다

(ㄱ) 업로드 파일의 크기 제한

업로드 되는 파일의 크기 제한은 프레임워크에서 설정할 수도 있고 프로그램에서 설정할 수도 있다

Spring 프레임워크를 사용하는 경우 MultipartResolvet 컴포넌트의 속성 값을 설정하여 업로드 파일의 크기를 제한할 수 있다.

 

 

(ㄴ)  파일의 타입 제한

업로드 되는 파일유형의 통제는 서버와 클라이언트가 동일한 정책을 적용하도록 설계해야 하며 파일의 MIME-TYPE과 확장자가 동시에 검사될 수 있도록

업로드 파일에 대한 필터링 기능을 수행하는 공통모듈을 설계하여 모든 파일 업로드 기능에 적용하거나 업로드 기능을 가진 컴포넌트에서 직접 필터링하도록

시큐어코딩 규칙을 정의한다

 

(ㄷ) 업로드 되어 저장되는 파일은 실행 권한 제거

업로드 된 파일은 받드시 실행권한을 가지지 않도록 시스템이 설정되어 있어야 한다. 업로드 된 파일이 저장되는 디렉토리의 파일 또는 디렉토리 생성 시 기본권한을 확인하고 업로드 된 파일에 실행 권한이 주어지지 않도록 시스템 설정을 확인한다 파일이 읽기 권한을 가지고 있기만 해도 서버에서 해당 파일을 읽어서 실행할 수 있으므로 서버 설정으로 업로드 경로의 파일이 실행되지 않도록 설정해야 한다

 

-      업로드 되어 저장되는 파이른 외부에서 식별되지 않아야 한다

(ㄱ) 업로드 되는 파일의 저장경로는 외부에서 직접 접근이 불가능한 경로사용

파일이 저장되는 경로는 URL으로 직접적으로 접근 가능하지 않은 디렉토리를 사용한다 이경우 외부에서 URL 조작으로 업로드 된 파일에 접근이 불가능하프로 업로드 되어 저장된 파일에 대한 통제가 가능하다 이렇게 업로드 된 파일을 다운로드 하기 위해서는 다운로드 처리를 수행하는 컨트롤러를 구현해야 하며 컨트롤러 구현 시 안전하게 파일을 다운로드 처리하기 위한 통제 기능을 적용할 수 있다

 

(ㄴ) 업로드 되어 저장되는 파일의 파일명은 랜덤하게 생성하여 사용

저장된 파일을 공격자가 찾을 수 없도록 파일명을 랜덤하게 생성하여 디렉토리에 저장한다 이경우 업로드 한 파일명과 저장된 파일명이 매핑 되어

관리 될 수 있도록 DB 테이블의 컬럼을 설계할 때 업로드 파일명 저장된 파일명이 함께 저장되도록 설계한다

-      파일 다운로드 요청 시 요청 파일명에 대한 검증작업을 수행해야 한다.

(ㄱ) 파일 다운로드를 위해 요청되는 파일명에 경로를 조작하는 문자가 포함되어 있는지 점검 파일명에

경로조작이 가능한 ‘..’,’/’,’\’ 문자는 제거하고 사용할 수 있도록 필터링한다

(ㄴ) 허가된 사용자의 허가된 안전한 파일에 대한 다운로드 요청인지 확인

파일 다운로드 요청 시 허가된 사용자와 파일인지를 확인하는 기능이 구현되도록 파일 다운로드 컴포넌트가 설계되어야 하며 파일을 다운로드하는 사용자의 안전을 위해

파일에 대한 악성코드 또는 바이러스 겈사를 수행한뒤 파일이 다운로드 되도록 기능을 설계한다

(ㄷ) 사용자의 요청에 의해 서버에 존재하는 파일이 참조되는 경우 화이트리스트 정책으로 접근통제

시스템에 저장되어 있는 파일을 다운로드 서비스 하는경우 허용 파일에 대한 목록을 작성하고 목록의 범위안의 파일에 대해서만 제한적으로 접근 또는 다운로드 할 수 있도록 설계한다

 

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

원격지에서 다운로드 받은 파일을 사용하거나 실행하는 기능을 궇ㄴ해야 하는 경우 해당 파일과 파일의 체크섬 값(해시 값 등)을 같이 다운로드 받아

파일에 대한 무결성 검사를 수행한 뒤 사용할 수 있도록 설계한다포맷스트일 사입

공격자는 외부입력값에 포맷 문자열을 삽입하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그결과 공격자는 취약한 프로세스의 권한을 취득하여

임의의 코드를 실행 할 수 있다

 

설계 시 고려사항

C C++ 같이 메모리를 프로그래머가 관리하는 플랫폼을 사용하는 경우 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계 설정 또는 검사를 수행해야 한다

-      실행되는 시스템에 Non-excutable stack , 랜덤스택(ASLR), 스택가드(StackGuard)와 같은 메모리 보호 정책이 적용되도록 해야 하며 프로그램 코딩 시 안전한 함수를 사용하고

메모리 사용시 경계 값을 검사하고 사용할 수 있도록 시큐어코딩 규칙을 정의하여 개발자들이 준수 할 수 있도록 한다.

 

   개발시 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 해야한다

-      메모리 버퍼오버플로우 취약성을 가지고 있는 함수들을 식별하여 개발자들이 해당 함수를 사용하지 않고 안전한 함수를 사용할 수 있도록 시큐어코딩

규칙을 정의하고 개발자가 준수할 수 있도록 한다

 

보안기능 입력값 검증

보안 대책

-      사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다

-      쿠키 환경변수 파라미터 등 외부 입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.

-      중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며 불가피하게 전송해야 하는 경우에는 해당 정보를 암호화해서 전송해야 한다

 

취약점 개요

-      보안 기능결정에 사용되는 부적절한 입력값

서버는 사용자가 전달하는 쿠키 환경변수 파라미터 등을 충분히 검증하지 않고 사용할 경우 공격자는 이에 포함된 사용자의 권한 역할 등을 나타내는 변수를

조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행한다

 

 

-      정수형 오버플로우

정수형 변수의 오버플로우는 정수 값이 증가하면서 허용된 가장 큰 값보다 더켜져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다

특히 반복문 제어 메모리 할당  메모리 복사등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제를 유발할 수 있다

-      Null Pointer 역참조

일반적으로 그 객체가 널(NULL)이 될 수 없다 라고 하는 가정을 위반했을 때 발생한다 공격자가 의도적으로 널 포이터 역참조를 발생시키는 경우 그결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다

 

설계 시 고려사항

사용자의 역할 권한을 결정하는 정보는 서버에서 관리해야 한다.

상태정보나 인증,인가,권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장해서 사용하도록 설계한다

 

쿠키 환경 변수 파라미터 등 외부입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계해야 하며, 만약 외부입력값(쿠키,환경변수,파라미터 등)을 받아서

수행해야하는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

 

특히 입력값에 대한 검증작업은 클라이언트 측에서 수행하는 검증방식과 서버에서 수행하는 검증방식이 동일해야 한다

또한 외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용해야 한다

 

중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 암호화해서 전송해야 한다

중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지 인증코드를 이용하여 서버 측에서 무결성을 검증

 

업로드 다운로드 파일 검증

보안대책

-      업로드 되어 저장되는 파일의 타입,크기 개수 실행권한을 제한해야 한다

-      업로드 되어 저장되는 파일은 외부에서 식별되지 않아야 한다

-      파일 다운로드 요청시 요청파일명에 대한 검증작업을 수행해야 한다

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

 

취약점 개요

위험한 형식 파일 업로드

-           서버 측에서 실행될 수 있는 스크립트 파일(asp,j,php 파일 등)을 업로드 가능하고 이 파일을 공격자가 웹으로 직접 실행시킬 수 있는 경우 시스템 내부

명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있게 된다.

 

-      경로조작 문자를 이용한 파일 다운로드 취약점

외부입력값에 대해 경로조작에 사용될 수 있는 문자를 필터링하지 않으면 예상 밖의 접근제한 영역에 대한 경로 문자열 구성이 가능해져 시스템정보 노출

 

 

-      무결성 검사 없는 코드 다운로드

원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고 이를 실행할 경우 호스트 서버의 변조 DNS 스프핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있게 된다

 

설계 시 고려사항

-      업로드 되어 저장되는 파일의 타입 크기 개수 실행권한을 제한해야 한다

(ㄱ) 업로드 파일의 크기 제한

업로드 되는 파일의 크기 제한은 프레임워크에서 설정할 수도 있고 프로그램에서 설정할 수도 있다

Spring 프레임워크를 사용하는 경우 MultipartResolvet 컴포넌트의 속성 값을 설정하여 업로드 파일의 크기를 제한할 수 있다.

 

 

(ㄴ)  파일의 타입 제한

업로드 되는 파일유형의 통제는 서버와 클라이언트가 동일한 정책을 적용하도록 설계해야 하며 파일의 MIME-TYPE과 확장자가 동시에 검사될 수 있도록

업로드 파일에 대한 필터링 기능을 수행하는 공통모듈을 설계하여 모든 파일 업로드 기능에 적용하거나 업로드 기능을 가진 컴포넌트에서 직접 필터링하도록

시큐어코딩 규칙을 정의한다

 

(ㄷ) 업로드 되어 저장되는 파일은 실행 권한 제거

업로드 된 파일은 받드시 실행권한을 가지지 않도록 시스템이 설정되어 있어야 한다. 업로드 된 파일이 저장되는 디렉토리의 파일 또는 디렉토리 생성 시 기본권한을 확인하고 업로드 된 파일에 실행 권한이 주어지지 않도록 시스템 설정을 확인한다 파일이 읽기 권한을 가지고 있기만 해도 서버에서 해당 파일을 읽어서 실행할 수 있으므로 서버 설정으로 업로드 경로의 파일이 실행되지 않도록 설정해야 한다

 

-      업로드 되어 저장되는 파이른 외부에서 식별되지 않아야 한다

(ㄱ) 업로드 되는 파일의 저장경로는 외부에서 직접 접근이 불가능한 경로사용

파일이 저장되는 경로는 URL으로 직접적으로 접근 가능하지 않은 디렉토리를 사용한다 이경우 외부에서 URL 조작으로 업로드 된 파일에 접근이 불가능하프로 업로드 되어 저장된 파일에 대한 통제가 가능하다 이렇게 업로드 된 파일을 다운로드 하기 위해서는 다운로드 처리를 수행하는 컨트롤러를 구현해야 하며 컨트롤러 구현 시 안전하게 파일을 다운로드 처리하기 위한 통제 기능을 적용할 수 있다

 

(ㄴ) 업로드 되어 저장되는 파일의 파일명은 랜덤하게 생성하여 사용

저장된 파일을 공격자가 찾을 수 없도록 파일명을 랜덤하게 생성하여 디렉토리에 저장한다 이경우 업로드 한 파일명과 저장된 파일명이 매핑 되어

관리 될 수 있도록 DB 테이블의 컬럼을 설계할 때 업로드 파일명 저장된 파일명이 함께 저장되도록 설계한다

-      파일 다운로드 요청 시 요청 파일명에 대한 검증작업을 수행해야 한다.

(ㄱ) 파일 다운로드를 위해 요청되는 파일명에 경로를 조작하는 문자가 포함되어 있는지 점검 파일명에

경로조작이 가능한 ‘..’,’/’,’\’ 문자는 제거하고 사용할 수 있도록 필터링한다

(ㄴ) 허가된 사용자의 허가된 안전한 파일에 대한 다운로드 요청인지 확인

파일 다운로드 요청 시 허가된 사용자와 파일인지를 확인하는 기능이 구현되도록 파일 다운로드 컴포넌트가 설계되어야 하며 파일을 다운로드하는 사용자의 안전을 위해

파일에 대한 악성코드 또는 바이러스 겈사를 수행한뒤 파일이 다운로드 되도록 기능을 설계한다

(ㄷ) 사용자의 요청에 의해 서버에 존재하는 파일이 참조되는 경우 화이트리스트 정책으로 접근통제

시스템에 저장되어 있는 파일을 다운로드 서비스 하는경우 허용 파일에 대한 목록을 작성하고 목록의 범위안의 파일에 대해서만 제한적으로 접근 또는 다운로드 할 수 있도록 설계한다

 

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

원격지에서 다운로드 받은 파일을 사용하거나 실행하는 기능을 궇ㄴ해야 하는 경우 해당 파일과 파일의 체크섬 값(해시 값 등)을 같이 다운로드 받아

파일에 대한 무결성 검사를 수행한 뒤 사용할 수 있도록 설계한다공격자는 외부입력값에 포맷 문자열을 삽입하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그결과 공격자는 취약한 프로세스의 권한을 취득하여

임의의 코드를 실행 할 수 있다

 

설계 시 고려사항

C C++ 같이 메모리를 프로그래머가 관리하는 플랫폼을 사용하는 경우 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계 설정 또는 검사를 수행해야 한다

-      실행되는 시스템에 Non-excutable stack , 랜덤스택(ASLR), 스택가드(StackGuard)와 같은 메모리 보호 정책이 적용되도록 해야 하며 프로그램 코딩 시 안전한 함수를 사용하고

메모리 사용시 경계 값을 검사하고 사용할 수 있도록 시큐어코딩 규칙을 정의하여 개발자들이 준수 할 수 있도록 한다.

 

   개발시 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 해야한다

-      메모리 버퍼오버플로우 취약성을 가지고 있는 함수들을 식별하여 개발자들이 해당 함수를 사용하지 않고 안전한 함수를 사용할 수 있도록 시큐어코딩

규칙을 정의하고 개발자가 준수할 수 있도록 한다

 

보안기능 입력값 검증

보안 대책

-      사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다

-      쿠키 환경변수 파라미터 등 외부 입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.

-      중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며 불가피하게 전송해야 하는 경우에는 해당 정보를 암호화해서 전송해야 한다

 

취약점 개요

-      보안 기능결정에 사용되는 부적절한 입력값

서버는 사용자가 전달하는 쿠키 환경변수 파라미터 등을 충분히 검증하지 않고 사용할 경우 공격자는 이에 포함된 사용자의 권한 역할 등을 나타내는 변수를

조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행한다

 

 

-      정수형 오버플로우

정수형 변수의 오버플로우는 정수 값이 증가하면서 허용된 가장 큰 값보다 더켜져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다

특히 반복문 제어 메모리 할당  메모리 복사등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제를 유발할 수 있다

-      Null Pointer 역참조

일반적으로 그 객체가 널(NULL)이 될 수 없다 라고 하는 가정을 위반했을 때 발생한다 공격자가 의도적으로 널 포이터 역참조를 발생시키는 경우 그결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다

 

설계 시 고려사항

사용자의 역할 권한을 결정하는 정보는 서버에서 관리해야 한다.

상태정보나 인증,인가,권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장해서 사용하도록 설계한다

 

쿠키 환경 변수 파라미터 등 외부입력값이 보안기능을 수행하는 함수의 인자로 사용되는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계해야 하며, 만약 외부입력값(쿠키,환경변수,파라미터 등)을 받아서

수행해야하는 경우 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다

 

특히 입력값에 대한 검증작업은 클라이언트 측에서 수행하는 검증방식과 서버에서 수행하는 검증방식이 동일해야 한다

또한 외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용해야 한다

 

중요상태정보나 인증 권한결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 암호화해서 전송해야 한다

중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지 인증코드를 이용하여 서버 측에서 무결성을 검증

 

업로드 다운로드 파일 검증

보안대책

-      업로드 되어 저장되는 파일의 타입,크기 개수 실행권한을 제한해야 한다

-      업로드 되어 저장되는 파일은 외부에서 식별되지 않아야 한다

-      파일 다운로드 요청시 요청파일명에 대한 검증작업을 수행해야 한다

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

 

취약점 개요

위험한 형식 파일 업로드

-           서버 측에서 실행될 수 있는 스크립트 파일(asp,j,php 파일 등)을 업로드 가능하고 이 파일을 공격자가 웹으로 직접 실행시킬 수 있는 경우 시스템 내부

명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있게 된다.

 

-      경로조작 문자를 이용한 파일 다운로드 취약점

외부입력값에 대해 경로조작에 사용될 수 있는 문자를 필터링하지 않으면 예상 밖의 접근제한 영역에 대한 경로 문자열 구성이 가능해져 시스템정보 노출

 

 

-      무결성 검사 없는 코드 다운로드

원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고 이를 실행할 경우 호스트 서버의 변조 DNS 스프핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있게 된다

 

설계 시 고려사항

-      업로드 되어 저장되는 파일의 타입 크기 개수 실행권한을 제한해야 한다

(ㄱ) 업로드 파일의 크기 제한

업로드 되는 파일의 크기 제한은 프레임워크에서 설정할 수도 있고 프로그램에서 설정할 수도 있다

Spring 프레임워크를 사용하는 경우 MultipartResolvet 컴포넌트의 속성 값을 설정하여 업로드 파일의 크기를 제한할 수 있다.

 

 

(ㄴ)  파일의 타입 제한

업로드 되는 파일유형의 통제는 서버와 클라이언트가 동일한 정책을 적용하도록 설계해야 하며 파일의 MIME-TYPE과 확장자가 동시에 검사될 수 있도록

업로드 파일에 대한 필터링 기능을 수행하는 공통모듈을 설계하여 모든 파일 업로드 기능에 적용하거나 업로드 기능을 가진 컴포넌트에서 직접 필터링하도록

시큐어코딩 규칙을 정의한다

 

(ㄷ) 업로드 되어 저장되는 파일은 실행 권한 제거

업로드 된 파일은 받드시 실행권한을 가지지 않도록 시스템이 설정되어 있어야 한다. 업로드 된 파일이 저장되는 디렉토리의 파일 또는 디렉토리 생성 시 기본권한을 확인하고 업로드 된 파일에 실행 권한이 주어지지 않도록 시스템 설정을 확인한다 파일이 읽기 권한을 가지고 있기만 해도 서버에서 해당 파일을 읽어서 실행할 수 있으므로 서버 설정으로 업로드 경로의 파일이 실행되지 않도록 설정해야 한다

 

-      업로드 되어 저장되는 파이른 외부에서 식별되지 않아야 한다

(ㄱ) 업로드 되는 파일의 저장경로는 외부에서 직접 접근이 불가능한 경로사용

파일이 저장되는 경로는 URL으로 직접적으로 접근 가능하지 않은 디렉토리를 사용한다 이경우 외부에서 URL 조작으로 업로드 된 파일에 접근이 불가능하프로 업로드 되어 저장된 파일에 대한 통제가 가능하다 이렇게 업로드 된 파일을 다운로드 하기 위해서는 다운로드 처리를 수행하는 컨트롤러를 구현해야 하며 컨트롤러 구현 시 안전하게 파일을 다운로드 처리하기 위한 통제 기능을 적용할 수 있다

 

(ㄴ) 업로드 되어 저장되는 파일의 파일명은 랜덤하게 생성하여 사용

저장된 파일을 공격자가 찾을 수 없도록 파일명을 랜덤하게 생성하여 디렉토리에 저장한다 이경우 업로드 한 파일명과 저장된 파일명이 매핑 되어

관리 될 수 있도록 DB 테이블의 컬럼을 설계할 때 업로드 파일명 저장된 파일명이 함께 저장되도록 설계한다

-      파일 다운로드 요청 시 요청 파일명에 대한 검증작업을 수행해야 한다.

(ㄱ) 파일 다운로드를 위해 요청되는 파일명에 경로를 조작하는 문자가 포함되어 있는지 점검 파일명에

경로조작이 가능한 ‘..’,’/’,’\’ 문자는 제거하고 사용할 수 있도록 필터링한다

(ㄴ) 허가된 사용자의 허가된 안전한 파일에 대한 다운로드 요청인지 확인

파일 다운로드 요청 시 허가된 사용자와 파일인지를 확인하는 기능이 구현되도록 파일 다운로드 컴포넌트가 설계되어야 하며 파일을 다운로드하는 사용자의 안전을 위해

파일에 대한 악성코드 또는 바이러스 겈사를 수행한뒤 파일이 다운로드 되도록 기능을 설계한다

(ㄷ) 사용자의 요청에 의해 서버에 존재하는 파일이 참조되는 경우 화이트리스트 정책으로 접근통제

시스템에 저장되어 있는 파일을 다운로드 서비스 하는경우 허용 파일에 대한 목록을 작성하고 목록의 범위안의 파일에 대해서만 제한적으로 접근 또는 다운로드 할 수 있도록 설계한다

 

-      다운로드 받은 소스코드나 실행파일은 무결성 검사를 실행해야 한다

원격지에서 다운로드 받은 파일을 사용하거나 실행하는 기능을 궇ㄴ해야 하는 경우 해당 파일과 파일의 체크섬 값(해시 값 등)을 같이 다운로드 받아

파일에 대한 무결성 검사를 수행한 뒤 사용할 수 있도록 설계한다

'보안' 카테고리의 다른 글

보안 DBMS 조회 및 결과 검증 20220811  (0) 2022.08.11
보안 HTTP 프로토콜 유효성 검증 20220811  (0) 2022.08.11
보안기능 20220811  (0) 2022.08.11
보안 기능 20220811  (0) 2022.08.11
보안 02 입력 데이터 검증 및 표횬  (0) 2022.07.15

관련글 더보기

댓글 영역