시큐어코딩
- home
- 보안소식
- 시큐어코딩
17. [보안 기능] 부적절한 인가
2019.04.30 10:01
부적절한 인가는 행정안전부에서 발표한 '소프트웨어 개발보안 가이드'에 속해있는 주요 항목입니다. 분석, 설계 단계의 보안 요구항목에서는 '보안 기능'의 '중요 자원 접근 통제'라는 항목으로, 구현 단계 보안약점에서는 '보안 기능'의 '부적절한 인가'라는 항목으로 명시가 되어있습니다.
#부적절한 인가란?
부적절한 인가란, 프로그램이 모든 가능한 실행 경로에 대해서 접근제어를 검사하지 않거나 불완전하게 검사하는 경우 발생하는 보안약점으로, 공격자가 접근 가능한 실행 경로를 통해 정보를 유출할 수 있습니다.
위 소스코드는 요청 패킷으로부터 action이라는 파라미터를 받아와 action의 값이 delete 일 경우 삭제 작업을 수행하는 소스코드입니다. 4번째 줄에서는 action의 null 체크 및 값이 delete 인지 확인만 할 뿐 요청한 사용자가 삭제 작업을 수행할 적절한 권한이 있는지는 확인하지 않고 있습니다. 요청한 사용자에 대한 적절한 인가정책을 세우지 않으면 공격자가 자신에게 허용된 권한보다 더 많은 기능을 수행할 수 있기 때문에 주의하여야 합니다.
위 소스코드에서는 doSomething 메서드를 실행할 때 세션을 가져와서 세션에 저장된 사용자의 정보를 불러온 후, 8번째 줄에서 사용자가 delete에 대한 작업 권한이 있는지 확인 후 권한이 있는 경우에만 삭제 작업을 수행하고 있습니다.
#부적절한 인가를 막기 위한 보안 대책은?
부적절한 인가를 방어하기 위한 대책은 소프트웨어 개발 생명 주기에 따라 크게 두 가지로 나눌 수 있습니다.