国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Live2D:軟件安全翻車現(xiàn)場

2023-03-05 06:59 作者:電量量  | 我要投稿

譯者前言

  • 這會影響誰?所有從網(wǎng)絡(luò)上下載 Live2D 模型(moc3 文件)并使用的人,在尤其是公開、不可信任的來源獲取 Live2D 模型的人。如果你從私人來源、約稿等獲取模型,風(fēng)險會更小。但是只要你打開了文件,就有風(fēng)險中招。

  • 攻擊者能做什么?在你的電腦上想干什么干什么。

  • 這個漏洞被利用過嗎?沒有(2023/3/4)。但隨著漏洞的公開,攻擊者一定會找上門來。

  • 你能做什么?讓 Live2D 公司行動起來,立刻修復(fù)這個漏洞。

  • 本文有一部分主觀、帶有一定偏見的推測部分。譯者并不同意作者的所有觀點,并不為作者的觀點負責(zé)。建議讀者保持獨立思考。

  • 本文原文地址為 https://undeleted.ronsor.com/live2d-a-security-trainwreck/。原作者郵箱為 ronsor (at) ronsor.com。

  • 譯者能力有限,未曾涉足過 Live2D 的開發(fā)到使用,僅對網(wǎng)絡(luò)安全有一定了解。若有錯誤,歡迎斧正,感激不盡。

  • 本文譯者:Dianliang233(https://github.com/dianliang233),已經(jīng)原作者授權(quán)發(fā)布。

情況更新:本文所述的漏洞已經(jīng)被分配為?CVE-2023-27566(https://www.cve.org/CVERecord?id=CVE-2023-27566)。

Live2D(https://live2d.com/)Cubism 是一個熱門的 2D 任務(wù)動畫軟件,聞名于其在 VTuber[1]?和一些手游中的使用。為了加載此軟件生成的模型,開發(fā)者需要引用該公司專有的“Cubism SDK”,而且沒有替代品。這個 SDK 的核心元件是“Cubism Core”,一個微型 C 語言庫。它負責(zé)解析并加載?MOC3 文件,Live2D Cubism 用它儲存 2D 人物。不幸的是,Cubism Core 是一個充滿缺陷,甚至無法修復(fù)的軟件。

如果你只對代碼感興趣,請看文末。

如果你覺得太長不看,請看文末。

初見 MOC3

MOC3 是一個專有二進制格式。它包含一個含有 2D 人物的相關(guān)數(shù)據(jù)的偏移(offset)列表,例如圖層和可調(diào)整的參數(shù)。這種格式實際上是 C 語言數(shù)組和結(jié)構(gòu)體的原始轉(zhuǎn)儲。雖然這個格式很丑,但它確實能用,我們也應(yīng)該可以編寫一個安全的加載器來加載這種格式。MOC3 文件并不包含實際的紋理。

對 MOC3 進行逆向

一個最簡單的 MOC3 文件只需要兩個組件:一個文件頭,其中有魔法字符串“MOC3”、版本和字節(jié)序。還有一個分段偏移表,包含文件中每一段數(shù)據(jù)的偏移,這些條目都以 32 位有符號整數(shù)儲存。該表緊密遵守數(shù)組結(jié)構(gòu)體(https://en.wikipedia.org/wiki/AoS_and_SoA)范式。

我在把玩了一陣子之后,發(fā)現(xiàn)了 MOC3 文件的準確布局,并用?ImHex?編輯器(https://imhex.werwolv.net/)探索了一些屬性。

ImHex 支持模式(pattern),可以定義二進制格式的結(jié)構(gòu)和其他元素。這使得我們可以輕松地編寫一個接口來讀取和編輯 MOC3 文件的各個分段。

最終的模式文件大約有 400 行,比我預(yù)期的要短得多。一個值得注意的分段是計數(shù)信息表,它指定了每種類型的對象的數(shù)組中元素的數(shù)量。

MOC3ingbird(反舌鳥):安全問題

雖然 Cubism Core 是僅有的加載器,但它毫無安全性可言!通過更改分段偏移表中的條目可以發(fā)現(xiàn),Cubism Core 會盲目地將給定的偏移加到 MOC3 數(shù)據(jù)的內(nèi)存基址上,這意味著一個惡意的 MOC3 文件可以隨便指示 Cubism Core 覆蓋 MOC3 數(shù)據(jù)所在位置的內(nèi)存,最大可以覆蓋大約 2 GiB。整個文件基本上就是一個我讓你寫入什么你就寫入什么,我讓你寫入哪里你就寫入哪里(Write-what-where)的原語[2]。除此之外,計數(shù)信息表也沒有邊界檢查,因此你可以在一個 8192 字節(jié)的 MOC3 文件中指定 500,000 個參數(shù)。總之,Cubism Core 的實現(xiàn)非常容易“翻車”。

MOC3ingbird(反舌鳥)是一個簡單的 MOC3 文件,它可以讓官方 Live2D 查看器和任何使用 Cubism Core 的第三方軟件崩潰。 它本身并不包含任何有害代碼,但它可以很容易被修改為可以執(zhí)行任何代碼。上圖就展示了 MOC3ingbird?exploit.moc3?文件的一部分分段。

缺陷是設(shè)計疏忽造成的嗎?

MOC3 格式雖然技術(shù)上是可用的,但是它的設(shè)計完全失敗。而 Cubism Core 有那么多的問題,它竟然在用于生產(chǎn)環(huán)境時還要求購買這么貴的許可(https://www.live2d.com/en/download/cubism-sdk/release-license/)。雖然這個格式可能是故意設(shè)計成這么糟糕的,但更有可能它就沒有被仔細設(shè)計過。字段和分段就像是想什么時候添加就什么時候添加,根本沒有合適的實現(xiàn)。當(dāng)然,有一些解決方案可以讓這種設(shè)計變得合理,最簡單的就是使用標準的序列化格式,例如 JSON、MessagePack、CBOR 或者 Protocol Buffer。遺憾的是,我懷疑 Live2D 的開發(fā)者是故意不這么做的,目的就是為了讓這個私有格式壟斷市場,排除競爭。

這一切決定和“沒有決定”的結(jié)果就是一個不透明、不安全的混亂的文件格式,而且沒有從頭重寫就大概不可能解決。說實話,我并不關(guān)心他們是不是只是疏忽大意或者是為了賺錢,但是讓用戶面對這么簡單且可以避免的漏洞是不可接受的。

隱私災(zāi)難

Live2D 公司公然對合適的安全事件視而不見甚至更加糟糕??紤]到他們的很大一部分用戶(VTuber[3])都會盡一切努力保護自己的隱私。人肉/開盒(dox(x)ing)[4]?在 VTuber 社區(qū)是一個很大的問題,而且惡意方可以輕易利用這些漏洞來在不知情用戶的電腦上部署間諜軟件。

為什么要公開這個?

說實話,我不認為 Live2D 公司會在沒有強烈的反饋抗議的情況下修復(fù)這些問題。如果向他們直接匯報這個問題,他們就會認為它“不重要”。Live2D 公司表面似乎非常重視保密和安全性,但他們的手段只有含糊其辭,而不是重視透明度和真正的不是“半吊子”的安全。他們的真面目我已經(jīng)在在 FreeLive[5]?事件和其他我不能透露的事情中所見到的那樣。我很確定,如果這篇文章沒有被發(fā)布,一個黑客組織最終會發(fā)現(xiàn)這些漏洞并在秘密中利用它們,而 Live2D 的用戶將一無所知。

Live2D 的用戶和社區(qū)必須推動他們修復(fù)這些問題,或者切換到開放的其他方案,比如?Inochi2D(https://inochi2d.com/)。至于 Live2D 公司喜歡不喜歡這樣的手段,就不重要了。

反競爭

上文中,我提及了 Cubism SDK 是唯一可以加載 MOC3 模型的加載器。雖然從簡單的角度理解,可能是因為這個格式太過復(fù)雜和難以理解,但可能還有另一個原因。

5.1.9 其他限制行為

  • 輸出文件不得同與 Live2D 公司開發(fā)的中介軟件產(chǎn)生或可能產(chǎn)生沖突[原文如此][6]的中介軟件等組合使用

(摘自?Live2D EULA:https://www.live2d.com/eula/live2D-editor-software-license-agreement_en.html)

以防萬一你沒看清楚,或者不理解,Live2D 的 EULA 禁止用戶把(用 Live2D 公司的既昂貴還需要付費許可的編輯器軟件:https://store.live2d.com/en/)創(chuàng)建的模型,放入 可能的更安全的 Cubism Core 的替代方案中使用。如果你使用他們的編輯器軟件,你就必須使用他們的不安全、私有的 SDK。

如果你是一位使用 Live2D SDK 的開發(fā)者,我鼓勵你或你的雇主用你們的錢來表達你們的不滿。如果你需要一些鼓勵的話,讓我再提醒你一下:

  • 您不得從事其他任何 Live2D 公司認為不合適的活動。

讓我們再往下滑滑……

7.4 根據(jù)第 7.1 條規(guī)定,本協(xié)議終止后,您必須立即銷毀本軟件與所有相關(guān)副本、以及包括輸出文件和其他任何因使用本軟件而產(chǎn)生的衍生物在內(nèi)的衍生作品。

他們很直白地說了,Live2D 公司可以字面上地把你們的生意一秒就抹殺干凈。

尚不清楚如果一個人從第三方獲得 Live2D 模型,是否會受到這些條款的約束(可能不會,因為他們從未同意過這份協(xié)議,假設(shè)他們沒有自己安裝 Live2D Cubism 編輯器)。

讓我們再讀一些限制……

  • 未經(jīng) Live2D 公司授權(quán)[原文如此][7],您不得公開發(fā)布本軟件以及輸出文件軟件中包含的本軟件的任何代碼與內(nèi)容;

我可以確認 MOC3 文件不包含任何編輯器軟件的跡象,至少不包含任何代碼。事實上,我剛剛向你展示了如何從頭開始制作 MOC3 文件,而沒有從編輯器中提取任何東西。

不合法條款?

這些巨長的協(xié)議許可通常有一大堆“你必須”“你不得”,而這些條款甚至可能會觸發(fā)你住的地方的法律。我可期待他們在歐洲試試用“禁止逆向工程”條款和誰對簿公堂呢。至少他們知道:

5.1 限制性行為

Live2D 公司保留所有在本協(xié)議中未經(jīng)明確授予給您的權(quán)利,除非適用法律不受前述限制而給予您更多的權(quán)利。您只能依據(jù)本協(xié)議中明確許可的方式使用本軟件。

要點

  • 不要用 Live2D 軟件打開從你不信任的來源獲取的文件或者模型,這不安全!

    • 在最壞的情況下,Live2D 文件可能會包含間諜軟件、勒索軟件或者其他惡意軟件

  • 你不能知道 Live2D 模型到底安不安全,這就意味著你不能安全地從互聯(lián)網(wǎng)上獲取任何 Live2D 模型。

    • 沒有軟件能夠驗證 Live2D 模型的安全性和完整性,且 Live2D 公司很可能會阻止這樣的軟件的開發(fā)。

  • Live2D 公司涉嫌采取不應(yīng)當(dāng)被支持的反競爭措施。[5]

  • 你應(yīng)該支持 Live2D 的自由、免費、安全的替代品。

源代碼

漏洞和 MOC3 格式的模式文件可以在?https://github.com/openl2d/moc3ingbird?獲取。

MOC3ingbird ? 2023 OpenL2D 項目開發(fā)者

授權(quán)信息見 https://github.com/OpenL2D/moc3ingbird/blob/master/LICENSE.md。

注釋和參考來源

  1. Virtual YouTuber 的縮寫。也就是一位使用電腦生成的虛擬形象的網(wǎng)上主播。見?https://zh.wikipedia.org/wiki/VTuber。譯者注:在國內(nèi)一般被成為“虛擬主播”,縮寫為 VTb/Vup(后者因在 B 站上活躍而得名)。

  2. 攻擊者能夠?qū)⑷我庵祵懭肴我馕恢玫那樾巍MǔJ怯捎诰彌_區(qū)溢出導(dǎo)致的。 參見?https://cwe.mitre.org/data/definitions/123.html。譯者注:常譯為“任意寫入”,為了方便理解并更貼合原文改譯。

  3. “2021 年,70% 的 Live2D Cubism Pro 用戶都是 Vtuber……”。參見?https://en.wikipedia.org/wiki/Live2D#Software?和?https://s.inside-games.jp/article/2021/12/30/136055.html.

  4. 在網(wǎng)上泄露某人的身份信息的行為。 參見?https://en.wikipedia.org/wiki/Doxing.

  5. 還有人想要寫一個 FOSS(譯者注:自由及開放源代碼軟件)的 MOC3 加載器。參見?https://github.com/UlyssesWu/D2Evil/issues/1。我不會刪除這個信息,但是如果你還是想要抱怨,我的郵箱是 ronsor (at) ronsor.com。

  6. 譯者注:原文如此。此處摘錄自官方中文 EULA,其中“compete”一詞意為“競爭”,而官方文本有錯譯。(EULA 原文為日文,因譯者能力有限,僅能從英文譯版找出錯誤,若有理解錯誤,歡迎斧正。)

  7. 譯者注:沒錯,原文如此。此處摘錄自官方中文 EULA,其中“under a license that is not from Live2D”應(yīng)譯為“不以 Live2D 公司提供的協(xié)議發(fā)布(內(nèi)容)”,而官方文本又有錯譯。?


Live2D:軟件安全翻車現(xiàn)場的評論 (共 條)

分享到微博請遵守國家法律
宁远县| 仁布县| 清徐县| 曲靖市| 兴宁市| 开化县| 龙门县| 福安市| 安仁县| 钦州市| 库尔勒市| 东至县| 神农架林区| 石河子市| 临江市| 通城县| 平舆县| 四川省| 拉萨市| 中阳县| 屯留县| 高台县| 敦煌市| 綦江县| 平顶山市| 宝鸡市| 武鸣县| 巩留县| 抚松县| 集贤县| 六枝特区| 武乡县| 通州区| 湖州市| 郧西县| 福泉市| 博湖县| 江山市| 鸡东县| 进贤县| 孝昌县|