以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads

Unicode 視覺欺騙攻擊深度解析_CODE:CODY價格

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

Nethermind研究員發起將Uniswap V3部署至StarkNet的提案:1月6日消息,Nethermind研究員Deven Matthews在Uniswap社區發起將Uniswap V3部署至StarkNet的提案。Deven Matthews表示,Nethermind團隊已通過其開發的Solidity到Cairo轉譯器Warp,將Uniswap V3 Core的Solidity代碼庫轉譯到Cairo,并在StarkNet的本地測試網上進行了測試。Deven Matthews還表示,若提案通過,有望在第二季度前在StarkNet主網上完全部署Uniswap V3。[2023/1/6 10:58:17]

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

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

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

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

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

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

Uniswap創始人:治理合約升級需特別謹慎,7天投票期或不足以進行徹底的安全審查:8月31日消息,Uniswap創始人Hayden Adams發推稱,Uniswap社區成員最近提議將Uniswap治理合約升級為Bravo。今天實驗室團隊成員發現了一個小問題,proposalCount初始化為0,initialProposalCount為8,執行檢查proposalId大于initialProposalCount,這會使接下來的8個提案無法執行。Hayden Adams表示其通過提交8個永遠無法執行的“虛擬”提案來修復問題,目前修復治理工作。最后強調,治理合約升級需要特別謹慎,7天的投票期可能不足以進行徹底的安全審查。[2021/8/31 22:48:33]

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

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

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

UniTrade公開V3版本特性,包含自動交易、IDO、NFT等:3月24日消息,基于Uniswap的鏈上交易平臺UniTrade公開V3版本新特性,其發展方向計劃包括:自動交易、UniTradeFarms、Staking獎勵、UniTradeIDOLaunchpad、彩票、NFT制作門戶、UniTrade交易所等。注:Unitrade為用戶提供各種Uniswap不具備的交易工具,包括實時訂單簿、實時深度圖、成交歷史、K線指標、限價委托等功能。[2021/3/24 19:13:57]

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

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

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

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

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已經使人們陷入了法律的困擾。之前一家法國法院裁定手槍表情符號可能構成死亡威脅,將一名把槍的表情發給前女友的男子判處三個月監禁。

OKEx:網傳UNI空投系謠言:據OKEx官方微博消息,根據用戶反饋,近期有不法分子造謠UNI即將與OKEx進行空投,對此OKEx鄭重聲明,OKEx未與該項目方有任何接觸,請廣大用戶謹慎鑒別,避免造成個人損失,OKEx空投信息請以公告為準。 ????[2020/11/29 22:28:04]

在瀏覽器地址欄中直接渲染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編碼。

區塊鏈初創公司Bloom與TransUnion合作推出移動應用程序:區塊鏈初創公司Bloom希望利用去中心化為消費者創建基于區塊鏈的身份,讓用戶完全控制自己的信息流。Bloom與美國信用報告機構TransUnion合作推出其第二款移動應用程序。(Bitcoin Exchange Guide)[2020/4/16]

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

在前文中我們已經了解到,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:UNIODECODECODUnilayerXXNODECODEXCODY價格

幣安app官網下載
Polkadot 官方發文:公布 10 大開發主題及上線時間_DOT:polkadot怎么讀音發音

隨著Polkadot社區進入2022年最后一個季度,我們想向社區更新我們一直在研究的一些重要的開發主題.

1900/1/1 0:00:00
Glassnode 鏈上數據看以太坊合并的“歷史事件”_以太坊:VegasDoge

作者:Glassnode原文鏈接:https://insights.glassnode.com/chinese/the-week-onchain-week-38-2022-chinese/一個宏.

1900/1/1 0:00:00
資料:使DAO具有粘性的四個因素_NFT:Aurora DAO

對“傳統”員工滿意度的研究一再表明,工作中有五個關鍵因素(可以這么說):任務樂趣、對任務重要性的理解、員工、反饋文化和成長機會.

1900/1/1 0:00:00
別了李林 一個時代的結束_加密貨幣:區塊鏈

2022年10月8日,香港百域資本旗下并購基金完成對火幣李林的股份收購,據傳在收購早期幣安也參與其中;而在2017年,幣安還只是初出茅廬,而火幣則是絕對霸主.

1900/1/1 0:00:00
一個NFT玩家在熊市:從虧損85 ETH到盈利100 ETH_ETH:ATT

僅靠一個項目上演逆襲好戲?熊市里,奇跡依然在不斷發生…加密錢包被盜事件越發頻繁,方式層出不窮,防不勝防。5月底,一個叫Hanwe的NFT玩家由于電腦中了木馬,被盜走了85ETH.

1900/1/1 0:00:00
盤點固件安全賽道 a16z看到了什么?_BIO:EFI

原文來源:阿法兔研究筆記本文是筆者最近關于基礎安全領域的人、趨勢、現象的觀察,把系列思考總結成為了文章,試圖從幾個角度,探討一個國內相對較少有人探討的賽道——固件安全市場和需求變化的方向.

1900/1/1 0:00:00
ads