티스토리 뷰

반응형

 

 

 

가. 취약점 개요

  - 쿠키, 환경변수, 히든필드값을 검증없이 사용하여 사용자 권한, 역할을 나타내는 변수를 조작을 통해 권한상승을 유발하는 취약점

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

 

  - 정수형 변수가 허용된 가장 큰 값보다 더 커져서 실제 저장 값이 아주 작은 수이거나 음수로 만들어, 반복문 제어, 메모리 할당 및 복사 등의 조건으로 사용될 때 오버플로우를 유도할 수 있는 취약점

   → 정수형 오버플로우

 

  - 참조하는 객체가 NULL인 경우 발생하는 예외상황을  이용하여 추후 공격을 계획할 수 있는 취약점

   → NULL Pointer 역참조

 

 

나. 요구사항

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

2. 보안기능을 수행하는 함수의 인자에 대한 검증작업 수행 후 제한적으로 사용

3. 쿠키를 통해 중요정보, 인증, 권한 결정에 사용되는 정보를 전송 금지

 

 

다. 요구사항 별 고려사항

1. 사용자 역할, 권한을 결정하는 정보는 서버에서 관리

  - 상태정보, 인증, 인가, 권한에 관련된 중요정보는 서버측 세션이나 DB에 저장 후 사용

 

2. 보안기능을 수행하는 함수의 인자에 대한 검증작업 수행 후 제한적으로 사용

  - 보안기능이 외부 입력값에 의존할 필요가 없는 구조로 설계

  - 외부 입력값을 사용해야 할 경우, 입력값을 검증 후 제한적으로 사용

  - 외부 입력값을 사용하기 전 NULL 여부를 검증 후 사용

 

3. 쿠키를 통해 중요정보, 인증, 권한 결정에 사용되는 정보를 전송 금지

  - 반드시 쿠키를 통해 전송해야 할 경우 쿠키를 암호화 하여 전송

  - HMAC과 같은 메시지 인증코드를 이용하여 무결성 검증

 

라. 요구사항 별 진단기준 및 방법

0. 공통내용

  - 요구사항 정의서에 보안요구항목에 대한 대책이 수립

  - 아키텍쳐 설계서에 보안요구항목 적용계획이 수립

  - 요구사항 추적표를 통해 요구사항 추적가능 여부

 

1. 사용자 역할, 권한을 결정하는 정보는 서버에서 관리

  - 사용자에 대한 역할(일반사용자, 관리자, 최고관리자 등)을 구분하는지 확인

  - 각 역할에 대한 권한을 구분하는지 확인

  - 사용자의 역할과 권한을 정의하여 저장할 수 있도록 데이터베이스를 설계하였는지 확인

  - 사용자의 역할과 권한을 검증하는 정보가 DB 또는 세션에 저장되도록 설계하였는지 확인

 

2. 보안기능을 수행하는 함수의 인자에 대한 검증작업 수행 후 제한적으로 사용

  - 보안기능에 수행에 사용되는 값의 종류, 출처, 의미 등을 정의하였는지 확인

  - 보안기능 수행에 외부입력값을 사용해야 하는 타당한 근거 및 사유가 명시되었는지 확인

  - 외부입력값에 대해 NULL 검사를 수행하는지 확인

  - 외부입력값이 값의 범위를 넘어서는지 점검 후 사용하는지 확인

 

3. 쿠키를 통해 중요정보, 인증, 권한 결정에 사용되는 정보를 전송 금지

  - 쿠키에 포함될 정보의 이름, 값, 의미, 유효시간 등을 정의하는지 확인

  - 쿠키에 중요정보가 포함되어야 하는 타당한 근거 및 사유를 명시되었는지 확인

  - 쿠키로 중요정보가 포함될 경우 암호화 처리방식이 설계되었는지 확인

  - 쿠키 설정 시 암호화 통신채널을 통해서만 쿠키가 전송되도록 쿠키속성을 설정하였는지 확인

  - 안전한 암호화 알고리즘을 사용하여 중요정보를 전송하는지 확인

  - 쿠키값을 통해 전달한 중요정보의 무결섬을 검사하는지 확인

 

 

마. 진단기준

1. 사용자 역할, 권한을 결정하는 정보는 서버에서 관리

  - 사용자 역할, 권한 결정을 서버에서 관리하는 정보를 이용하여 서버에서 처리하도록 설계되었는지 확인

  - 인증우회 및 권한상승이 가능한지 점검하는 테스트 계획 확인

 

2. 보안기능을 수행하는 함수의 인자에 대한 검증작업 수행 후 제한적으로 사용

  - 보안기능 수행에 사용되는 입력값이 안전하게 사용되도록 설계되었는지 확인

  - 외부 입력값 조작을 통한 보안기능 인증 우회여부를 점검하는 테스트 계획 확인

 

3. 쿠키를 통해 중요정보, 인증, 권한 결정에 사용되는 정보를 전송 금즈

  - 쿠키를 통해 전달되는 정보가 분류되어 있는지 확인

  - 불가피하게 쿠키를 통해 전송되는 중요정보가 안전하게 전달될 수 있도록 설계되었는지 확인

  - 쿠키 조작을 통해 중요정보 탈취 및 변조 여부를 검증하는 테스트 계획 확인

 

 

바. 안전한 보안설계 예

No 요구사항 명 해결방안 검수기준
1 중요정보는 서버측의 세션이나 DB에 저장해서 사용 처리에 필요한 중요정보를 식별하고, 서버 세션으로 관리한다. 중요정보는 서버 세션의 값을 활용하고 사용자 입력은 사용하지 않는다.
2 외부 입력값은 검증 후 제한적으로 보안기능 구현에 사용 사용자 입력에 의존해야 하는 값인지를 확인하고, 외부 입력에 의존해야 하는 값인 경우에는 충분한 검증과정과 함께 구현한다. 중요기능 처리에 사용되는 입력값에 대한 검증 기능이 구현되어 있다.
3 중요정보 포함된 쿠키 암호화 중요정보가 포함된 쿠키는 암호화하고 HttpOnly 속성을 활성화하여 브라우저로 내려 보낸다. 중요정보가 포함된 쿠키가 암호화 되고, HTTPS 통신을 할때만 서버로 전송된다.

 

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday