보안기능(인증, 권한부여 등) 입력값과 함수(또는 메소드)의 외부입력 값 및 수행결과에 대한 유효성 검증방법과 유효하지 않은 값에 대한 처리방법을 설계해야 한다.
(입력데이터 검증 및 표현) 보안기능 결정에 사용되는 부적절한 입력값
(입력데이터 검증 및 표현) 정수형 오버플로우
(코드오류) Null Pointer 역참조
OO사의 OO 제품군 유무선 공유기에서 관리자 인증을 우회할 수 있는 취약점이 발견되어 사용자들의 주의 필요
이 취약점은 관리자 암호가 설정되더라도 쿠키 값을 변조해 공유기의 관리자 설정 페이지로 접속 가능
① 사용자의 역할, 권한을 결정하는 정보는 서버에서 관리
② 외부 입력값(쿠키, 환경변수, 파라미터 등)이 보안기능을 수행하는 함수의 인자로 사용되는 경우, 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용
③ 중요상태정보나 인증, 권한결정에 사용되는 정보는 쿠키로 전송 제한, 불가피하게 전송 시 해당 정보를 암호화해서 전송
① 상태정보나 인증, 인가, 권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장 사용
② 보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계
만약 외부입력값(쿠키, 환경변수, 파라미터 등)을 받아서 수행 시, 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.
입력값에 대한 검증작업은 클라이언트 측과 서버에서 수행하는 검증방식이 동일해야 함
외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용
③ 중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지인증코드를 이용하여 서버 측에서 무결성을 검증.
공격자는 이에 포함된 사용자의 권한, 역할 등을 나타내는 변수를 조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행
정수 값이 증가하면서, 허용된 가장 큰 값보다 더 커져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생
반복문 제어, 메모리할당, 메모리 복사 등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제 유발
일반적으로 ‘그 객체가 널(Null)이 될 수 없다’라고 하는 가정을 위반했을 때 발생
공격자가 의도적으로 널 포인터 역참조를 발생시키는 경우, 그 결과 발생하는 예외 상황을 이용
추후 공격을 계획하는 데 사용