티스토리 뷰
가. 취약점 개요
- 쿠키, 환경변수, 히든필드값을 검증없이 사용하여 사용자 권한, 역할을 나타내는 변수를 조작을 통해 권한상승을 유발하는 취약점
→ 보안기능 결정에 사용되는 부적절한 입력값
- 정수형 변수가 허용된 가장 큰 값보다 더 커져서 실제 저장 값이 아주 작은 수이거나 음수로 만들어, 반복문 제어, 메모리 할당 및 복사 등의 조건으로 사용될 때 오버플로우를 유도할 수 있는 취약점
→ 정수형 오버플로우
- 참조하는 객체가 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 통신을 할때만 서버로 전송된다. |
'Web Analytics > SW 보안약점 진단원' 카테고리의 다른 글
[설계보안] 보안기능 01 - 인증 대상 및 방식 (0) | 2019.09.23 |
---|---|
[설계보안] 입력데이터 검증 및 표현 10 - 업로드/다운로드 파일 검증 (0) | 2019.09.23 |
[설계보안] 입력데이터 검증 및 표현 08 - 허용된 범위내 메모리 접근 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 07 - HTTP 프로토콜 유효성 검증 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 06 - 웹 기반 중요기능 수행요청 유효성 검증 (0) | 2019.09.22 |
- Total
- Today
- Yesterday