ice rabbit programming

[보안] 접근제어 본문

Development/Secutiry

[보안] 접근제어

판교토끼 2021. 12. 19. 20:11

(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.)


파라미터 변조의 개념과 취약점

  • 파라미터는 클라이언트에서 서버로 작업을 요청할 때 <어떠한 데이터에 대한 어떠한 작업>이라는 것을 정의하기 위해 전달하는 변수 값
  • 이미 정해진 값이거나 입력된 값
  • 서버 측에서 사용자가 전송하는 파라미터 값에 대한 검증이 없으면, 허가되지 않은 작업이 수행될 수 있음

이전 글에서 다루었던 것들을 비롯하여, 실제 코드가 실행될 때 파라미터를 대입하여 실행하게 되는데, 이 때 잘못된 정보를 가진 파라미터로 실행되면 위험할 수 있다. 타입 체크를 하거나, 위험한 것은 정규식으로 걸러내는 등의 조치를 취해야 한다. 특히, 서버와 클라이언트를 같이 개발할 때, 클라이언트(프론트엔드) 단에서 접근 제어나 체크가 이미 있다고 서버 측 검증을 소홀히 하는 경우가 있는데, 꼭 해당 클라이언트를 통해서만 들어온다고 보장할 수 없기 때문에(ex. API 직접 요청, devops 등) 필요하다.

접근 제어

  • 각 사용자, 리소스별로 역할과 권한을 할당하여 외부 사용자의 요청에 대해 접근 권한이 있는지를 체크하여 통제한다.

권한을 통한 접근 제어는 기본적으로 시스템 리소스에 대한 보안도 되고, 파라미터 변조를 보낼지라도 권한이 없을 경우 실행되지 않도록 하여 지킬 수 있는 대응책이다.