설명
DNS 정방향 또는 역방향 조회 결과를 신뢰 경계, 접근 허용, 인증 판단에 직접 사용하면 DNS 스푸핑, 캐시 오염, 리바인딩으로 우회될 수 있습니다.
잠재적 영향
- 공격자가 DNS 응답을 조작해 신뢰된 호스트처럼 보일 수 있습니다.
- 역방향 DNS 이름만으로 접근이 허용될 수 있습니다.
해결 방법
- 인증과 권한 결정에는 TLS 클라이언트 인증, 서명 토큰, 서버 측 권한 모델처럼 DNS와 독립적인 신뢰 근거를 사용합니다.
- 네트워크 위치 검증이 필요하면 해석된 IP를 검증된 CIDR 목록과 비교하고 리다이렉트 후에도 재검증합니다.
예시
DNS 결과만으로 접근 허용
python
addr = socket.gethostbyname(host)
if addr == TRUSTED_IP:
grant_access()
추가 네트워크 확인
python
addr = ipaddress.ip_address(socket.gethostbyname(host))
return addr in TRUSTED_NET
설명:
- 취약한 코드: DNS 정방향 또는 역방향 조회 결과를 신뢰 경계, 접근 허용, 인증 판단에 직접 사용하면 DNS 스푸핑, 캐시 오염, 리바인딩으로 우회될 수 있습니다.
- 네트워크 위치 확인 예시: 해석된 IP를 승인된 CIDR 목록과 비교하는 추가 검사입니다. 이 코드만으로 호출자의 신원을 증명하거나 접근을 허가해서는 안 됩니다. 실제 인증과 권한 확인은 DNS와 독립적으로 수행해야 합니다.