Winsock 實現允許同一端口被多重綁定,且無權限區分:低權限使用者可重新綁定高權限服務(如 SYSTEM 權限啟動)的端口。核心原則是「指定最明確者優先」,導致惡意程式可攔截、轉發或竄改通訊。
Microsoft 內建服務 Telnet、FTP、HTTP (IIS) 皆受影響,包含 Win2K SP3。第三方服務亦多存在此缺陷。若攻擊者已取得低權限存取且目標啟用相關服務,即可嘗試利用。
開發 Socket 伺服器應用時,綁定前呼叫 setsockopt 指定 SO_EXCLUSIVEADDRUSE,要求獨佔端口,禁止重複綁定。範例程式碼展示如何正確設定。
// 關鍵設定:獨佔端口
setsockopt(s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (char *)&val, sizeof(val));
// 若設定 SO_REUSEADDR 則會成功重複綁定,產生漏洞
附件包含完整的 Telnet 竊聽示範程式,可在 Guest 權限下運作,演示封包轉發、內容分析與會話劫持邏輯。