악용 가능성이 있는 규칙을 포함한 동적 그룹

MEDIUM

설명

Microsoft Entra ID의 동적 그룹은 P1 라이선스 이상이 필요한 강력한 기능입니다. 이러한 그룹은 사용자 특성과 연결된 특정 규칙에 따라 멤버 자격을 자동으로 업데이트합니다. 하지만 규칙에서 사용자가 자체 수정할 수 있는 특성에 의존하는 경우, 규칙이 악용에 취약해집니다.

동적 그룹의 규칙에 사용된 특성을 수정할 수 있는 공격자는 그 그룹의 멤버 자격을 조작할 수 있습니다. 이 구성 오류 때문에 무단 액세스를 허용할 수도 있고, 해당 그룹이 중요한 리소스에 대한 액세스를 허용하는 경우 권한 상승이 발생할 수도 있습니다.

한 테넌트에서 많은 특성이 사용자가 수정할 수 없게 되어 있지만, 게스트 계정은 예외입니다. 공격자의 제어를 받는 게스트 사용자에게 공격자의 홈 테넌트에 대한 관리자 권한이 있는 경우, 해당 테넌트에서 특성을 수정하여 대상 테넌트의 동적 그룹 규칙을 악용할 수 있습니다.

이 문제는 2020년을 전후해 보안 리서치 및 침투 테스트 관련 문헌에서 처음 부각되었고, 지금도 잘못 구성된 환경에서 현실성 있는 공격 벡터로 남아 있습니다. 2024년 말부터 AADInternals 공격 도구에 악용할 수 있는 그룹을 식별하는 기능이 포함되었습니다.

가능한 공격 시나리오:

  1. 정찰: 공격자가 권한 있는 역할이 없는 표준 사용자 자격으로 테넌트에 대한 액세스 권한을 얻습니다. 기본적으로 이러한 공격자는 그룹을 열거하고 동적 그룹 규칙을 볼 수 있습니다.
  2. 대상 선택: 공격자가 구독에 대한 권한 있는 Azure 역할과 같이 중요한 권한이 있는 동적 그룹을 파악합니다. 공격자는 특정 키워드(예: "admin")를 포함하는 악용 가능한 특성(예: displayName)을 사용하는 규칙을 노립니다.
  3. 악성 준비: 공격자가 자체 Entra 테넌트에 대상 그룹의 멤버 자격 규칙과 일치하는 특성을 지닌 사용자를 만듭니다.
  4. 게스트 초대: 공격자가 이 악성 사용자를 대상 테넌트에 게스트로 초대합니다.
  5. 규칙 악용: 악성 게스트가 초대를 수락하면 대상 테넌트에 해당 계정이 생성되고, 동적 그룹의 멤버 자격 규칙이 그 계정의 특성을 처리합니다.
  6. 상승: 악성 게스트가 동적 그룹에 자동으로 조인하여 계정을 만든 지 몇 분 만에 권한을 상속합니다(예: 권한 있는 Azure 구독 역할).

위험과 그에 따른 심각도는 다음과 같은 요인에 좌우됩니다.

  • 게스트 액세스 설정: 게스트 제한이 약하면 이 공격의 실현 가능성이 커집니다. 게스트를 초대하고 그룹 규칙을 볼 수 있으면 위험이 더 커집니다(관련 위험 노출 지표 "제한되지 않은 게스트 계정" 및 "일반 계정과 동등한 액세스 권한이 있는 게스트 계정" 참조).
  • 그룹 액세스 범위: 악용의 심각도는 해당 그룹이 제어하는 리소스에 따라 다릅니다. 예를 들면 다음과 같습니다.
    • Microsoft 365 서비스(Teams 채널, SharePoint 사이트, Exchange 받은 편지함 등)
    • Azure 클라우드 리소스
    • 기타 통합된 애플리케이션

솔루션

동적 그룹은 관리 작업을 간소화하지만, 악용을 방지하려면 조심해서 구성해야 합니다. 이러한 위험을 해결하면 관리자가 Entra ID 관리 내에서 동적 그룹을 안전하고 효율적으로 유지할 수 있습니다.

가장 긴급히 해야 할 수정은 규칙에서 사용자가 제어하는 특성을 피하는 것입니다. 동적 그룹 멤버 자격 규칙은 사용자(특히 게스트)가 직접 수정할 수 있는 특성에 기반하면 안 됩니다. 하지만 이렇게 하면 이 기능의 유용성과 유연성이 대폭 저하됩니다.

앞서 설명한 것과 같이, 이 기능을 가장 쉽게 악용하는 방법은 악성 게스트를 초대하는 것입니다. 이 위험을 완화하려면 게스트 초대를 신뢰할 수 있는 사용자 그룹에게만 제한하는 정책을 구성하면 됩니다. 이렇게 하면 협업은 저하될지라도 악성 게스트 액세스로 인한 위험은 대폭 완화됩니다. 혹은 동적 그룹의 멤버가 될 것으로 예상되지 않는 위험한 게스트를 제외하는 방법도 있습니다. 규칙 편집기에서 userType 속성에 "And" 규칙을 추가합니다. 이때 Guest 값에 Not Equals 연산자를 사용하면 다음과 같은 규칙이 생성됩니다. and (user.userType -ne "Guest"). 이렇게 해도 악성 "외부 멤버"에 대해 보호하지는 않습니다.

하지만 사용자 특성을 편집할 수 있는 권한(예: Entra 역할을 통해 부여된 권한)이 있는 내부 사용자도 이를 악용할 수 있으며, 이로 인해 추가적인 공격 경로가 생성될 수 있습니다. 따라서 그러한 권한을 부여하는 Entra 역할을 주의 깊게 검토해야 합니다.

신뢰도가 낮은 게스트는 물론 내부 사용자는 악용 가능한 그룹을 손쉽게 찾아낼 수 있습니다. 이 위험을 완화하려면 그룹과 그룹 규칙에 대한 게스트의 가시성을 줄입니다. 관련 위험 노출 지표 "제한되지 않은 게스트 계정" 및 "일반 계정과 동등한 액세스 권한이 있는 게스트 계정"의 권장 사항을 참조하십시오. 하지만 이렇게 해도 내부 사용자는 여전히 대상 그룹을 식별할 수 있으므로, 내부 사용자의 그룹 악용을 방지할 수는 없습니다.

보완책으로, 동적 그룹 멤버 자격의 변경 사항을 정기적으로 모니터하여 잠재적 악용을 식별하여 대처할 수 있습니다. 이 작업은 Entra 감사 로그를 사용해 실시간으로 수행할 수도 있고, 동적 그룹의 속성에서 "처리 일시 정지"를 선택했다가 변경 전후에 멤버를 비교할 준비가 됐을 때만 다시 사용으로 설정하는 방법도 있습니다.

마지막으로 탐색 또는 악용의 가능성이 미미해서 위험 수준이 낮다고 판단하거나 그룹의 멤버 자격이 중요한 리소스에 대한 액세스를 허용하지 않기 때문에, 위험을 감수하고 식별된 그룹을 제외할 수도 있습니다.

지표 세부 정보

이름: 악용 가능성이 있는 규칙을 포함한 동적 그룹

코드명: DYNAMIC-GROUP-FEATURING-AN-EXPLOITABLE-RULE

심각도: Medium

유형: Microsoft Entra ID Indicator of Exposure

MITRE ATT&CK 정보: