일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬 파일 전송
- 논문번역 꿀팁
- 파이썬 텍스트 변환 #파이썬 공부
- 파이썬 유튜브
- 파이썬 엑셀 파일 읽고 쓰기
- 파이썬 프로젝트
- 리눅스기초#리눅스명령어#리눅스 tail#tail#모의해킹 리눅스
- 파파고 꿀팁
- 파이썬#파이썬경로#파이썬폴더#파이썬디렉토리
- 파이썬 음성인식
- 리눅스#모의해킹#리눅스명령어#head 명령어
- 파이썬 채팅
- 패스트 캠퍼스 #자율주행 #비전
- 크롬오류#크롬검색어자동완성끄기#검색어자동완성오류#검색어자동완성 제거#검색어 노란선#검색어반복입력
- 파이썬 열
- 파이썬#subprocess#communicate()
- 파이썬 예시
- 스트림 암호 one-time-pad 공격#보안#암호
- ROS #spin() #spinOnce() #ROS기초
- 파파고 번역
- 파이썬 음성파일 텍스트 변환
- 파이썬 #파이썬프로젝트 #파이썬 예시 #파이썬 파일경로 #파이썬 자동화
- 파이썬
- ROS #Robotics #ROS기초
- PDF 개행문자
- pdf 번역
- 통계 #ROC #TPR #FPR #TNR #이진분류 #Accuracy #Recall
- 파이선 행
- 파이썬 #
- QGC#QGrouncControl#GLIB오류
개발자비행일지
혼동된 대리인 문제(confused deputy problem) 본문
먼저 소프트웨어는 프로시저, 함수, 서브루틴, 오브젝트로 구성된다. 안전한 시스템의 경우 이런 서브젝트가 일을 수행하기 위해서는 이를 사용하는 클라이언트가 적절한 권한을 가지고 있어야 한다. 즉 사용에 필요한 최소한의 권한을 분배해주는 것이 핵심이다. 이 경우 서비스 서브젝트는 대리인이라고 불리는데, 클라이언트에게 위임 받은 권한으로 필요한 일을 해주기 때문이다.
혼동된 대리인(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만 사용하도록 강제할 수 있으면 예방할 수 있다.
'▶ Computer Science' 카테고리의 다른 글
버스 스누핑(Bus Snooping), 캐시 일관성, 커널 보안 (0) | 2020.09.03 |
---|---|
리눅스 기초 명령어 head (0) | 2020.07.23 |
UID, EUID, RUID (0) | 2020.07.01 |
MMU(Memory management unit) 가상메모리, 물리메모리 변환 과정 (0) | 2020.06.30 |
TLB(Translation -Lookaside Buffer) 변환- 색인 버퍼 (0) | 2020.06.30 |