世界初のスマートホーム向けサイバーセキュリティハブの開発元として、Bitdefenderは人気のあるIoTハードウェアに対して定期的に脆弱性監査を行っています。本調査レポートは、IoT分野における世界的ベストセラー製品のセキュリティに光を当てることを目的とした、より広範なプログラムの一部です。本レポートでは、LG WebOS TVオペレーティングシステムの調査中に発見された脆弱性について取り上げます。
LG TV上で動作するWebOSバージョン4から7に影響する複数の問題を発見しました。これらの脆弱性により、認可メカニズムをバイパスしたうえでTVにrootアクセスを取得することが可能になります。本来、この脆弱なサービスはLANからのアクセスのみを想定していますが、インターネット接続デバイス向け検索エンジンであるShodanによると、このサービスをインターネット上に公開しているデバイスが9万1,000台以上存在することが判明しました。

脆弱性の概要
- Bitdefenderの研究者は、WebOSバージョン4〜7において、攻撃者が認可メカニズムをバイパスできる脆弱性を発見しました。変数を設定することで、攻撃者はTVに追加ユーザーを作成できます(CVE-2023-6317)
- 別の脆弱性により、攻撃者は最初のステップで得たアクセス権をrootに昇格させ、デバイスを完全に掌握することができます(CVE-2023-6318)
- 3つ目の脆弱性(CVE-2023-6319)は、楽曲の歌詞表示を担当するライブラリを操作することで、OSコマンドインジェクションを可能にします。
- CVE-2023-6320の脆弱性により、
com.webos.service.connectionmanager/tv/setVlanStaticAddressAPIエンドポイントを操作して、認証済みコマンドをインジェクションすることが可能になります。
影響を受けるOSバージョン
- webOS 4.9.7 – 5.30.40(LG43UM7000PLA上で動作)
- webOS 5.5.0 – 04.50.51(OLED55CXPUA上で動作)
- webOS 6.3.3-442 (kisscurl-kinglake) – 03.36.50(OLED48C1PUB上で動作)
- webOS 7.3.1-43 (mullet-mebin) – 03.33.85(OLED55A23LA上で動作)
開示タイムライン
- 2023年11月1日:ベンダーへ開示
- 2023年11月15日:ベンダーが脆弱性を確認
- 2023年12月14日:ベンダーが期限延長を要請
- 2024年3月22日:パッチ公開
- 2024年4月9日:本レポートを一般公開
発見された脆弱性の技術的な詳細
WebOSはポート3000/3001(HTTP/HTTPS/WSS)でサービスを動作させており、これはLG ThinkQスマートフォンアプリがTVを制御するために使用します。アプリをセットアップするには、ユーザーがTV画面に表示されるPINコードを入力する必要があります。アカウントハンドラーの不具合により、攻撃者はこのPIN検証を完全にスキップし、権限の高いユーザープロファイルを作成できてしまいます。

アカウント登録リクエストを処理する関数は、skipPromptという変数を使用しており、client-keyまたはcompanion-client-keyパラメータのいずれかが既存プロファイルに対応している場合にtrueに設定されます。また、どの権限が要求されているかも考慮し、一部のケースでは確認が不要であるため、PIN入力を求めるかどうかを判断します。
権限なしのアカウント作成を要求することができ、この場合は自動的に承認されます。その後、昇格した権限を持つ別のアカウント作成を要求しますが、その際にcompanion-client-key 変数を、最初のアカウント作成時に取得したキーと一致するよう指定します。サーバーはこのキーの存在を確認しますが、正しいアカウントに属しているかどうかは検証しません。その結果、skipPrompt変数はtrueとなり、TV側でPIN確認を求めることなくアカウントが作成されてしまいます。
この脆弱性はCVE-2023-6317として識別されており、webOS 4.9.7、5.5.0、6.3.3-442、および7.3.1-43に影響することが確認されています。
ユーザー操作なしに権限の高いアカウントを作成できるようになると、それまでアクセスできなかった広範な攻撃面にアクセス可能になります。今回、rootアクセスにつながる認証済みコマンドインジェクション脆弱性を2件、さらにdbusユーザー権限でコマンドを実行する脆弱性を1件発見しました。
com.webos.service.clouduploadサービスのprocessAnalyticsReportメソッドにおける認証済みコマンドインジェクション
processAnalyticsReportメソッドは、type、reportFile、originalFileの3つのパラメータを必要とします。type パラメータがanalyticに設定されている場合、reportFile パラメータはサニタイズされることなくシステムコマンドに渡されます。
このメソッドへのリクエストを直接行うことはできませんが、別のエンドポイントsystem.notifications/createAlertを利用することで、この制限を回避できます。このエンドポイントにはWRITE_NOTIFICATION_TOAST権限を持つ認証済みユーザーのみがアクセスでき、onclose パラメータを使って、外部には公開されていないサービスへの内部リクエストを行うことができます。これはSSRFに類似した動作です。通知を作成した後、system.notifications/closeAlertエンドポイントを通じてonclose 呼び出しをトリガーし、脆弱なエンドポイントへのリクエストを実行します。
指定するファイルはデバイス上に存在している必要がありますが、先に述べたcom.webos.service.downloadmanager サービスのdownload メソッドを利用することで、この制約を回避できます。このメソッドは、任意のファイル名で/media/internal/downloads/ディレクトリ内にファイルを作成します。processAnalyticsReport およびdownload の両メソッドは、createAlert エンドポイント経由でアクセス可能です。
脆弱なコマンドは83行目で生成され、84行目で実行されます。

