原文作者:原文作者:原文作者:
原文作者:
餘弦
Domain -> IP_REAL
,慢霧科技創始人
Domain ->DNS Hijacking ( 劫持) 大家應該都耳濡目染了,歷史上MyEtherWallet、PancakeSwap、SpiritSwap、KLAYswap、Convex Finance 等等以及今天的CurveFinance,十來個知名加密貨幣項目都遭遇過。但很多人可能不一定知道其劫持的根本原因,更重要的是如何防禦(項目方角度及用戶角度),我這裡做個簡單分享。
DNS 可以讓我們訪問目標域名時找到對應的IP:
如果這種指向關係被攻擊者替換了:
IP_BAD( 攻擊者控制 )
那這個IP_BAD 所在服務器響應的內容,攻擊者就可以任意偽造了。最終對於用戶來說,在瀏覽器裡目標域名下的任何內容都可能有問題。
DNS 劫持其實分為好幾種可能性,比如常見的有兩大類:
域名控制台被黑,攻擊者可以任意修改其中的DNS A 記錄( 把IP 指向攻擊者控制的IP_BAD),或者直接修改Nameservers 為攻擊者控制的DNS 服務器;
在網絡上做粗暴的中間人劫持,強制把目標域名指向IP_BAD。
第1 點的劫持可以做到靜默劫持,也就是用戶瀏覽器那端不會有任何安全提示,因為此時HTTPS 證書,攻擊者是可以簽發另一個合法的。
第2 點的劫持,在域名採用HTTPS 的情況下就沒法靜默劫持了,會出現HTTPS 證書錯誤提示,但用戶可以強制繼續訪問,除非目標域名配置了HSTS 安全機制。
重點強調下:如果現在有Crypto/Web3 項目的域名沒有強制HTTPS( 意思是還存在HTTP 可以訪問的情況),及HTTPS 沒有強制開啟HSTS(HTTP Strict Transport Security),那麼對於第2 點這種劫持場景是有很大風險的。大家擦亮眼睛,一定要警惕。
對於項目方來說,除了對自己的域名HTTPS + HSTS 配置完備之外,可以常規做如下安全檢查:
檢查域名相關DNS 記錄(A 及NS) 是否正常;
檢查域名在瀏覽器裡的證書顯示是否是自己配置的;
檢查域名管理的相關平台是否開啟了雙因素認證;
http://example[.]com
檢查Web 服務請求日誌及相關日誌是否正常。
https://example[.]com
對於用戶來說,防禦要點好幾條,我一一講解下。
對於關鍵域名,堅決不以HTTP 形式訪問,比如:
而應該始終HTTPS 形式:
如果HTTPS 形式,瀏覽器有HTTPS 證書報錯,那麼堅決不繼續。這一點可以對抗非靜默的DNS 劫持攻擊。
對於靜默劫持的情況,不管是DNS 劫持、還是項目方服務器被黑、內部作惡、項目前端代碼被供應鏈攻擊投毒等,其實站在用戶角度來看,最終的體現都一樣。瀏覽器側不會有任何異常,直到有用戶的資產被盜才可能發現。
那麼這種情況下用戶如何防禦呢?

用戶除了保持每一步操作的警惕(尤其是錢包要簽名要確認的那一刻)外。
我推荐一個在Web2 時代就非常知名的瀏覽器安全擴展:@noscript ( 推特雖然很久很久沒更新,不過驚喜發現官網更新了,擴展也更新了),是@ma1 的作品。
NoScript 默認攔截植入的JavaScript 文件。
https://curve[.]fi/js/app.ca2e5d81.js
但是NoScript 有一點的上手習慣門檻,有時候可能會很煩,我的建議是對於重要的域名訪問可以在安裝了NoScript 的瀏覽器( 比如Firefox) 上進行,其他的儘管在另一個瀏覽器( 如Chrome) 上進行。
隔離操作是一個很好的安全習慣。許多你可能覺得繁瑣的,駕馭後、習慣後,那麼一切都還好。
原文鏈接

原文鏈接


