Undeleted Files

Live2D:セキュリティ災害


Last Updated:

Languages: 日本語 (ja) English (en) 简体中文 (zh-cn)

翻訳者さんはplxです.

更新:今回発見された脆弱性は、CVE-2023-27566として登録されました。

Live2D Cubismは、VTuber1や特定のモバイルゲームでの使用で最も知られている人気のある2Dパペットアニメーションソフトウェアです。このソフトウェアで生成されたモデルを読み込むには、開発者が独自に開発した専用の「Cubism SDK」が必要であり、これに代わりありません。このSDKの中心は「Cubism Core」で、Live2D Cubismが2Dパペットを保存するために使用するフォーマットであるMOC3ファイルの解析と読み込みを担当する小さなCライブラリです。残念ながら、Cubism Coreは深い欠陥があるソフトウェアで、それは修正不可能な可能性があります

もし貴方がコードだけに興味があるなら、下の方をご覧ください

もし全文を読む気にならないのであれば、少なくとも重要なポイントをご覧ください。

MOC3 への紹介

MOC3は、独自のバイナリー形式で、データを含むセクションのオフセットのリストを含んでいます。 そのデータは、メッシュや調整可能なパラメータなど、2Dパペットに関する情報を提供します。この形式は、実質的にC言語の配列や構造体などの生ダンプです。この形式は醜くてわかりにくいですが、これは使えますし、安全なローダーを作成することができます。MOC3ファイルには、実際のテクスチャは含まれていません。

MOC3のリバーシングエンジニアリング

最小限のMOC3ファイルには2つの要素が必要です:「MOC3」のマジックストリング 、バージョン、エンディアネスを含むヘッダーと、セクション・オフセット・テーブル。セクションオフセットテーブルは、ファイル内のセクションのオフセットを含み、そのエントリーは符号付き32ビット整数として保存されています。セクションオフセットテーブルは、配列の構造(英語)の範例を使用しています。しばらく調べてから、MOC3ファイルの正確なレイアウトを把握し、その上でImHexヘックスエディタを使いすべてのプロパティを探索できます。

MOC3ファイルのプロパティ

ImHexはパターン、バイナリーの構造などを定義できるスクリプトをサポートしています。 そのため、MOC3ファイルのセクションを読み込んで編集するためのインターフェイスを簡単に作ることができました。

完成したパターンファイルの長さは約400行で、正直に言って期待していたよりも短かったです。 注目すべきMOC3セクションは、カウント情報テーブルで、ファイルに格納されている各タイプのオブジェクトの配列の要素数を指定します。

MOC3ingbird: セキュリティ問題

Cubism Coreは、現在、唯一の解決策なのにも関わらず、MOC3ファイルを読み込むためのソフトウェアとして非常に危険です! セクションオフセットテーブルのエントリーを変更するだけで、何もチェクせずMOC3データのベースアドレスにオフセットを追加することが判明しました。 Cubism Coreは、不正なMOC3ファイルが簡単にMOC3データがある場所から2GiB以内のメモリを上書きできることが判明しました。 ファイル全体が、事実上、どこでもなにでも書き込み可能なプリミティブと言うことです2。それに加えて、カウントインフォテーブルは境界の確認もしないので、8,192バイトのMOC3ファイルにパラメータが50万個あることを簡単に指定することができます。 全体的に、Cubism Coreでは不正行為をするのが簡単すぎます。

MOC3ingbird は、公式のLive2DビューアとCubism Coreを使ったサードパーティソフトウェアをクラッシュさせるために作られた、シンプルなMOC3ファイルです。 ペイロードは含まれていませんが、おそらく簡単に含むように変えられるはずです。実際に、上のスクリーンショットは、MOC3ingbirdのexploit.moc3ファイルを表しています。

設計不足による欠陥?

このMOC3形式は、技術的には使用可能ですが、完全な災害であり、Cubism Coreには本番用に必要な高価なライセンスを買うにはあまりにも多くの問題があります。 意図的でありながらただ設計が悪い形式の可能性もありますが、それよりも、まったくデザインされていない可能性のほうが高いでしょう。 フィールドやセクションは、必要なときに必要なだけ、適切な実装を無視して単に追加されたのでしょう。 もちろん、ある程度合理的な方法でこれを行うことがはできます。 最も簡単な方法はJSON、メッセージパック、CBOR、プロトコルバッファーのような標準的なシリアライズフォーマットです。 悲しいことに、私はLive2Dの開発者はこれを避け、専用形式を採用することで、他社がLive2Dと競合しないようにすることを望んでいると思います。 結果、最終的にはこれらの決断と「行われなかった決断」は、不透明で安全でない混乱であり、完全に書き直す以外この混乱を掃除することがおそらく不可能であるでしょう。 正直に、単なる怠慢なのか、それとも利益を上げたいがために、このような単純で回避しやすい脆弱性をユーザーにさらすことは許せません。

プライバシー災害

Live2Dが示した適切なセキュリティ慣行の露骨な無視は、貴方が次を考慮するとき、さらに悪く見えます。 Vチューバー3のようなユーザーベースのかなりの部分が、自分のプライバシーを守るために多大な労力を費やしているということです。 ドクシング4は、そのコミュニティにおいて重要な問題であり、現在も続いています。 これらの脆弱性を利用し、悪役は無防備なユーザーのコンピュータにスパイウェアを展開することができます。

なぜこれを公開するのか?

