世界を動かす技術を、日本語で。

Appleのインテリジェンスモデルから安全フィルターを抽出しました

2025年7月7日原文(github.com)

概要

Apple Intelligenceの生成AIモデル安全フィルターに関する暗号解除手順と構造を解説。 LLDBとPythonスクリプトを用いた鍵取得・復号化方法の説明。 安全フィルターのJSON構造と各種フィールドの役割を紹介。 手順通りに進めれば、最新の安全フィルターを取得・解析可能。 リポジトリには2025年6月28日時点の最新データも収録。

Apple Intelligence安全フィルターの復号化手順

  • decrypted_overrides/ :各モデル用復号化済みオーバーライド格納ディレクトリ
  • com.apple. */:Asset Specifier名を冠した安全情報用ディレクトリ
  • Info.plist :オーバーライドのメタデータ格納ファイル
  • AssetData/ :復号化済みJSONファイル群
  • get_key_lldb.py :暗号鍵取得用スクリプト
  • decrypt_overrides.py :オーバーライド復号化用スクリプト

必要なPython依存ライブラリ

  • cryptography のみ必要
    • インストール例:pip install cryptography

暗号鍵取得手順

  • ModelCatalog.Obfuscation.readObfuscatedContents で生成される暗号鍵取得
    • LLDBでGenerativeExperiencesSafetyInferenceProviderにアタッチ
      • /System/Library/ExtensionKit/Extensions/GenerativeExperiencesSafetyInferenceProvider.appex/Contents/MacOS/GenerativeExperiencesSafetyInferenceProvider
      • 必ず Xcode付属のLLDB を使用(macOS標準やLLVMのlldbは不可)
  • 推奨コマンド
    • sudo killall GenerativeExperiencesSafetyInferenceProvider; sudo xcrun lldb -w -n GenerativeExperiencesSafetyInferenceProvider /System/Library/ExtensionKit/Extensions/GenerativeExperiencesSafetyInferenceProvider.appex/Contents/MacOS/GenerativeExperiencesSafetyInferenceProvider
  • Shortcutsアプリ でダミーショートカットを作成し、On-Device指定で実行
  • LLDBでアタッチ確認後、リポジトリルートで
    • command script import get_key_lldb.pyを実行
    • 続けてcを入力しプロセス継続
    • コンソールに 暗号鍵表示./key.binにも保存

オーバーライドの復号化

  • コマンド例:
    • python decrypt_overrides.py /System/Library/AssetsV2/com_apple_MobileAsset_UAF_FM_Overrides/purpose_auto -k key.bin -o decrypted_overrides
  • decrypted_overrides ディレクトリが未作成なら自動生成
  • 復号化済みオーバーライド が格納される
  • 通常はリポジトリ同梱の最新版(2025年6月28日現在)で十分

Apple Intelligence安全フィルターの構造と内容

  • オーバーライド は各生成モデルの安全フィルターJSONファイル

  • モデルごとの文脈に応じたルールを定義

    • 有害コンテンツのフィルタリングや安全基準準拠を担保
  • metadata.json サンプル(例:com.apple.gm.safety_deny.output.code_intelligence.base):

    {
      "reject": [
        "xylophone copious opportunity defined elephant 10out",
        "xylophone copious opportunity defined elephant out"
      ],
      "remove": [],
      "replace": {},
      "regexReject": [
        "(?i)\\bbitch\\b",
        "(?i)\\bdago\\b",
        "(?i)\\bdyke\\b",
        "(?i)\\bhebe\\b",
        ...
      ],
      "regexRemove": [],
      "regexReplace": {}
    }
    
    • reject :一致した場合にガードレール違反となるフレーズ
    • remove :出力から削除するフレーズ
    • replace :置換対象と置換後フレーズのペア
    • regexReject :正規表現で一致した場合に拒否
    • regexRemove :正規表現による削除対象
    • regexReplace :正規表現による置換対象

逆コンパイル・リポジトリ活用について

  • Apple Intelligenceモデルの安全フィルター暗号処理(Obfuscation)を逆コンパイル
  • 抽出済みデータをリポジトリで公開
  • 研究や検証目的での参照推奨

Hackerたちの意見

うわ、これ結構バカみたいだね。Appleがこんな感じなら、どう思えばいいのか分からないな。 https://github.com/BlueFalconHD/apple_generative_model_safet... 編集: はっきり言っておくけど、こういうのは簡単に回避できるよ。「Boris Johnson」=>「B0ris Johnson」ってやれば、正規表現をスルーしてLLMにちゃんと認識されるからね。

バカじゃないよ。99%のユーザーはそんなこと気にしないと思う。こういうハードコーディングされた正規表現は、いい第一段階のフィルターだし、すごく効率的だよ。

UKの政治はタブーってこと?

ここでの目的は、誰かが意図的にブロックを回避するのを防ぐことではないと思う。むしろ、ある政治家についてのメールに「${politician}が死んでほしい」と返事した場合に見られるような見出しを避けるためだと思う。一般的に言えば、こういう広範な言葉フィルターは、「子供たちのことを考えて」反応を短絡的に防ぐためのものだと思う。ティニー・ティムの電話が「神が私たちを祝福してくれますように」と言うのではなく、「神が私たちを殺してくれますように」と言うことを示唆するような反応をね。こんなバカなフィルターがあれば、それだけで十分だよ。

こんな状況でAppleがどうなってるのか、正直よくわからない。何を期待してたの?これが最新のソリューションだし、AppleはAIレースにはほとんど参加してないよね。誰もが好きじゃない大胆な機能に賭けるより、うまくいってるものをコピーする方が理にかなってると思う。

なんでこういうのっていつも真剣味がないんだろう?「AIの安全性」について本気で取り組んでる人って、実際に何をやってるか理解してる人はいるのかな?インターンの週末プロジェクト以上の能力を持ってる人は?サイバーセキュリティの分野を思い出すよ。1%の人がダブルフリーをコード実行に変えられる一方で、99%はチェックリストや「署名スキャン」をやって、CVE番号を扱ってる。で、その間にソフトウェア開発者たちは「GenerativeExperiencesSafetyInferenceProviders」を作ってるから、あっちも相当やばいんだろうね。

LLMはそうするよ。でも、事前に指定されたタグの集まりで訓練された画像生成モデルは、すぐに認識できない結果を出すだろうね。

組み合わせがちょっと変だね。これ、死を避けるためのものがたくさんあるし、Appleのブランド名が正しく大文字になってるか確認するセットもある。優先順位ってやつだね! https://github.com/BlueFalconHD/apple_generative_model_safet...

Appleのブランド名が正しく大文字になってる。優先順位ってやつだね! 俺にとっては本当に恥ずかしいし、不安定だと思う。でも、ブランディング担当者にとってはすごく重要なんだろうね。

「unalive」が含まれてないのは面白いね。これって、実際に人々が何を言ってるかなんて誰も気にしてないってことを示してるよね。プラットフォームもみんなその意味を知ってるし、全部パフォーマンスだよ。

そんなに批判的にならないで。アメリカの企業の人たちもちゃんと優先順位をつけてるよ!

だから、ファイルを「実行する」とか、情報を「渡す」っていう提案をブロックしてるんだ。

Hacker Newsで議論の続きを見る