如何防范誤植攻擊
除了常規手段以外,網絡罪犯還會利用社會工程的方式,試圖讓安全意識較弱的人泄露私人信息或是有價值的證書。很多網絡釣魚騙局的實質都是攻擊者偽裝成信譽良好的公司或組織,然后借此大規模傳播病毒或惡意軟件。
誤植Typosquatting就是其中一個常用的手法。它是一種社會工程學的攻擊方式,通過使用一些合法網站的錯誤拼寫的 URL 以引誘用戶訪問惡意網站,這樣的做法既使真正的原網站遭受聲譽上的損害,又誘使用戶向這些惡意網站提交個人敏感信息。因此,網站的管理人員和用戶雙方都應該意識到這個問題帶來的風險,并采取措施加以保護。
一些由廣大開發者在公共代碼庫中維護的開源軟件通常都被認為具有安全上的優勢,但當面臨社會工程學攻擊或惡意軟件植入時,開源軟件也需要注意以免受到傷害。
下面就來關注一下誤植攻擊的發展趨勢,以及這種攻擊方式在未來可能對開源軟件造成的影響。
什么是誤植?
誤植是一種非常特殊的網絡犯罪形式,其背后通常是一個更大的網絡釣魚騙局。不法分子首先會購買和注冊域名,而他們注冊的域名通常是一個常用網站的錯誤拼寫形式,例如在正確拼寫的基礎上添加一個額外的元音字母,又或者是將字母“i”替換成字母“l”。對于同一個正常域名,不法分子通常會注冊數十個拼寫錯誤的變體域名。
用戶一旦訪問這樣的域名,不法分子的目的就已經成功了一半。為此,他們會通過電子郵件的方式,誘導用戶訪問這樣的偽造域名。偽造域名指向的頁面中,通常都帶有一個簡單的登錄界面,還會附上熟悉的被模仿網站的徽標,盡可能讓用戶認為自己訪問的是真實的網站。
如果用戶沒有識破這一個騙局,在頁面中提交了諸如銀行卡號、用戶名、密碼等敏感信息,這些數據就會被不法分子所完全掌控。進一步來看,如果這個用戶在其它網站也使用了相同的用戶名和密碼,那就有同樣受到波及的風險。受害者最終可能會面臨身份被盜、信用記錄被破壞等危險。
最近的一些案例
從網站的所有方來看,遭到誤植攻擊可能會帶來一場公關危機。盡管網站域名的所有者沒有參與到犯罪當中,但這會被認為是一次管理上的失職,因為域名所有者有主動防御誤植攻擊的責任,以避免這一類欺詐事件的發生。
在幾年之前就發生過一起案件,很多健康保險客戶收到了一封指向 we11point.com 的釣魚電子郵件,其中 URL 里正確的字母“l”被換成了數字“1”,從而導致一批用戶成為了這一次攻擊的受害者。
最初,與特定國家/地區相關的頂級域名是不允許隨意注冊的。但后來國際域名規則中放開這一限制之后,又興起了一波新的誤植攻擊。例如最常見的一種手法就是注冊一個與 .com 域名類似的 .om 域名,一旦在輸入 URL 時不慎遺漏了字母 c 就會給不法分子帶來可乘之機。
網站如何防范誤植攻擊
對于一個公司來說,最好的策略就是永遠比誤植攻擊采取早一步的行動。
也就是說,在注冊域名的時候,不僅要注冊自己商標名稱的域名,最好還要同時注冊可能由于拼寫錯誤產生的其它域名。當然,沒有太大必要把可能導致錯誤的所有頂級域名都注冊掉,但至少要把可能導致錯誤的一些一級域名搶注下來。
如果你有讓用戶跳轉到一個第三方網站的需求,務必要讓用戶從你的官方網站上進行跳轉,而不應該通過類似群發郵件的方式向用戶告知 URL。因此,必須明確一個策略:在與用戶通信交流時,不將用戶引導到官方網站以外的地方去。在這樣的情況下,如果有不法分子試圖以你公司的名義發布虛假消息,用戶將會從帶有異樣的頁面或 URL 上有所察覺。
你可以使用類似 DNS Twist 的開源工具來掃描公司正在使用的域名,它可以確定是否有相似的域名已被注冊,從而暴露潛在的誤植攻擊。DNS Twist 可以在 Linux 系統上通過一系列的 shell 命令來運行。
還有一些網絡提供商(ISP)會將防護誤植攻擊作為他們網絡產品的一部分。這就相當于一層額外的保護,如果用戶不慎輸入了帶有拼寫錯誤的 URL,就會被提示該頁面已經被阻止并重定向到正確的域名。
如果你是系統管理員,還可以考慮運行一個自建的 DNS 服務器,以便通過黑名單的機制禁止對某些域名的訪問。
你還可以密切監控網站的訪問流量,如果來自某個特定地區的用戶被集體重定向到了虛假的站點,那么訪問量將會發生驟降。這也是一個有效監控誤植攻擊的角度。
防范誤植攻擊與防范其它網絡攻擊一樣需要保持警惕。所有用戶都希望網站的所有者能夠掃除那些與正主類似的假冒站點,如果這項工作沒有做好,用戶的信任對你的信任程度就會每況愈下。
誤植對開源軟件的影響
因為開源項目的源代碼是公開的,所以其中大部分項目都會進行安全和滲透測試。但錯誤是不可能完全避免的,如果你參與了開源項目,還是有需要注意的地方。
當你收到一個不明來源的合并請求Merge Request或補丁時,必須在合并之前仔細檢查,尤其是相關代碼涉及到網絡層面的時候。不要屈服于只測試構建的誘惑; 一定要進行嚴格的檢查和測試,以確保沒有惡意代碼混入正常的代碼當中。
同時,還要嚴格按照正確的方法使用域名,避免不法分子創建仿冒的下載站點并提供帶有惡意代碼的軟件。可以通過如下所示的方法使用數字簽名來確保你的軟件沒有被篡改:
- gpg --armor --detach-sig \
- --output advent-gnome.sig \
- example-0.0.1.tar.xz
同時給出你提供的文件的校驗和:
- sha256sum example-0.0.1.tar.xz > example-0.0.1.txt
無論你的用戶會不會去用上這些安全措施,你也應該提供這些必要的信息。因為只要有那么一個人留意到簽名有異樣,就能為你敲響警鐘。
總結
人類犯錯在所難免。世界上數百萬人輸入同一個網址時,總會有人出現拼寫的錯誤。不法分子也正是抓住了這個漏洞才得以實施誤植攻擊。
用搶注域名的方式去完全根治誤植攻擊也是不太現實的,我們更應該關注這種攻擊的傳播方式以減輕它對我們的影響。最好的保護就是和用戶之間建立信任,并積極檢測誤植攻擊的潛在風險。作為開源社區,我們更應該團結起來一起應對誤植攻擊。