私は、正直なところ、Live2Dが大きな反発を受けずにどの問題も解決するとは思っていません。 このような問題を直接報告しても、重要な問題とはみなされないでしょう。 Live2Dは透明性や本当の意味での「非希望的」なセキュリティではなく、秘密主義や不明瞭さによるセキュリティに大きく投資しているように見えます。 これはFreeLive5事件や公表できない逸話で証明されています。 間違いなくこの記事が公開されなければ、いずれサイバー犯罪集団に発見され、Live2Dのユーザーは、何が起こっているのかわからないまま、秘密裏に欠陥を悪用されます。

Live2Dのユーザーとコミュニティは、これらの問題を解決するよう行動を求めるか、あるいは、Inochi2D(英語)のようなオープンなソフトウェアに切り替えるか、どちらかを選択する必要があります。 Live2Dがこれを好むかどうかは関係ありません5

非競争的慣行

記事の前半で、MOC3モデルの読み込みにCubism SDK以外の選択肢がないことを述べました。 この形式は、多くの開発者にとって不透明でわかりにくいという仮定は単純な成り立ちますが、もしかしたら別の理由があるのかもしれません。

5.1.9 その他の禁止事項

  • 出力ファイルをLive2D社が開発したミドルウェアと競合するか、または競合する可能性のあるミドルウェア等と組み合わせて使用すること

Live2Dの使用許諾契約書より

正しく読んでいない、あるいは理解していないかもという方のために、Live2Dの使用許諾契約書では、 作成したモデルの使用から(Live2Dの高価な認可されたエディターソフト)で、 より安全なCubism Coreの代替となるソフトがあるとしても、エディターソフトを使用する場合、彼らの安全でない、独自のSDKを使用することを要求されています。

もし貴方がLive2Dを使用するソフトウェアの開発者であるならば、貴方や貴方の雇用主はこのような行為に加担せず、Live2Dソフトの利用停止を投票しましょう。 さらに励ましが必要な方は以下をご覧ください。

  • その他、Live2D社が不適切と判断する行為を行うこと。

また、少し下を読んでみましょう…。

7.4 7.1項に定める規定により本契約が終了した場合、お客様は、本件ソフトウェアおよびその複製物、派生作品や出力ファイル、その他本ソフトウェアの使用により派生するものを直ちに廃棄しなくてはならないものとします。

Live2Dは、文字通り、いつでも貴方のビジネスを破壊することができると、極めて明白に述べられています。

また、第三者からLive2Dモデルを受け取った人が、そのような条件に拘束されるかどうかは不明です。 (契約書にサインしていないため、編集者がLive2D Cubismをインストールしていないとすると、そうではない可能性があります。)

さらにいくつかの制限を読んでみましょう…

  • Live2D社によるものではないライセンスに従い本ソフトウェアや出力ファイルに含まれる本ソフトウェアの一部または全部のコードまたは内容をリリースすること

MOC3ファイルにはエディタソフトの跡はなく、コードもないことを確認しました。 実際、エディタから何も取らずに、一からMOC3ファイルを作ることができることを先ほど示したはずです。

違法な条項?

このような大規模な使用許諾契約には、「しなければならない」「してはならない」 などの条項が山ほど含まれる傾向があり、そのような条項は貴方の住んでいるところでは違法な可能性もあります。 私は、彼らが 「リバースエンジニアリングの禁止」をヨーロッパで実施しようとするのを楽しみにしています。 それはさておき、少なくとも、彼らはこれを認めています:

5.1 禁止される行為

お客様及び2.1.5に定める使用者は、本ソフトウェアを使用するにあたり、次の行為をしてはならないものとします。 お客様は、法律に特段の定めのない限り、本ソフトウェアを本契約にて明示的に許可された方法でのみ使用できます。 なお、Live2D社は、本契約においてお客様に明示的に付与または許諾されていない全ての権利を留保します。

重要なポイント

ソースコード

本エクスプロイトとMOC3フォーマットのパターンファイルは、以下のサイトで公開されています。 https://github.com/openl2d/moc3ingbird

MOC3ingbird © 2023 The OpenL2D Project Developers. ライセンス情報


  1. 別名バーチャルユーチューバー。 コンピュータ生成の仮想アバターを使用するオンラインエンターテイナー。 詳しくはhttps://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%ABYouTuber。 ↩︎

  2. 任意の値を任意の場所に書き込む能力を攻撃者が持っている状態で、多くの場合、バッファオーバーフローの結果として発生します。 詳しくはhttps://cwe.mitre.org/data/definitions/123.html。 ↩︎

  3. “In 2021, 70% of Live2D Cubism Pro users is Vtuber […].” 詳しくはhttps://en.wikipedia.org/wiki/Live2D#Software(英語) およびhttps://s.inside-games.jp/article/2021/12/30/136055.html。 ↩︎

  4. また、晒しのこと。個人を特定する情報を本人に無断で電子掲示板などのネット上に公開すること。 詳しくはhttps://ja.wikipedia.org/wiki/%E6%99%92%E3%81%97。 ↩︎

  5. MOC3のローダーを書きたい人がいました。 https://github.com/UlyssesWu/D2Evil/issues/1 (英語) を参照してください。 いいえ、この情報の提供を停止しませんが、とにかく不満を言いたい場合は、私の電子メールは ronsor (アット) ronsor.com です。 ↩︎ ↩︎ ↩︎

#Security Reports: Full Disclosure #Live2D #Security #MOC3ingbird #Exploit #C #ImHex