比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 比特幣 > Info

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

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模型進行對抗攻擊。他們通過一些不可察覺的編碼注入——比如一個不可見字符、同形符、重新排序或刪除的操作字符,可以顯著降低一些模型的性能,大多數模型都可能在功能上失靈。

UNI突破9美元:UNI突破9美元,現報9.009美元,日內漲幅達到9.76%,行情波動較大,請做好風險控制。[2022/7/29 2:46:39]

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

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

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

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

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

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

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

以太坊社區提案將Gelato Network內部DeFi用例G-UNI衍生為獨立項目:3月14日消息,以太坊社區中的一份提案提議將以太坊智能合約自動執行工具 Gelato Network 的內部 DeFi 用例 G-UNI 衍生為獨立項目。該提案提出:G-UNI 是由 Gelato 核心開發人員構建的內部 DeFi 應用程序,用于展示 Gelato 自動化基礎設施的功能。但截止目前,G-UNI 的 TVL 已經超過 5 億美元,是迄今為止 Uniswap v3 上最大的 LP,且許多主要的 DeFi 項目(MakerDAO、Aave、Fei、Frax、Angle 等)已經在使用該產品進行流動性挖掘。

提案中提到,一旦被通過,G-UNI 將更名為 Arrakis Finance,并將發布治理 Token SPICE。[2022/3/14 13:55:38]

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

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

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

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

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

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

f=latinsmallletterf(U+0066)

i=latinsmallletteri(U+0069)

Coinbase成立專注于新加密計劃的部門“UNIT 410”:金色財經報道,加密貨幣交易所Coinbase發布推文稱,Rob Witoff和他的團隊已加入Coinbase。新成立的“Unit 410”將獨立開展Coinbase主要業務之外的新加密計劃。根據Unit 410在領英的頁面,該部門旨在使最大的持有者能夠以安全和新穎的方式使用他們的加密貨幣。據悉,Witoff此前為Polychain實驗室負責人,曾在Coinbase擔任首席架構師及基礎設施與安全總監。[2021/9/16 23:28:01]

我們來看一個和視覺有關的,當多個不同字符組合后可能視覺外觀是相同的。例如字符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突破27美元關口 日內漲幅為5.7%:火幣全球站數據顯示,UNI短線上漲,突破27美元關口,現報27.0104美元,日內漲幅達到5.7%,行情波動較大,請做好風險控制。[2021/5/20 22:26:22]

在瀏覽器地址欄中直接渲染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也開始逐漸推廣和普及,這加速了全球化進展的同時,也帶來了一些安全風險,這點在后面我們會談到。

德州官員對運營加密欺詐計劃的公司Pek Universe發布停牌令:9月6日消息,美國德克薩斯州證券專員Travis J.Iles周四向由Eric Darwin Balusek(又名“比特幣教皇”)運營的加密貨幣投資計劃發出了緊急停牌令。據稱,這是一項欺詐性的加密投資計劃,該計劃向投資者承諾超過“百分百的利潤”。在停牌令發出兩天后,該計劃的網站Forex Birds及其母公司Pek Universe仍在運行。Travis J.Iles命令,Balusek必須停止該計劃,否則將面臨最高一萬美元的罰款或兩至十年的監禁,或兩者并罰。(Decrypt )[2020/9/6]

在前文中我們已經了解到,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:UNICODEODECODuniswap幣價格預測CODEX幣GODEcode幣如何挖

比特幣
加密貨幣應用為什么還沒有被大規模廣泛采用?_加密貨幣

撰寫:shivsak 編譯:深潮TechFlow我們談了很多關于加密貨幣的實際使用案例,但如果我們去問朋友家人們是否使用過加密貨幣,99%的人其實都沒有使用任何dApp.

1900/1/1 0:00:00
掃描60個頭部DEX 我們發現了這5個趨勢_DEX

作者:小牛 DEX賽道整體處于供大于求的狀態,DEX提供的交易和流動性挖礦功能已能基本滿足用戶的需求.

1900/1/1 0:00:00
一萬五千字報告教你如何抗擊區塊鏈詐騙_APP

作者:r0ckgh0st.eth&?cybercaf.ethSeeDAOIR導言:據安全數據顯示,今年以來有記錄的因詐騙和安全漏洞帶來的加密領域損失已近30億美元.

1900/1/1 0:00:00
模塊化區塊鏈:以太坊成為“世界計算機”的工程化方案_BLO

區塊鏈的模塊化趨勢 站在2022年的當下看Crypto的發展趨勢,在這個時候去做一個L1新公鏈難免有點牽強,模塊化區塊鏈的敘事不可忽視.

1900/1/1 0:00:00
NFT 效用的思考:如何引發新一輪熱潮?_DIG

原文標題:《TiCapitalInsights|NFT效用的思考》撰文:alpacacheeze,太和研究員2021年是NFT的元年,NFT市場在2022初達到48億美金的交易量頂峰.

1900/1/1 0:00:00
美國將祭出穩定幣法案 哪些穩定幣面臨風險?_FRA

美國眾議院提出穩定幣法案草案,認為發行和創建新的“內生抵押穩定幣”是非法的。在Terra/UST這一套算法穩定幣體系崩潰之后,美國加強了對穩定幣的關注.

1900/1/1 0:00:00
ads