Back to Checks
vercel

Vercel domain DNS records are properly configured

domain_dns_properly_configured
Service: domainSeverity: medium
OfficialBuilt-inVerified
Categories:trust-boundariesvercel-hobby-plan
Resource Type:NotDefined

Vercel domains are assessed for DNS configuration to verify records properly point to Vercel's infrastructure. Misconfigured DNS can result in domains that fail to serve content, SSL certificate provisioning failures, and degraded user experience.

Risk

Misconfigured DNS records can cause the domain to be unreachable, preventing users from accessing the application. It can also prevent SSL certificate provisioning, resulting in browser security warnings. Stale DNS configurations may point to decommissioned infrastructure, creating a risk of subdomain takeover.

Run this check with Prowler

Run in Prowler Cloud
Run
prowler vercel --checks domain_dns_properly_configured

Recommendation

Update DNS records at your domain registrar to correctly point to Vercel. Use a CNAME record for subdomains or an A record for apex domains. Verify the configuration in the Vercel dashboard after making changes.

Remediation

Other

1Sign in to the Vercel dashboard
2Navigate to the project Settings > Domains
3Review the DNS configuration status for each domain
4Update DNS records at your domain registrar to match the values shown in the Vercel dashboard
5Wait for DNS propagation (typically 24-48 hours)

Check Code

from typing import List

from prowler.lib.check.models import Check, CheckReportVercel
from prowler.providers.vercel.services.domain.domain_client import domain_client


class domain_dns_properly_configured(Check):
    """Check if domains have DNS properly configured.

    This class verifies whether each Vercel domain has its DNS records
    properly configured to point to Vercel's infrastructure.
    """

    def execute(self) -> List[CheckReportVercel]:
        """Execute the Vercel Domain DNS Configuration check.

        Iterates over all domains and checks if DNS is properly configured.

        Returns:
            List[CheckReportVercel]: A list of reports for each domain.
        """
        findings = []
        for domain in domain_client.domains.values():
            report = CheckReportVercel(
                metadata=self.metadata(),
                resource=domain,
                resource_name=domain.name,
                resource_id=domain.id or domain.name,
            )

            if domain.configured:
                report.status = "PASS"
                report.status_extended = (
                    f"Domain {domain.name} has DNS properly configured."
                )
            else:
                report.status = "FAIL"
                report.status_extended = (
                    f"Domain {domain.name} does not have DNS properly configured. "
                    f"The domain may not be resolving to Vercel's infrastructure."
                )

            findings.append(report)

        return findings