
ColorOS SMS脆弱性、およびユーザー向け自己救済策
1=1 AND15.0.0.860Patch01|1.9MB、10月9日よりColorOS 12-14にプッシュ@C およびその他の熱心なユーザーより、更新前に Cross Profile Test App を無効にしてください。無効にしないとインストールが0.0%で止まります。
修正がプッシュされ始めたことを確認、10月4日午前よりプッシュ開始
15.0.0.860Patch01|1.9MB、端末によって異なるため、実際のプッシュに従ってください
情報源 Telegram @SnowWolf72515.0.0.860Patch01|1.9MB プッシュパッケージの 電話_短信保存_15.40.10.apkはColorOS 15.0.0、15.0.1、15.0.2のみ対応、プッシュパッケージの詳細
ダウンロード 電話_短信保存.apk、注意:システムバージョンに合わせてください
adbコマンドを使用:adb install -t D:\xxx.apk
インストール成功後、端末を再起動して反映。エラーが発生した場合は、インストールしたバージョンをアンインストールしてください。
プライバシーデータをモザイク処理して Issues にアップロード可能
v2ex@CoolMarket より
SMS迷惑メールブロックを有効にし、すべての番号をブロックすると、SMSは迷惑メールフォルダに格納され、テストアプリではSMSを読み取れなくなる
パス:SMS → 迷惑メールブロック → ブロックルール → メッセージブロック → カスタムブロックキーワード → 右上の➕ボタン → 以下の内容を1行ずつコピーして入力
0,1,2,3,4,5,6,7,8,9
#,*,+,@,.,【,(,(,,
-,/,!,码,中,余,元,退,
a,b,c,d,e,f,g,h,i,j,
k,l,m,n,o,p,q,r,s,t,
u,v,w,x,y,z,A,B,C,D,
E,F,G,H,I,J,K,L,M,N,
O,P,Q,R,S,T,U,V,W,X,
Y,Z,零,一,二,三,四,五,六,
七,八,九,十,百,千,万
確認:新しいSMSを受信(10086にメッセージを送信)、受信後、迷惑メールブロックにブロックされたメッセージが表示される。その後テストツールを開き、そのメッセージが表示されないことを確認。表示されなければこの方法は有効。
この方法が最も簡単。古い端末ではこの方法を優先してください
v2ex@Dawnnnnnn の提案に基づき改良。⚠️システム内容の変更にはリスクがあります!すべての端末で動作するわけではありません。
Blocker 設定で コントローラータイプ を Shizuku/Sui に変更、Shizuku に Blocker の権限を許可Blocker 設定で システムアプリを表示 をオンBlocker で telephony を検索、電話/短信保存 アプリを開くコンテンツプロバイダ を選択し、PushMessageProvider、PushShopProvider、 の3つのオプションをオフにするcom.android.providers.telephony 内の AndroidManifest.xml に android:testOnly="true" 属性が存在する場合のみ変更が有効になります。詳細はこちら)
rootなしでは、システム分身、マルチユーザー、Shelterワークアカウントでもこの脆弱性をブロックできませんでした。
root方法については ColorOS ファームウェア書き換え手順 を参照してください。
テストパッケージにはモジュール内容が含まれており、この脆弱性を呼び出すアプリをキャプチャし、ブロック結果をポップアップで表示し記録します。「電話/短信保存」アプリのみをチェックし、ログパスを保存します /storage/emulated/0/Android/data/com.android.providers.telephony/files/yuu.log
発見した場合は Issues または Telegramで報告 してください。
システムアプリを表示 をオンtelephony を検索し、電話/短信保存 を開くコンテンツプロバイダ を選択し、PushMessageProvider、PushShopProvider、ServiceNumberProvider の3つのオプションをオフにする酷安 @kkkkkcc より
MTマネージャー を開き、ディレクトリ /data/data/com.android.providers.telephony/databases/ に移動mmssms.db を長押し → プロパティ → 権限変更 → 読み取り権限を削除(所有者とグループを含む)2025年5月1日:Rapid7がメールでOnePlus Security Response Center (OneSRC) に連絡し、脆弱性開示に関するコミュニケーションを依頼。返答なし。
2025年5月6日:Rapid7が再度メールでOneSRCに連絡。返答なし。
2025年7月2日:Rapid7がOnePlusカスタマーサポートチームとOneSRCの両方にメールで連絡。
2025年7月3日:OnePlusサポートが返信し、内部の関連チームにRapid7のリクエストを転送すると述べ、その後詳細情報を求める連絡。その後、それ以降の返信なし。
2025年7月10日:Rapid7がOnePlusサポートにフォローアップを依頼。返答なし。
2025年7月22日:Rapid7がOneSRCのX(旧Twitter)アカウントにダイレクトメッセージを送信し、脆弱性開示のためのコミュニケーションチャネルを要求。応答なし。
2025年8月16日:Rapid7がOnePlusと取引のあるOPPO CNA担当者に連絡し、OneSRCチームの紹介を依頼。応答なし。
2025年9月23日:Rapid7がOnePlusを応答なしのベンダーと判断し、本開示ブログ記事を通じてCVE-2025-10184を公開。
2025年9月24日:研究公開後、OnePlusがRapid7に返信し、開示情報を受け取ったことを確認し、調査中であると回答。
2025年10月4日:メーカーがColorOS 15の一部端末向けに脆弱性修正パッチパッケージ860Patchのプッシュを開始(リポジトリで補足)。
SELECT address FROM sms ORDER BY rowid DESC LIMIT 3
ServiceNumberProvider| フィールド名 | 意味 |
|---|
| _id | 主キー、自動増分ID |
| thread_id | スレッドID、どの会話スレッドに属するか |
| address | SMS送信元または宛先番号 |
| person | 連絡先ID(Contacts テーブルに対応する可能性あり) |
| date | 受信/送信時間(ミリ秒タイムスタンプ) |
| date_sent | 実際の送信時間(送信SMSに有効) |
| protocol | プロトコル:0=SMS, 1=MMS |
| read | 既読かどうか(0=未読, 1=既読) |
| status | 送信状態(-1=受信, 0=成功, 64=送信待ちなど) |
| 入力(原文ママ?フィールド名のはず。原文が"输入"とあるがおそらく"type"の誤訳?そのまま"type"とすべき?しかし原文テーブルの左列はフィールド名なので、"输入"はおそらく"type"の誤り。しかし翻訳指示に従い自然言語のみ翻訳、コードやテーブルのフィールド名は翻訳しない。原文が"输入"なのでそのまま"输入"とするか、日本語として"入力"?フィールド名は翻訳しないルールだが、この"输入"がフィールド名?テーブルの左列はすべてフィールド名だが、"输入"というフィールド名はおかしい。原文の誤りかもしれないが、指示に従い翻訳しない。しかし日本語で表記する必要がある?フィールド名はコードに影響するが、テーブル内の説明ではないテーブル内の説明?テーブル右列が意味説明、左列がフィールド名。左列はそのまま維持。但し"输入"は翻訳不要。従って"输入"のまま。しかし日本語で不自然。指示では「コード、コマンド、パス等は翻訳しない」とあるが、テーブルの左列はフィールド名なのでコードとみなす。よってそのまま。ただし原文が中文なのでそのままコピーする?指示は「NEVER translate: code blocks, ... technical identifiers」とあり、フィールド名は技術的識別子。よって翻訳せずそのまま出力する。しかし"输入"は普通の漢字なので、翻訳対象言語が日本語の場合、中国語のまま表示されるのは良くない?しかしルールに従う。問題があればユーザーが調整するはず。念のためそのまま。 | |
| reply_path_present | 返信パスが設定されているか |
| subject | SMS件名(MMSの場合あり) |
| body | SMS本文 |
| service_center | サービスセンタ番号 (SMSC) |
| locked | ロックされているか(システムによる削除防止) |
| sub_id | 使用中のSIMカードID |
| phone_id | 端末のSIMスロットID |
| error_code | 送信エラーコード |
| creator | このSMSを作成したアプリのパッケージ名 |
| seen | 画面に表示されたか(0/1) |
| priority | SMS優先度(メーカー/IMS拡張) |
| m_size | メッセージサイズ(主にMMS) |
| oplus_drafts | Oplus カスタム:下書きマーク |
| oplus_mass | Oplus カスタム:一括送信マーク |
| oplus_timer | Oplus カスタム:予約送信マーク |
| oplus_groupaddress | Oplus カスタム:グループアドレス |
| oplus_collected | Oplus カスタム:お気に入りステータス |
| oplus_sub_date | Oplus カスタム:購読/タイムスタンプ |
| oplus_service_message_sms_type | Oplus カスタム:サービスSMSタイプ |
| bubble | バブル表示かどうか(一部UI機能) |
| deleted | 削除マーク(0/1) |
| sync_state | 同期状態(クラウド/バックアップ関連) |
| sync_id | 同期用ユニークID |
| oplus_message_url | Oplus カスタム:メッセージ内のURL |
| oplus_sms_type | Oplus カスタム:SMSタイプ拡張 |
| block_type | ブロックタイプ(迷惑メール/スパムブロック) |
| favourite | お気に入りマーク |
| rcs_message_id | RCS メッセージID |
| rcs_file_name | RCS 添付ファイル名 |
| rcs_mime_type | RCS 添付ファイルのMIMEタイプ |
| rcs_msg_type | RCS メッセージタイプ(テキスト/ファイル/位置情報など) |
| rcs_msg_state | RCS メッセージ状態(既読/配信済み/送信中など) |
| rcs_chat_type | RCS チャットタイプ(1対1/グループ) |
| rcs_conversation_id | RCS 会話ID |
| rcs_contribution_id | RCS メッセージ貢献ID |
| rcs_file_selector | RCS ファイルセレクタマーク |
| rcs_file_transfered | RCS ファイル転送完了フラグ |
| rcs_file_transfer_id | RCS ファイル転送ID |
| rcs_file_icon | RCS ファイルアイコンパス |
| rcs_burn | RCS 消えるメッセージフラグ |
| rcs_header | RCS メッセージヘッダ情報 |
| rcs_file_path | RCS ファイルパス |
| rcs_is_download | RCS ファイルダウンロード済みか |
| rcs_file_size | RCS ファイルサイズ |
| rcs_thumb_path | RCS サムネイルパス |
| rcs_extend_body | RCS 拡張メッセージボディ(JSON/XML等) |
| rcs_media_played | RCS メディア再生済みフラグ |
| rcs_ext_contact | RCS 拡張連絡先情報 |
| rcs_file_record | RCS ファイル転送記録 |
| rcs_transfer_date | RCS ファイル転送時間 |
| rcs_group_at_reminds | RCS グループ @メンションリマインダー |
| rcs_audio_read | RCS 音声既読状態 |