관리 메뉴

개발자비행일지

혼동된 대리인 문제(confused deputy problem) 본문

▶ Computer Science

혼동된 대리인 문제(confused deputy problem)

Cyber0946 2020. 7. 1. 10:18

먼저 소프트웨어는 프로시저함수서브루틴오브젝트로 구성된다안전한 시스템의 경우 이런 서브젝트가 일을 수행하기 위해서는 이를 사용하는 클라이언트가 적절한 권한을 가지고 있어야 한다. 즉 사용에 필요한 최소한의 권한을 분배해주는 것이 핵심이다. 이 경우 서비스 서브젝트는 대리인이라고 불리는데클라이언트에게 위임 받은 권한으로 필요한 일을 해주기 때문이다.

혼동된 대리인(confused deputy) 문제는 서브젝트가 클라이언트의 권한을 사용해야 하는 경우에 실수로 자기 자신의 권한으로 일을 수행했을 경우를 일컫는다. 

클라이언트는 권한이 없지만 대리인은 권한이 있는 일을 부탁했을 때 대리인이 혼동하여 이 일을 수행해 준다면 보안 문제가 발생하게 되는 것이다. , 사용자가 자신 보다 높은 권한을 가지는 프로세스를 통해 작업을 수행할 때 발생하는 문제이다.

혼동된 대리인 문제는 소프트웨어와 시스템의 권한 분리 과정에서 발생한다.

유닉스와 윈도우 등 대부분의 운영체제는 접근 제어 리스트(access control list, ACL)를 이용해 어떤 사용자가 어떤 권한을 가지고 있는지 검사하기에 소프트웨어를 대상으론 별다른 권한 검사를 하지 않는 관심의 분리(separation of concerns)는 확실히 보안을 강화시키는 긍정적인 효과가 있다하지만 동시에 프로세스가 스스로 필요한 일을 하는 경우인지 클라이언트의 일을 대신해 주는 경우를 구분하기 어렵다. 즉 소프웨어를 대상으로 권한 검사를 하지 않는 부분이 악용 될 수 있다. 

구체적인 예로는 유닉스(UNIX) 시스템의 passwd 프로그램이 있다. passwd는 프로그램을 이용해 유닉스 시스템의 사용자는 자기 자신의 암호 파일을 고치게 되는데이 경우 사용자는 /etc/passwd 파일을 고칠 권한이 없다하지만 passwd 프로그램은 setuid root인 프로그램이므로 루트 권한을 가지고 있다여기서 의도한 바는 각각의 유저는 자기 자신의 암호만 고칠 수 있도록 분리해 놓은 것이지만, 이 방식은 전적으로 passwd 프로그램의 입력 값 검사(암호 검사)에 의존하게 된다버퍼 오버플로우(buffer overflow)를 일으켜서 암호 검사만 우회할 수 있다면(대리인을 속일 수만 있다면) passwd 프로그램(대리인)의 모든 권한을 손에 넣을 수 있게 된다. 다른 예로는 서버 프로그램이 있다서버 프로그램은 네트워크로 들어오는 요청을 받아서 처리해준다는 면에서 대표적인 대리인에 해당한다서버 프로그램도 UID를 가지고 있으면 해당 UID의 권한으로 프로세스가 수행된다만약 루트 권한으로 서버가 돌고 있다면 이 대리인의 권한은 루트인 셈이다문제는 서버에 서비스를 요청해 온 클라이언트는 이러한 서버 프로그램을 혼동시켜 실제로는 권한이 없는 일을 수행하도록 부탁할 수 있다는 점이다. 즉 권한 상승이나 실행 여부를 결정하게 되는게 서버 프로그램에 온 입력 값이라는 것이다. Cross-site request forgery도 이를 confused deputy를 이용한 공격이다. 공격자가 자바스크립트로 공격대상의 authority를 사용해서 http request를 보내면 공격자는 권한 없이도 공격대상의 권한을 사용하여, 권한이 있는 것과 같은 행동을 할 수 있다. FTP Bounce Attack 공격자가 공격대상 FTP 서버에다가, TCP 포트로 접속하기 위해 필요한 PORT 사용 명령을 보내는 것이다. 이를 이용하면 연결권한이 없는 공격자가 공격 대상 FTP 서버에 공격대상의 권한을 활용해서 접속할 수 있다.

confused deputy 문제를 해결하기 위해서는 케이퍼빌러티(capability)라는 보안 메커니즘이 필요하다. 예를 들어서 권한이 설정된 파일에 접근해서 수정을 하려는 명령을 주기 위해선 capability를 증명할 수 있는 토큰파일을 보내도록 강제 한다면, 이런 문제를 예방할 수 있다. 또한 Cross-site request forgery공격도, 웹브라우저에서 자신의 authority만 사용하도록 강제할 수 있으면 예방할 수 있다.