界: Environment

本节包括的所有内容均与源代码无关,但对所创建产品的安全性仍然至关重要。因为本节涉及的问题与源代码没有直接关系,所以我们将它与其他章节分开。

DNS Spoofing

Abstract
允许外部控制 DNS 设置可能会导致服务中断或应用程序出现意外行为。
Explanation
DNS 欺骗(也称为 DNS 缓存中毒)是一种攻击类型,攻击者破坏 DNS 解析器的缓存,导致其返回错误的 IP 地址。利用 DNS 欺骗,攻击者可以在用户不知情的情况下将用户重定向到恶意网站。在使用 Node.js 的服务器端 JavaScript 环境中,DNS 服务器设置处理不当可能会导致安全漏洞。

示例 1:考虑这样一种情况: Node.js 应用程序允许用户指定自定义 DNS 服务器。如果未正确验证和清理此输入,攻击者可以提供恶意 DNS 服务器并实施 DNS 欺骗攻击。


const dns = require('dns');

// User-controlled input for DNS servers
const customDnsServers = from_user_controlled_input;

// Set custom DNS servers
dns.setServers(customDnsServers);


在此示例中,customDnsServers 变量被赋予一个来自用户控制输入的值。然后此输入用于使用 dns.setServers(customDnsServers) 设置 DNS 服务器。如果攻击者提供恶意 DNS 服务器地址,他们可以指示应用程序使用他们的服务器解析域名,从而返回错误的 IP 地址。
desc.dataflow.javascript.dns_spoofing