界: Environment
本節包括原始程式碼之外的所有內容,但對於建立中產品的安全性仍至關重要。由於此領域所涵蓋的問題與原始程式碼沒有直接關係,因此我們將其與其他領域分開。
DNS Spoofing
Abstract
允許外部控制 DNS 設定可能會導致服務中斷或非預期的應用程式行為。
Explanation
DNS Spoofing 又稱 DNS Cache Poisoning,是一種攻擊類型,攻擊者會破壞 DNS 解析器的快取,導致其傳回錯誤的 IP 位址。使用 DNS Spoofing 時,攻擊者可以在使用者不知情的情況下,將使用者重新導向到惡意網站。在使用 Node.js 的伺服器端 JavaScript 環境中,若 DNS 伺服器設定的處理不當,就可能會導致安全弱點。
範例 1:設想這樣一個情境:Node.js 應用程式讓使用者能指定自訂 DNS 伺服器。如果此輸入未經過正確驗證和清理,攻擊者就可以提供惡意 DNS 伺服器並實作 DNS Spoofing 攻擊。
在此範例中,
範例 1:設想這樣一個情境:Node.js 應用程式讓使用者能指定自訂 DNS 伺服器。如果此輸入未經過正確驗證和清理,攻擊者就可以提供惡意 DNS 伺服器並實作 DNS Spoofing 攻擊。
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