lottie
Seungjun's blog
blog
IDOR(Insecure Direct Object Reference)

IDOR(Insecure Direct Object Reference)

잘못된 보안 구현으로 인해 발생하는 주요 보안 취약점 중 하나인 Insecure Direct Object Reference(IDOR)는 많은 보안 전문가들이 주의를 기울여야 할 중요한 주제입니다. 아래에서 보안 개발자의 관점에서 IDOR에 대해 단계별로 설명해보겠습니다.

  1. IDOR란 무엇인가요?

    IDOR는 "Insecure Direct Object Reference"의 약자로, 애플리케이션에서 중요한 객체(파일, 데이터베이스 레코드, 사용자 정보 등)에 대한 참조를 직접 노출함으로써 발생하는 보안 취약점입니다. 이는 사용자가 권한 없이 다른 객체에 접근할 수 있는 상황을 의미합니다.

  2. 왜 IDOR가 발생하는가?

    IDOR는 보안 설계 또는 구현 상의 실수로 발생합니다. 주로 아래와 같은 상황에서 발생할 수 있습니다:

부적절한 인증/인가 검증: 사용자가 자신의 객체에만 접근 가능하도록 검증하는 부분에서 실수가 발생할 때.


직접 객체 참조 사용: URL 매개변수, 폼 필드 또는 API 호출과 같은 메커니즘을 통해 객체에 직접적인 참조를 사용할 때.


객체 접근 제어 없음: 사용자가 다른 사용자의 개체를 열람하고 수정할 수 있는 누출된 링크 또는 정보가 존재할 때.

  1. IDOR의 공격 예시

    IDOR는 다양한 형태로 공격을 당할 수 있습니다:

다른 사용자의 정보 열람: 다른 사용자의 프로필, 주문 내역 등의 정보를 열람.


데이터 변경 또는 삭제: 다른 사용자의 데이터를 수정하거나 삭제.


데이터베이스 레코드 열람: 다른 레코드의 내용을 열람하여 중요 정보 유출.


파일 열람: 다른 사용자의 파일을 열어 민감한 정보를 탈취.


권한 상승: 다른 사용자의 권한을 이용하여 시스템 내에서 권한을 상승.

  1. IDOR를 방지하기 위한 전략

    IDOR를 방지하기 위해서는 다음과 같은 접근 방법을 사용할 수 있습니다:

적절한 인증 및 권한 검증: 모든 요청에 대해 적절한 권한 검증을 수행하여 사용자가 요청한 객체에 액세스할 수 있는지 확인.


간접 참조 사용: 직접적인 객체 참조 대신 식별자(예: UUID)를 사용하여 간접적으로 객체에 접근.


데이터 필터링: 사용자의 세션 또는 권한에 따라 객체를 필터링하여 사용자가 접근할 수 있는 것만 허용.


객체 식별자 무작위화: 예측이 어려운 무작위 객체 식별자를 생성하여 공격을 어렵게 함.


보안 헤더: 객체에 대한 권한을 나타내는 보안 헤더를 사용하여 요청 검증.


강력한 세션 관리: 세션 관리 및 보호를 강화하여 세션 변조 및 세션 위조 공격을 방지.

  1. IDOR의 발견과 수정

    프로세스 검토: 코드 리뷰, 보안 테스트, 펜 테스트 등을 통해 IDOR 취약점을 발견.

우선 순위 설정: 발견된 취약점을 위험도에 따라 우선 순위를 정하고 처리.


코드 수정: 식별된 취약점을 수정하고 적절한 인증 및 권한 검증을 구현.


테스트 및 모니터링: 수정된 코드를 테스트하고 모니터링하여 새로운 취약점이 추가되지 않도록 유지.


마무리

IDOR는 보안을 강화하고 사용자 데이터를 안전하게 보호하기 위해 주의 깊게 다뤄져야 하는 중요한 보안 취약점입니다. 적절한 인증, 권한 검증, 데이터 필터링, 식별자 무작위화 등의 방법을 사용하여 IDOR 공격으로부터 시스템을 보호할 수 있습니다. 코드 검토, 보안 테스트, 펜 테스트를 통해 취약점을 발견하고, 적절한 조치를 취하여 보안을 강화하는 것이 중요합니다.