以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads

UNI:Unicode 視覺欺騙攻擊深度解析

Author:

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

一、前言

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

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

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

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

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

孫宇晨用昨日購入的100萬枚UST在Uniswap上部署UST/USDD池:5月9日消息,孫宇晨發推表示,已在Uniswap上部署UST/USDD池。根據其分享的交易數據,孫宇晨將約73.5萬美元的USDD和約100萬枚的UST添加至Uniswap V3。此前昨日消息,孫宇晨買入逾100萬枚UST,并表示“可能有秘密計劃”。[2022/5/9 3:00:36]

2022年Trezor這款知名的硬件錢包出現了大量的網絡釣魚網站,釣魚鏈接https://suite.tr?zor.com。這個釣魚鏈接和真實Trezor官方網站trezor.io極為相似。

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

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

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

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

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

DeFi借貸協議Euler Finance發布Uniswap預言機攻擊模擬器:2月17日消息,DeFi借貸協議Euler Finance發布Uniswap預言機攻擊模擬器,最初是作為一種內部工具,使Euler開發團隊能夠監控與Euler上的借貸池相關的風險。Euler Finance決定將其向公眾開放,希望模擬器能夠證明有助于保護Uniswap預言機。[2022/2/18 9:59:42]

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

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

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

在復雜的腳本中,字符可能會根據周圍的字符更改形狀。

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

3個arabicletterheh(U+0647)組合在一起

Santiment:交易員對XRP、UNI等5種山寨幣的興趣激增:鏈上數據提供商Santiment表示,交易員對5種山寨幣的興趣激增,這五種代幣分別為XRP、Uniswap (UNI)、Voyager Token (VGX)、Curve (CRV)和1inch。大眾的興趣已經從比特幣和以太坊轉移,因為人們正在利用鏈上基礎知識來選擇價值即將增長的加密貨幣。(The Daily HODL)[2021/2/1 18:36:11]

多個字符可以產生一個字形

f=latinsmallletterf(U+0066)

i=latinsmallletteri(U+0069)

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

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

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

UNI突破13美元關口 日內漲幅為9.61%:火幣全球站數據顯示,UNI短線上漲,突破13美元關口,現報13.0001美元,日內漲幅達到9.61%,行情波動較大,請做好風險控制。[2021/1/26 13:30:24]

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

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

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

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

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

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

動態 | Unikeys推出指紋識別加密貨幣卡:據cryptobriefing報道,Unikeys推出了一種生物識別加密貨幣卡,用戶可以使用生物識別數據驗證每筆交易。Unikeys與已獲得瑞典指紋卡技術許可的香港公司MeReal Biometrics合作。當該卡被激活時,用戶的指紋被存儲為安全認證密鑰,在沒有生物識別確認的情況下無法進行交易。此舉將使投資者免于遭受加密貨幣詐騙。[2018/8/23]

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

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

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

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

列舉我之前發現的一個漏洞,SpoofAllDomainsContaining‘d’inAppleProducts。我在研究中發現,在蘋果產品中編碼latinsmallletterdum(U+A771)渲染的字形和latinsmallletterd(U+0064)極為相似。從Unicode中(U+A771)的字形標準可以發現,d后面應該還有一個小撇,但是在蘋果產品中把這個完全忽略掉了。

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

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

到這里我們確定了整個欺騙流程是完全可行的,那么攻擊者可以偽造域名中有d的所有域名。在Ggoogle統計的Top10k域名中,大約有超過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

…………

watchOS4.3.2??https://support.apple.com/zh-cn/HT208935

iOS11.4.1??https://support.apple.com/zh-cn/HT208938

tvOS11.4.1?https://support.apple.com/zh-cn/HT208936

macOSHighSierra10.13.5??https://support.apple.com/zh-cn/HT208937

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

某些字符具有固有的從右到左的書寫方向。當這些字符與從左到右顯示的其他腳本或符號集的字符混合時,生成的文本稱為雙向。文檔的內存表示與雙向文本的顯示外觀之間的關系由UAX#9:Unicode雙向算法管理。

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

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

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

在地址欄中實際渲染為:

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

構造POC-1

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

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

構造POC-2

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

構造POC-3

Tags:UNIODECODCODEunic幣和uni幣有關系嗎RODEOCODEXCODEX價格

幣安app下載
UND:75個基點落地 美聯儲加息“藥不能停”無懼經濟衰退副作用

作者:比推MaryLiu當地時間9月21日,美聯儲宣布繼續加息?0.75個百分點,上調聯邦基準利率至3%至3.25%之間,這是2008年初以來的最高水平.

1900/1/1 0:00:00
數字貨幣:金色早報 | Huobi Global控股股東完成股份出售

頭條 ▌HuobiGlobal控股股東完成股份出售金色財經報道,HuobiGlobal今天宣布,HuobiGlobal控股股東公司已向百域資本旗下基金轉讓所持有的全部HuobiGlobal股份.

1900/1/1 0:00:00
ETH:Gas費真的越低越好嗎?

原文標題:《HowhighdowewantgasfeestobeonEthereum?》原文作者:mhonkasalo 對ETH持有者來說.

1900/1/1 0:00:00
BAN:Bankless:淺談熊市下值得關注的5個領域

原文作者:BenGiove原文來源:Bankless市場正處于動蕩之中,監管的鎖鏈正在收緊,對區塊空間的需求是2019年以來的最低點,今年最大的事件——合并,也已經結束.

1900/1/1 0:00:00
COI:金色早報 | 俄羅斯開始開發國際加密支付機制

頭條 ▌莫斯科交易所正準備成為一個加密貨幣交易所金色財經報道,在社交媒體上稱,俄羅斯最大的證券交易所莫斯科交易所正準備成為一個加密貨幣交易所.

1900/1/1 0:00:00
WOOD:金色觀察 | “木頭姐”公開致信美聯儲:FED正犯下政策錯誤

10月10日,華爾街著名人物、ARK投資管理公司CathieWood發表了一封致美聯儲的公開信。在公開信中,Wood表示,美聯儲對通脹的強硬立場可能是錯誤的.

1900/1/1 0:00:00
ads