security

3 posts

당신의 서비스는 눈치 채지 못한 공범이다: Confused Deputy 공격의 작동 원리

Confused Deputy 공격은 특권을 가진 서비스를 속여 자신의 권한을 스스로 해치는 데 이용한다. 공격자가 암묵적 신뢰를 어떻게 악용하는지, 그리고 능력 기반 보안이 왜 해결책인지 알아본다.

당신의 서비스에는 클라우드 스토리지에 접근할 수 있는 API 키가 있다. 사용자가 요청을 본다. 서비스는 충실하게 파일을 작성한다. 그 파일은 당신의 버킷이 아닌 공격자의 버킷에 저장되고, 이제 공격자는 당신의 데이터를 손에 넣는다. 당신은 방금 눈치 채지 못한 공범이 되었다. 이것이…

당신의 권한 검사는 거짓말을 하고 있다

능력 기반 보안은 흩어져 있는 역할 검사를 위조할 수 없는 권한 토큰으로 대체합니다. 코드를 읽기 어렵게 만들지 않고 TypeScript에서 이를 구현하는 방법을 소개합니다.

모든 권한 버그는 돌이켜볼 때 똑같이 보인다. 호출 스택 깊숙한 어딘가에 있는 함수가 호출자가 이미 을 검사했을 것이라고 가정한다. 그러나 그렇지 않았다. 또는 새로운 역할이 추가되면, 47개 파일 전체에서 를 grep하며 하나라도 놓치지 않았는지 바라며 뒤진다. 능력 기반 보안은…

만약 모든 함수가 권한을 가정하지 않고 명시적으로 전달받아야 한다면?

대부분의 코드는 주변 권한(ambient authority) 하에서 실행된다: 모든 함수가 모든 것에 접근할 수 있다. 기능 기반 보안(capability-based security)은 함수가 명시적이고 범위가 제한된 권한을 전달받도록 강제함으로써 이 모델을 뒤집는다.

함수는 같은 프로세스 안에 존재한다는 이유만으로 데이터베이스, 결제 게이트웨이, 감사 로그에 모두 접근할 수 있다. 공격자가 하나의 HTTP 핸들러에서 인젝션 버그를 발견하면, 그 모든 권한을 그대로 물려받는다. 이 함수는 이런 권한을 요청한 적 없다. 단지 배치된 위치 덕분에 마치…