以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > ICP > Info

Unicode 視覺欺騙攻擊深度解析_UNI

Author:

Time:1900/1/1 0:00:00

一、前言

2022 年 9 月 13 日,Unicode 15.0 正式版發布。在 Unicode 15.0 中增加了 4,489 個字符,總共字符數量達到了 149,186 個。這些新增內容包括 2 個新腳本,總共腳本數量達到 161 個,以及 20 個新的表情符號字符。同時,幾個重要的 Unicode 規范也隨著 15.0 版本進行了更新,這其中就包括 Unicode 安全機制(UTS#39)這個規范,它意在減少因 Unicode 字符視覺欺騙帶來的同形異意攻擊(Homoglyph Attack)。

同形異意攻擊(Homoglyph Attack)是非常古老的一種視覺欺騙攻擊方式。在機械打字機時代,很多打字機為了簡化設計和降低制造及維護成本,鍵盤上沒有單獨的 1 和 0。打字員會使用小寫字母 L 和大寫字母 i 來代替數字 1,使用大寫字母 O 來代替數字 0。當這些相同的打字員在 70 年代和 80 年代初轉變為計算機鍵盤操作員時,他們的舊鍵盤習慣在他們的新職業中繼續存在,并成為極大混亂的源泉。這應該是視覺混淆、同形異意攻擊集中爆發的一個時期。

在此之后,打字機被文字處理器所代替,信息化時代逐步到來,字符編碼也開始由 ASCII 字符集逐漸擴充到 Unicode 字符集。我們開始使用瀏覽器或其他應用客戶端來呈現文本,那些在某些語境中不適合使用同形字書寫 URL、公式、源代碼、ID 等等,其相似的外觀繼續使得用戶可能在視覺上無法區分。

Unicode 視覺欺騙取決于視覺上可以混淆的字符串:兩個 Unicode 字符串外觀上非常相似,在通常的屏幕分辨率下,它們以小尺寸的普通字體出現,很容易讓人們誤認為是另一個。視覺混淆沒有明顯的規則:當尺寸足夠小時,許多字符都看起來像其他字符。“屏幕分辨率下的小尺寸”是指大多數腳本使用 9-12 像素的字體。易混淆性還取決于字體的風格:對于傳統的希伯來字體,許多字符只能通過細微的差別來區分,而這些細微差別可能在小尺寸時丟失。在某些情況下,字符序列也可用于欺騙:例如,“rn”(“r”后跟“n”)在許多 sans-serif 字體中與“m”在視覺上混淆。

近些年來,因 Unicode 編碼欺騙發生了很多惡意攻擊事件,人為或編譯器或 AI 都可能因 Unicode 欺騙產生錯誤的判斷和解析。例如 2021 年有研究人員在谷歌等商業系統中使用 Unicode 的這些特殊字符對 NLP 模型進行對抗攻擊。他們通過一些不可察覺的編碼注入——比如一個不可見字符、同形符、重新排序或刪除的操作字符,可以顯著降低一些模型的性能,大多數模型都可能在功能上失靈(https://arxiv.org/abs/2106.09898)。

Unisat:將于今日上線NFT交易市場:7月12日消息,比特幣生態錢包Unisat發推稱,將于今日上線NFT交易市場。

據此前報道,該市場將支持超過1500個NFT系列。為慶祝銘文NFT系列交易上線,UniSat計劃下調整個市場的服務費。[2023/7/12 10:50:03]

2022 年 Trezor 這款知名的硬件錢包出現了大量的網絡釣魚網站,釣魚鏈接https://suite.tr?zor.com。這個釣魚鏈接和真實 Trezor 官方網站 trezor.io 極為相似。(此案例來源于《區塊鏈黑暗森林自救手冊》:https://github.com/slowmist/Blockchain-dark-forest-selfguard-handbook/blob/main/README_CN.md)

雖然基于客戶端的尤其是瀏覽器端的抵御視覺欺騙的防御措施一直在完善,但并沒有辦法完全封堵住這種攻擊。第一,視覺欺騙是一種很難被完全消亡的攻擊,因為在足夠小的尺寸情況下人自身的生理視覺體系也是無法分辨的;第二,Unicode 字符集非常龐大,并且在不斷的增加;第三,需要標準組織、瀏覽器開發商、域名注冊商等多方共同協作去完成。

本文主要研究當下 Unicode 中因字形渲染、混合腳本、PunyCode、雙向文本、組合字符引起的視覺欺騙問題,結合作者發現的不同類型的 Unicode 視覺欺騙漏洞,分享漏洞挖掘過程方法并給出一些防御的思路。

二、字形渲染帶來的安全風險

當字體或渲染引擎對字符或字符序列的支持不足時,就使得本應該在視覺上可以區分的字符或字符序列出現新的問題--視覺混淆。尤其是這些字符被做為關鍵的信息出現時,比如在瀏覽器重要的安全指示器地址欄中,這種視覺欺騙的危害就會顯而易見。瀏覽器廠商對于地址欄上的 IDN 欺騙問題,一直在做積極的防御,通常是在瀏覽器里維護一個重要域名列表,如果一個域名和列表中的域名同形異議,則將其轉化為 Punycode 編碼顯示。

渲染支持不足,直接導致每一個字符的字形含義往往超出我們的預期,這種不確定性使得視覺欺騙隨時都可能發生。那么字形到底是什么,它和字型、字符、字體有什么關系,包括 Unicode 中越來越火的 Emoji 表情它是字符嗎?其中一些基本的名詞概念非專業人士經常混淆,我們先簡要了解下。

Compound將提高cCOMP借款上限,并更換cCOMP和cUNI利率模型:10月23日,據官方消息,Compound提案130已投票通過,將在兩天后實施。該提案旨在提高cCOMP借款上限(從90,750 COMP增加到150,000 COMP),并改變cCOMP和cUNI的利率模型。[2022/10/23 16:36:04]

字體(英語:Typeface)指的是一組字符的設計,通常包括字母、一組數字和一組標點符號。也常包括表意字符以及制圖符號。每個字體都是字形的集合,比如宋體、黑體等。有些字體技術非常強大,比如 TrueType/OpenType,它們可以根據分辨率、系統平臺、語言等來選擇顯示最佳的形狀。但是,它也可以用于安全攻擊,因為它足夠強大,可以在打印時將屏幕上的“$ 100.00”外觀更改為“$ 200.00”。 此外,層疊樣式表(CSS)可以更改為不同的字體,用于打印與屏幕顯示,這可以使用更多可混淆字體。這些問題并非特定于 Unicode。為了降低此類漏洞利用的風險,程序員和用戶應該只允許可信任的字體。

字型(英語:font;傳統英式英語:fount)是指印刷行業中某一整套具有同樣樣式和尺碼的字形,例如一整套用于內文的宋體 5 號字、一整套用于標題的 10 號字就叫一套字型。電腦早期用點陣字,仍然有字型概念,同樣一套風格如中易宋體,一套字型是指一整套 15×16 像素或一整套 24×24 像素的字。矢量字型出現后,同一套風格字型已不用制作不同像素字型,只需制作一套即可隨意縮放,“字型”與“字體”之間的界限開始模楜。一般的英語使用者同樣分不清“字型”(Font)與“字體”(Typeface)的分別。

字形(英語:glyph),又稱字圖或書形,是指字的形體。中華人民共和國國家標準 GB/T 16964《信息技術·字型信息交換》中定義字形為“一個可以辨認的抽象的圖形符號,它不依賴于任何特定的設計”。在語言學中,字(character)是語意的最基本單位,即語素;字形是指為了表達這個意義的具體表達。同一字可以有不同的字形,而不影響其表達的意思,例如拉丁字母第一個字母可以寫作 a 或 ɑ,漢字中的“強/強”、“戶/戶/戸”。

在復雜的腳本(如阿拉伯語和南亞語腳本)中,字符可能會根據周圍的字符更改形狀。

(1)字形可以隨周圍環境所改變

3 個 arabic letter heh (U+0647) 組合在一起

流動性池追蹤器Uniswaproi創建Curve LP ROI計算器:流動性池追蹤器Uniswaproi創始人Federico Nitidi發推稱,已經為Curve LP創建投資回報率(ROI)計算器,可以在uniswaproi.com使用。[2020/11/16 20:56:14]

(2)多個字符可以產生一個字形

f = latin small letter f (U+0066)

i = latin small letter i (U+0069)

我們來看一個和視覺有關的,當多個不同字符組合后可能視覺外觀是相同的。例如字符 U + 0BB6 SHA 和 U + 0BB8 SA 通常非常不同。但這兩個組合的字符序列,視覺感官上完全相同。底層的二進制是不同的。

其實多字符組合不僅僅是視覺欺騙,有時這種多字符組合也可以導致系統內存崩潰。CVE-2018-4124 這個漏洞可導致 macOS High Sierra 10.13.3 在處理惡意制作的字符串時致堆損壞。???? 的原始序列是 U+0C1C U+0C4D U+0C1E U+200C U+0C3E,這是一個泰盧固語字符序列:輔音 ja (?)、virama (?)、輔音 nya (?)、零-width 非連接符和元音 aa (?)。當 macOS 在處理 ???? 這個字符序列時,即可導致系統崩潰。

表情符號(英文:Emoji)是象形文字(圖形符號),通常以彩色卡通形式呈現并在文本中內聯使用。它們代表面部,天氣,車輛和建筑物,食物和飲料,動物和植物,或代表情感,感覺或活動的圖標。Emoji 已經無處不在,它正在成為跨越不同文化的所有人通用的語言。但不同人對 Emoji 的使用理解以及各個操作系統碎片化的支持,也使得帶來了一些問題。比如:短期內你也不會看到步槍的表情符號,U+1F946。Unicode 組織包括蘋果和微軟都反對加入步槍符號。手槍和其他武器的 Emojis 已經使人們陷入了法律的困擾。之前一家法國法院裁定手槍表情符號可能構成死亡威脅,將一名把槍的表情發給前女友的男子判處三個月監禁。

庫幣被盜ERC20代幣已通過Uniswap交易266ETH:北京鏈安Chainsmap監測系統發現,截止北京時間今天下午5點,庫幣交易所被盜的ERC20代幣已經通過Uniswap交易獲利約266ETH。據北京鏈安鏈上安全專家SXWK介紹,今天涉案地址主要轉出了OCEAN、ORN、KAI三種ERC20代幣,部分經過中間地址跳轉后分配到三個地址,目前已經通過Uniswap交易的是OCEAN。

SXWK表示,通過DEX進行交易看似規避了中心化交易所的監管措施,但是它畢竟是幣幣交易,交易獲得的ETH依然存在一個接下來的處置問題。本次交易后,涉案者便將其中的118.6 ETH轉到了一個新的地址。[2020/9/27]

在瀏覽器地址欄中直接渲染 U+1F512 這個編碼也是相當危險的。因為它和 HTTPS 安全小鎖外觀上非常相似。攻擊者可以對其進行安全小鎖的偽造。U+1F512 編碼曾在 Chrome/Firefox 瀏覽器中出現過這樣的安全問題。

三、混合腳本帶來的安全風險

混合腳本是有很多合法的用途的,例如 Ωmega。但視覺上容易混淆的字符通常不會放在一個腳本中。在視覺上容易混淆的字符為欺騙提供了許多機會,例如下面這兩個域名,希臘小寫字母 Omicron 和拉丁文 o 外觀是非常相似的。

很久之前,域名只允許包含拉丁字母 A-Z,數字和一些其他字符(ASCII 字符集)。之后大家發現,僅僅支持 ASCII 碼的域名可能是有問題的,因為世界上還有很多非拉丁文語系的國家和地區,他們也渴望在域名中使用自己的語言符號。后來經過多次提案討論,在 2003 年發布了國際化域名的規范 [rfc3490],它允許大多數的 Unicode 在域名中使用,普遍將這個規范稱為 IDNA2003。之后在 2010 年批準發布了對 IDNA2003 的修訂版 [rfc5895],稱這個修訂版為 IDNA2008。但 IDNA2003 和 IDNA2008 并沒有有效的解決國際化域名中的某些問題。隨后,Unicode 聯盟發布了 [UTS-46] 解決了某些兼容性的問題。

在 IDNA 中使用 PunyCode 算法來實現非 ASCII 域名到 ASCII 域名的轉換。PunyCode 算法可以將任何一個非 ASCII 的 Unicode 字符串唯一映射為一個僅使用英文字母、數字和連字符的字符串,編碼的域名在前面都加上了 xn-- 來表明這是一個 PunyCode 編碼。

Uniswap 7月新增近5.8萬新用戶:金色財經報道,根據The Block Research的調查,Uniswap在7月增加了57,976個新用戶,6月新增24,963,即增長率達132%。截至八月,該交易所已增加了27253個用戶。[2020/8/11]

國際化域名(IDN)是在 Unicode 中定義的任何字符集或腳本中注冊的二級或三級域名或 Web 地址。直到 2009 年底之前,頂級域名僅限于拉丁字母 a-z,之后隨著 Web 全球化發展,IDN TLDs 也開始逐漸推廣和普及,這加速了全球化進展的同時,也帶來了一些安全風險,這點在后面我們會談到。

在前文中我們已經了解到,Unicode 15.0 中的字符總量 149,186 個,腳本數 161 個。這些腳本中大部分都可以被用于域名注冊,并且數量還在增加中。以頂級域名(TLD)COM 為例,Verisign 制定了 IDN 注冊的策略,規定了允許和禁止的代碼點。并制定了 IETF 標準、對特定語言的限制、對腳本混淆的限制、ICANN 受限 Unicode 代碼、特殊字符這五條驗證規則,遵循這五條規則的 IDN 被認為是有效的注冊。

在這五條 IDN 注冊規則中,我們會重點關注“腳本混淆的限制”這條規則,因為這對發現 IDN 上的視覺欺騙問題有幫助意義。

[對腳本混淆的限制]

Verisign 不允許使用混合的 Unicode 腳本進行注冊。如果 IDN 中包含兩個或多個 Unicode 腳本代碼,將拒絕注冊。例如拉丁文腳本中的字符不能和任何西里爾字符在同一個 IDN 中使用。IDN 中的所有代碼必須來自同一個 Unicode 腳本。這樣做是為了避免混淆的代碼出現在同一個 IDN 中。

下表列出了允許使用的 Unicode 腳本。

列舉我之前發現的一個漏洞,[CVE-2018-4277] Spoof All Domains Containing ‘d’ in Apple Products 。我在研究中發現,在蘋果產品中編碼 latin small letter dum (U+A771) 渲染的字形和 latin small letter d (U+0064) 極為相似。從 Unicode 中 (U+A771) 的字形標準可以發現(http://www.unicode.org/charts/PDF/UA720.pdf),d 后面應該還有一個小撇,但是在蘋果產品中把這個完全忽略掉了。

接下來,我去注冊了一個真實的域名,使這個 IDN Spoof 可以正常運行。我們知道在 Verisign 制定的 IDN 注冊的規則中,不允許使用混合的 Unicode 腳本進行注冊。如果 IDN 中包含兩個或多個 Unicode 腳本代碼,將拒絕注冊。而(U+A771)也是屬于 Latin,應該是符合域名注冊商規則的。于是域名成功注冊成功了。

我又注冊了一個 SSL 證書,使這個 IDN Spoof 看的會更加真實完美。效果如下,Safari 并沒有將這個域名轉化為 punycode 顯示,所以我們成功了。

到這里我們確定了整個欺騙流程是完全可行的,那么攻擊者可以偽造域名中有 d 的所有域名。在 Ggoogle 統計的 Top 10k 域名中,大約有超過 25% 的網站域名中有d這個字符。這些網站的域名都可以被偽造。

https://chromium.googlesource.com/chromium/src/+/master/components/url_formatter/top_domains/alexa_domains.list

?linkedin.com

?baidu.com

?jd.com

?adobe.com

?wordpress.com

?dropbox.com

?godaddy.com

?reddit.com

…………

[蘋果修復的補丁]

[受影響產品]

watchOS 4.3.2  https://support.apple.com/zh-cn/HT208935

iOS 11.4.1  https://support.apple.com/zh-cn/HT208938

tvOS 11.4.1 https://support.apple.com/zh-cn/HT208936

macOS High Sierra 10.13.5  https://support.apple.com/zh-cn/HT208937

四、雙向文本帶來的安全風險

某些字符(例如阿拉伯語和希伯來語腳本中使用的字符)具有固有的從右到左的書寫方向。當這些字符與從左到右顯示的其他腳本或符號集的字符混合時,生成的文本稱為雙向(縮寫為 bidi)。文檔的內存表示(邏輯順序)與雙向文本的顯示外觀(可視順序)之間的關系由 UAX#9:Unicode 雙向算法 [UAX9] 管理。

由于某些字符具有弱或中性的方向性,而不是強左向右或從右到左,因此 Unicode 雙向算法使用一組精確的規則來確定最終的視覺呈現。然而,任意文本序列的呈現,可能導致文本序列無法清晰地被閱讀,或者可能在視覺上混淆。

在一個 URL 中,經常會遇到多種方向性(弱性、中性、強性)的字符同時存在的情況。雖然 Unicode 雙向算法使用一組精確的規則來確定最終的視覺呈現,但是多種方向性的文本序列在呈現時,還是可能導致文本序列無法清晰地被閱讀,或者可能在視覺上混淆。

Chrome 之前出過這樣一個漏洞,在 Chrome 里訪問:

在地址欄中實際渲染為:

CVE-2018-4205 是我之前發現的一個漏洞,利用了 RTL 和空白符導致了 URL 地址欄欺騙。下面就以這個漏洞為例進行講解。

(1)構造 POC-1

訪問 http://www.apple.com.xn--ggbla3j.xn--ngbc5azd/。可以看到

Chrome/Firefox/Safari三個瀏覽器地址欄,顯示都是一樣的。Edge 顯示 punycode。

(2)構造 POC-2

在四個瀏覽器中訪問 POC-2,我們此時已經發現了問題。在 Safari 中出現了 RTL 和空白字符。

(3)構造 POC-3

慢霧科技

個人專欄

閱讀更多

財經法學

成都鏈安

金色早8點

Bress

鏈捕手

PANews

Odaily星球日報

Tags:UNICODEODECODUnique.PhotoDecode CoinHaodestar TokenCOD價格

ICP
項目周刊 | BTC交易所存款數量達到2年低點_ETH

金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、行情與合約數據、礦業信息、項目動態、技術進展等行業動態。本文是項目周刊,帶您一覽本周主流項目以及明星項目的進展.

1900/1/1 0:00:00
元宇宙+教育是未來嗎?_元宇宙

眼下,冠以“元宇宙”之名的招聘越發火熱,更有不少崗位給出高薪攬才。伴隨著市場對人才的渴求,越來越多的人關注到元宇宙如何應用到教育行業中的問題.

1900/1/1 0:00:00
云九資本牛鳳軒:我們仍處在Web3.0爆發的前夜_WEB

截至今年七月底,以太坊域名服務獨立地址數已突破50萬,Web3正收獲越來越大的用戶群體。從2017年開始,Web3基礎設施逐漸完備,呈現出從“泥濘小路”到“柏油公路”的變化.

1900/1/1 0:00:00
金色觀察|Crypto Pragmatist:5個值得關注的加密敘事_BTC

熊市里,一切都很緩慢。以前的各種日常敘事轉變為關于宏觀經濟學的討論、V神的那些“有趣”照片,以及普遍的不安感。然而,這一切的背后,是希望.

1900/1/1 0:00:00
金色Web3.0日報 | 鮑威爾:DeFi擴張到零售前需要適當監管_區塊鏈

1.DeFi代幣總市值:445.36億美元 DeFi總市值 數據來源:coingecko2.過去24小時去中心化交易所的交易量40.

1900/1/1 0:00:00
模塊化:以太坊未來十年的破局之路_以太坊

原文作者:Codex Labs? Vitalik Buterin 提出 The Blockchain Trilemma 已經有 5 年之久,?論是 ETH-core 社區.

1900/1/1 0:00:00
ads