
WinSock 취약점인데 왜 관리자 권한까지 탈취될까?
Windows에서 인터넷이나 사내 네트워크를 사용하는 대부분의 프로그램은 WinSock(Windows Sockets) 인터페이스를 사용합니다.
브라우저, 메신저, 서버 프로그램처럼 소켓 통신을 하는 애플리케이션 뒤에는 Windows 커널 영역에서 네트워크 처리를 지원하는 구성 요소가 있습니다.
그중 하나인 AFD(Ancillary Function Driver for WinSock)는 실제 시스템에서 afd.sys라는 커널 모드 드라이버로 동작합니다.
Microsoft 문서도 AFD가 Windows Sockets 애플리케이션을 지원하는 커널 모드 구성 요소라고 설명합니다.
대표적인 취약점으로 CVE-2023-21768이 있습니다. Microsoft는 이 문제를 Windows Ancillary Function Driver for WinSock Elevation of Privilege Vulnerability로 분류했습니다. CVSS 3.1 기준 점수는 7.8(High)입니다. 공격 벡터는 로컬이고 낮은 수준의 사용자 권한이 필요하지만, 사용자 상호작용은 필요하지 않은 것으로 평가됐습니다.
인터넷에서 곧바로 시스템을 장악하는 취약점이라기보다, 이미 일반 사용자 권한으로 시스템에 접근한 공격자가 커널 권한까지 올라가기 위한 ‘2차 공격’에 활용할 수 있는 취약점으로 보는 편이 맞습니다.
이 글에서는 해당 위협의 기술적 발생 원인과 실무 대응 설정을 다룹니다.
1. 기술적 발생 원인: 사용자 영역과 커널 영역의 경계가 핵심
AFD.sys는 어떤 역할을 하나?
Windows 프로그램이 소켓을 생성하거나 데이터를 송수신할 때 모든 작업이 사용자 모드에서만 처리되지는 않습니다.
AFD.sys는 WinSock 관련 처리를 지원하는 커널 모드 드라이버입니다.
과거 Microsoft 기술 문서에서는 AFD.sys가 소켓 인터페이스 구현과 연결·버퍼 관리 등에 관여한다고 설명합니다.
구조를 단순화하면 다음과 같습니다.
[일반 프로그램]
↓
[WinSock API]
↓
[사용자 모드 → 커널 모드 경계]
↓
[AFD.sys]
↓
[TCP/IP 및 네트워크 처리]
핵심은 사용자 모드와 커널 모드 사이에서 입력값을 검증하는 과정입니다.
일반 프로그램은 제한된 권한으로 실행되지만, 커널 드라이버는 운영체제의 핵심 권한으로 동작합니다.
따라서 커널은 사용자 영역에서 전달된 주소, 길이, 객체 정보를 그대로 신뢰해서는 안 됩니다.
CVE-2023-21768의 핵심: 신뢰할 수 없는 포인터 처리
NVD에 등록된 CVE-2023-21768의 취약점 유형은 Microsoft 기준 CWE-822, Untrusted Pointer Dereference입니다.
쉽게 말하면 다음과 같습니다.
커널이 신뢰해서는 안 되는 메모리 주소 정보를 충분히 검증하지 않은 채 참조할 가능성이 생긴 것입니다.
커널 드라이버는 사용자 모드 프로그램에서 전달되는 데이터를 반드시 검증해야 합니다.
공격자가 영향을 줄 수 있는 포인터나 객체를 커널이 잘못 참조하면 정상적으로 접근해서는 안 되는 메모리 영역에서 비정상 동작이 일어날 수 있습니다.
이 문제가 권한 상승 공격과 결합되면 일반 사용자 권한으로 시작한 프로세스가 커널 수준의 권한을 획득하는 방향으로 악용될 가능성이 생깁니다.
CVE-2023-21768의 CVSS 벡터도 공격 성공 시 기밀성·무결성·가용성 영향이 모두 High로 평가돼 있습니다.
다만 이 취약점은 일반적으로 원격에서 패킷 하나를 보내 즉시 관리자 권한을 획득하는 취약점과는 성격이 다릅니다.
CVSS 벡터가 AV:L/PR:L인 만큼 공격자는 먼저 해당 시스템에서 낮은 수준의 로컬 실행 권한을 확보해야 합니다.
실제 침해 사고에서는 피싱, 악성 문서, 감염된 프로그램 등으로 일반 사용자 권한을 확보한 뒤 권한 상승 취약점을 연결하는 시나리오가 더 중요합니다.
2. 내 Windows 시스템 영향도 점검 방법
대표 사례인 CVE-2023-21768에서 NVD에 기록된 취약 빌드 범위는 다음과 같습니다.
| 운영체제 | 취약한 것으로 기록된 빌드 | 2023년 당시 수정 기준 |
|---|---|---|
| Windows 11 21H2 | 22000.1455 미만 | 22000.1455 |
| Windows 11 22H2 | 22621.1105 미만 | 22621.1105 |
| Windows Server 2022 | 20348.1487 미만 | 20348.1487 |
Step 1. Windows 빌드 번호 확인
PowerShell을 실행하고 다음 명령어를 입력합니다.
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsBuildNumber
Get-ComputerInfo는 Windows와 운영체제 관련 정보를 확인할 수 있는 Microsoft 기본 PowerShell 명령입니다.
더 간단히 확인하려면 실행 창에서 다음 명령을 쓸 수도 있습니다.
winver
예를 들어 Windows 11 22H2 환경에서 빌드가 22621.900처럼 22621.1105보다 낮다면 당시 기준으로 취약 범위에 포함됩니다.
다만 이 수치는 2023년 당시 CVE-2023-21768 패치 기준선입니다.
현재 운영 중인 PC라면 특정 과거 빌드까지만 맞추기보다, 지원 중인 Windows 버전에 최신 누적 보안 업데이트까지 적용하는 것이 적절합니다.
Microsoft는 최신 누적 업데이트를 설치하면 이전에 누락된 중요 보안 수정 사항도 함께 적용하는 방식으로 Windows를 서비스합니다.
Step 2. 설치된 보안 업데이트 확인
PowerShell에서 최근 설치된 HotFix를 확인합니다.
Get-HotFix |
Sort-Object InstalledOn -Descending |
Select-Object -First 10 HotFixID, Description, InstalledOn
Microsoft 문서에 따르면 Get-HotFix는 Win32_QuickFixEngineering을 이용해 시스템에 설치된 HotFix 정보를 조회합니다.
CVE-2023-21768 수정 당시 대표 누적 업데이트는 다음과 같습니다.
- Windows 11 22H2: KB5022303 / OS Build 22621.1105
- Windows 11 21H2: KB5022287 / OS Build 22000.1455
- Windows Server 2022: KB5022291 / OS Build 20348.1487
실무에서 주의할 점이 하나 있습니다.
현재 PC에서 위 KB가 직접 검색되지 않는다고 곧바로 취약하다고 판단하면 안 됩니다.
Windows 누적 업데이트는 이후 업데이트에 이전 수정 사항이 포함될 수 있습니다.
따라서 최신 누적 업데이트가 설치된 시스템이라면 과거 KB 번호 자체보다 현재 OS 빌드와 최근 보안 업데이트 적용 상태를 함께 확인하는 편이 정확합니다.
Step 3. AFD.sys 파일 상태 확인
WinSock 관련 커널 드라이버 파일의 버전도 확인할 수 있습니다.
관리자 PowerShell에서 다음 명령을 실행합니다.
Get-Item "$env:SystemRoot\System32\drivers\afd.sys" |
Select-Object FullName,
@{Name="FileVersion";Expression={$_.VersionInfo.FileVersion}}
정상적인 Windows 환경에서 AFD는 Windows 자체 시스템 구성 요소입니다.
인터넷에서 별도의 afd.sys 파일을 받아 교체하는 방식으로 대응해서는 안 됩니다.
특히 검색 사이트나 파일 다운로드 사이트에서 DLL 또는 SYS 파일을 개별적으로 내려받아 덮어쓰면 시스템 무결성이 훼손될 수 있으므로 피하는 편이 좋습니다.
3. 실전 대응 및 보안 설정 가이드
Step 1. 가장 먼저 Windows 최신 누적 업데이트 적용
CVE-2023-21768은 2023년 1월 Windows 보안 업데이트에서 수정됐습니다.
Windows 11 22H2에는 KB5022303을 통해 OS Build 22621.1105가 제공됐고, Windows 11 21H2에는 KB5022287, Windows Server 2022에는 KB5022291이 제공됐습니다.
하지만 현재 시점에 2023년 업데이트를 별도로 찾아 설치하는 방식은 권장하지 않습니다.
Windows 클라이언트에서는 다음 경로에서 최신 누적 업데이트를 확인하는 것이 안전합니다.
설정
→ Windows 업데이트
→ 업데이트 확인
기업 환경에서는 WSUS, Intune, Configuration Manager 등의 패치 관리 정책으로 최신 누적 보안 업데이트 적용 여부를 중앙에서 관리하는 편이 좋습니다.
Step 2. 패치 전에는 일반 사용자 권한 최소화
이 취약점의 CVSS 조건에는 PR:L, 즉 공격에 낮은 수준의 기존 권한이 필요하다는 조건이 포함돼 있습니다.
따라서 패치가 즉시 어려운 서버나 업무 시스템에서는 다음과 같은 기본 방어가 중요합니다.
- 일반 사용자가 관리자 계정으로 상시 로그인하지 않기
- 불필요한 로컬 관리자 그룹 구성원 제거
- 인터넷에서 내려받은 미확인 실행 파일 차단
- 업무용 계정과 관리자 계정 분리
- EDR 또는 Microsoft Defender를 통한 비정상 프로세스 감시
- 서버에 불필요한 대화형 사용자 로그인 제한
특히 로컬 권한 상승 취약점은 초기 침투 자체보다 침투 이후 공격자의 권한 확대에 사용될 수 있다는 점을 고려해야 합니다.
Step 3. afd.sys 손상이나 변조가 의심된다면 DISM + SFC 검사
AFD.sys 같은 Windows 시스템 파일이 손상됐거나 비정상적인 파일 교체가 의심되면 Windows 기본 복구 도구로 시스템 무결성을 점검할 수 있습니다.
관리자 권한 CMD 또는 PowerShell에서 먼저 다음 명령을 실행합니다.
DISM.exe /Online /Cleanup-Image /RestoreHealth
완료한 뒤 다음 명령을 실행합니다.
sfc /scannow
Microsoft도 시스템 파일 복구 시 DISM을 먼저 실행한 후 SFC를 사용하는 절차를 안내합니다.
SFC1는 보호된 Windows 시스템 파일을 검사하고 손상된 파일을 복구하는 데 사용됩니다.
단, 이 명령은 보안 패치를 대신하지 않습니다.
DISM과 SFC가 정상 완료됐더라도 Windows 보안 업데이트가 적용되지 않았다면 취약점 수정이 완료됐다고 판단해서는 안 됩니다.
4. 방화벽에서 특정 포트를 막으면 해결될까?
WinSock 관련 취약점이라는 이름만 보고 다음과 같이 생각하기 쉽습니다.
“네트워크 취약점이면 방화벽에서 포트를 차단하면 되는 것 아닌가?”
CVE-2023-21768에는 적절한 접근이 아닙니다.
이 취약점은 CVSS 기준 공격 벡터가 Local(AV:L)인 권한 상승 취약점이므로, 특정 TCP 포트를 차단하는 방식이 근본적인 수정책은 아닙니다.
우선순위는 다음과 같습니다.
1. Windows 최신 보안 업데이트 적용
↓
2. 일반 사용자 권한 최소화
↓
3. 미확인 프로그램 실행 차단
↓
4. EDR/Defender 이벤트 모니터링
↓
5. 시스템 파일 무결성 점검
WinSock 취약점 = 무조건 네트워크 포트 차단이라고 판단하면 취약점의 실제 공격 조건을 놓칠 수 있습니다.
5. 관리자가 직접 점검할 때의 실무 팁
이런 유형의 Windows 취약점은 KB 번호 하나만 검색하기보다 OS 빌드를 먼저 확인하는 방식을 권장합니다.
누적 업데이트 구조에서는 오래된 KB가 설치 목록에서 눈에 띄지 않거나 이후 업데이트로 대체될 수 있습니다.
다음 세 가지를 함께 확인하면 더 빠릅니다.
# 1. Windows 버전 및 빌드
Get-ComputerInfo |
Select-Object WindowsProductName, WindowsVersion, OsBuildNumber
# 2. 최근 HotFix
Get-HotFix |
Sort-Object InstalledOn -Descending |
Select-Object -First 10 HotFixID, InstalledOn
# 3. AFD.sys 파일 버전
Get-Item "$env:SystemRoot\System32\drivers\afd.sys" |
Select-Object FullName,
@{Name="FileVersion";Expression={$_.VersionInfo.FileVersion}}
Get-ComputerInfo와 Get-HotFix는 모두 Windows 상태를 확인할 때 쓸 수 있는 Microsoft 제공 PowerShell 기능입니다.
서버 여러 대를 관리한다면 이 정보를 PowerShell Remoting이나 자산관리 시스템으로 수집해 빌드 번호를 기준으로 미패치 시스템을 찾아내는 방식이 실제 운영에서 더 효율적입니다.
6. 요약 및 FAQ
| 점검 항목 | 핵심 내용 |
|---|---|
| 대표 취약점 | CVE-2023-21768 |
| 취약 구성 요소 | Windows Ancillary Function Driver for WinSock |
| 관련 파일 | afd.sys |
| 취약점 유형 | 권한 상승(Elevation of Privilege) |
| 취약점 분류 | CWE-822 Untrusted Pointer Dereference |
| CVSS | 7.8 High |
| 공격 조건 | 로컬 접근 + 낮은 수준의 기존 사용자 권한 |
| 최우선 대응 | 최신 Windows 누적 보안 업데이트 |
| 보조 대응 | 최소 권한, 실행 파일 통제, EDR 모니터링 |
| 무결성 점검 | DISM /RestoreHealth → sfc /scannow |
CVE-2023-21768은 NVD에서 Windows Ancillary Function Driver for WinSock 권한 상승 취약점으로 기록돼 있으며 Microsoft가 제공한 CVSS 3.1 기본 점수는 7.8입니다.
Q. 외부에서 인터넷만 연결되어 있어도 바로 공격당하나요?
CVE-2023-21768의 CVSS 공격 벡터는 AV:L입니다.
단순히 인터넷에 노출됐다는 이유만으로 직접 공격할 수 있는 유형으로 보는 것은 적절하지 않습니다.
공격자는 먼저 대상 시스템에서 일정 수준의 로컬 권한을 확보해야 합니다.
Q. afd.sys 파일을 삭제하거나 비활성화하면 안전한가요?
권장하지 않습니다. AFD는 Windows Sockets를 지원하는 커널 구성 요소이며 네트워크 동작과 연관돼 있습니다.
Microsoft 자료도 AFD.sys가 Windows Sockets 지원을 담당하는 커널 모드 구성 요소라고 설명합니다.
파일을 직접 삭제하기보다 Windows 공식 보안 업데이트를 먼저 적용해야 합니다.
Q. 2023년 KB5022303만 설치하면 되나요?
현재 시스템에서는 과거 KB 하나를 목표로 하기보다 지원 중인 Windows 버전에 최신 누적 업데이트를 적용하는 것이 적절합니다.
Windows 누적 업데이트는 이전 보안 수정 사항을 포함하는 방식으로 제공됩니다.
마무리
WinSock이나 커널 드라이버 취약점은 처음에는 복잡하게 느껴질 수 있지만, 핵심은 단순합니다.
사용자 프로그램이 전달한 정보를 높은 권한의 커널 드라이버가 얼마나 안전하게 검증하느냐가 중요합니다.
CVE-2023-21768처럼 커널 영역에서 신뢰할 수 없는 포인터를 처리하는 문제가 생기면 이미 시스템에 진입한 공격자가 일반 사용자 권한에서 더 높은 권한으로 이동하는 통로가 될 수 있습니다. NVD는 이 취약점을 CWE-822와 연결하고 있으며, 공격 성공 시 시스템 기밀성·무결성·가용성에 높은 영향을 줄 수 있다고 평가합니다.
관리자라면 공격 기법을 분석하기보다 먼저 OS 빌드 확인 → 최신 누적 업데이트 적용 → 최소 권한 운영 → 시스템 파일 무결성 점검 순서를 습관화하는 편이 효과적입니다.
참고 자료
- SFC(시스템 파일 검사기) : 윈도우에 기본으로 들어 있는 도구입니다. 컴퓨터의 손상되거나 사라진 시스템 파일을 찾아서 원래 상태로 고쳐줍니다 ↩︎