CVE-2022-26923
Last updated
Was this helpful?
Last updated
Was this helpful?
2022년 Oliver Lyak은 AD CS에서 CVE-2022-26923 취약점을 발견했습니다.
당시 머신 계정을 통한 인증서 요청 시 인증서 매핑은 dNSHostName 속성 값에 기반하여 이뤄졌습니다.
기존에 AD CS에서는 사용자를 식별하는 고유한 값인 UPN을 통해서 인증서를 발급했습니다.
하지만 컴퓨터를 식별할 때는 UPN이 없기 때문에 호스트 네임 값인 dNSHostname 속성 값을 통해
해당 값에 맞는 인증서를 발급해줬습니다.
dNSHostname 값이 요청 들어오면 서버는 이 값에 맞게 SPN을 자동으로 업데이트 하게 되어서
만약 이 값을 DC Hostname으로 변경하게 된다면 실제 DC와 SPN 값이 중복되어 오류가 발생합니다.
하지만 SPN 값을 없앤 후 dNSHostname 값을 변경하면 SPN이 동기화되지 않는 다는 점에서
SPN을 없앤 뒤 dNSHostname 값을 DC Hostname 값으로 변경하면 DC의 인증서가 발급됩니다.
AD CS가 이 취약점에 노출되었는지 확인하는 방법으로는 획득한 계정을 통해 CA의 User 내장 템플릿을
이용하여 인증서 발급 요청을 했을 때 [ * ] Certificate has no object SID
라고 출력되면 취약한 것입니다.
확인하는 명령어는 다음과 같습니다.
강력한 매핑의 경우 Object SID가 인증서에 포함되어 있어야만 발급이 가능한 반면,
약한 매핑은 UPN, dNSHostname 등에 있는 이름을 사용해서 매핑을 하기 때문입니다.
SID가 없다는 오류가 나왔다는 것은 거부되지 않고 단순히 기재가 되지 않았다는 뜻이므로 약한 매핑을 사용하여
컴퓨터 계정의 dNSHoatname 값을 조작하여 약한 매핑을 통한 인증서 탈취가 가능해집니다.
또한 이 공격에서 전제가 되는 컴퓨터 계정의 사용은, 도메인 내에 있는 일반 사용자 계정은 누구나 기본적으로
머신 계정을 10개 까지 생성 가능하기 때문에 문제가 되지 않습니다.
정리하여 CVE-2022-26923 취약점이 성공하려면 다음과 같은 조건을 만족해야 합니다.
Microsoft 2022년 5월 업데이트 이전의 AD CS
약한 매핑을 사용하는 AD CS
MAQ(MachineAccountQuota)의 값이 1 이상인 사용자 계정 확보