この脆弱性はCVE-2023-6318として識別されており、webOS 5.5.0、6.3.3-442、および7.3.1-43に影響することが確認されています。
com.webos.service.attachedstoragemanagerサービスのgetAudioMetadataメソッドにおける認証済みコマンドインジェクション
getAudioMetadata メソッドは、deviceIdとfullPathの2つのパラメータを必要とします。deviceId パラメータは重要ではありませんが、fullPath パラメータは、特定の条件下でサニタイズされることなくシステムコマンドに渡されます。このパラメータが.mp3拡張子を持つファイルを指している場合、サービスは同じディレクトリ内で同名の歌詞ファイル(.lrc拡張子)を検索します。見つかった場合、歌詞ファイルの先頭4バイトがシーケンス\xFF\xFE\x00\x00と比較されます。一致した場合(ファイルがUTF1632でエンコードされていることを意味します)、サービスはiconvバイナリを使用してデコードを試みます。このバイナリは、事前のサニタイズなしにフルファイル名とともに呼び出されるため、コマンドインジェクションが発生します。
.mp3および.lrcファイルはいずれもデバイス上に存在している必要がありますが、前述のdownload メソッドを使用して作成できます。必要なすべてのメソッドはcreateAlertエンドポイント経由でアクセス可能です。
asm バイナリ内のconvLrcStringByBinary における脆弱なコード:

この脆弱性はCVE-2023-6319として識別されており、webOS 4.9.7、5.5.0、6.3.3-442、および7.3.1-43に影響することが確認されています。
com.webos.service.connectionmanager/tv/setVlanStaticAddressエンドポイントにおける認証済みコマンドインジェクションにより、dbusユーザーとしてデバイス上でコマンドを実行可能
setVlanStaticAddress エンドポイントは、ip_address、bcast_address、netmaskの3つのパラメータを必要とします。これら3つのパラメータはすべて、サニタイズされることなくシステムコマンドに渡されます。このエンドポイントを呼び出す前に、まずcreateVirtualLan エンドポイントを呼び出す必要があります。これらのエンドポイントにはREAD_NETWORK_STATE権限が必要です。
コマンドを実行するユーザーはdbusですが、このアカウントはroot ユーザーと同等の権限を持っています。
libwca2.soライブラリ内のhandle_set_vlan_static_address_commandにおける脆弱なコード:

この脆弱性はCVE-2023-6320として識別されており、webOS 5.5.0および6.3.3-442に影響することが確認されています。
注:LGは本調査の公開前に報告された問題を修正済みです。報告された脆弱性に関するLG Product Security Response Center(PSRC)のセキュリティアドバイザリはこちらから確認できます。また、LGは影響を受けるファームウェアバージョン向けに自動および手動アップデートを公開しており、脆弱なTVモデルの所有者は直ちに対応することを強く推奨します。
翻訳元: https://www.bitdefender.com/en-us/blog/labs/vulnerabilities-identified-in-lg-webos