電子書籍の新刊を発売しました。「AppleScriptセキュリティ実践ガイド」です。PDF 562ページ、サンプルAppleScriptのZipアーカイブを添付。
→ 販売ページ

macOS上の各種機能を自由に呼び出せて、GUIベースのアプリの機能や情報を呼び出せる強力なAppleScriptは、ソースコードが読めない実行専用形式で、Scriptやアプレットとして公開可能です。
しかし、「暗号化済み」のように見える「実行専用形式」で保存されていたとしても、実際にはApple Events Codeという命令列の形で格納されており、文字列に関してはターミナル上でhexdumpやstringsコマンドによるダンプ出力が可能です。
さらに、昨今ではApple Events Codeそのものをダンプ(=内部の命令構造を可視化)するツールが登場。防衛用のツールですが、攻撃側もこれを利用できる状態にあります。
本書では、Apple Events Codeのダンプツールによってどのような情報が「抜かれ」、それらが実際にどのように見えるのかを詳細に検証しています。
実行専用のScript/アプレットで書き出した内容をダンプ(Apple Events Codeのダンプ)するapplescript-disassemblerと、その出力内容を読みやすく整形するaevt-decompileを用いて、さらにそれらを統合して使いやすくした統合ダンプツールをAppleScriptで開発。
対象フォルダ中のAppleScript書類を実行専用形式で書き出し、ダンプツールで解析して結果をテキスト書き出し……という作業フローを一括で行います。これを、さまざまな構造の複雑さを備えたテスト用AppleScriptに対して、さまざまなデータ型のデータを記述してどの程度漏洩するのか、しないのかを確認しています。
また、すべてのAppleScript予約語を含むサンプルScriptを作成し、個別にどのようにApple Events Codeにダンプされるかを掲載しています。
その上で、想定されるリスクと防止策を提示し、AppleScriptを安全に活用するための基礎資料としてご活用ください。








目次
1章 「実行専用」は安全なのか?
AppleScriptの概要と機能のひろがり/実行プログラムのひろがり/システム設定による機能制限/ヘックスダンプや文字ダンプで得られる情報/Apple Events関連の参考資料/コラム 本書掲載のAppleScriptリストの構文色分け設定について
2章 AppleScriptアプレットの構造
スクリプトエディタでアプレットを作成/書き出したアプレットの内部構造を追う/クラシックOS時代のアプレットのscptリソースの内容と比較
3章 Apple Eventダンプによる情報抽出
アップルスクリプトの完全なデコンパイルは無理/あくまでApple Events Codeとして解釈して読みやすくする/applescript-disassembler/aevt_decompile/統合分析ツールas_disassem+decompile/strings/hexdump
4章 実行専用スクリプトから漏れる情報の実態
Apple Events Code上で各データ型がどう見えるか?/プログラムの複雑さを変更して結果を調べる/アルファベット+数字/日本語の文字列/絵文字の文字列/真偽値/整数値/実数値/dateオブジェクト/数値のリスト(配列)/文字列のリスト(配列)/レコード/アプリケーションのオブジェクト/Xcodeで開発したAppleScrIptObjCアプリ
5章 情報漏洩をふせぐ技術的手法
安直なダンプで見えない形式でユーザー名やパスワードを記述/キーチェーンに情報を保存して内容を取り出すにしてもアクセス用キーワードは必要/データ暗号化の基礎①シフト暗号/データ暗号化の基礎②暗号表による換字式暗号/データ暗号化の基礎③多表式暗号と鍵のしくみ(ヴィジュネル暗号)/データ暗号化の基礎④「鍵」をさらに安全・自動的に扱う仕組みをもつOpenSSLによる現代暗号/プログラム難読化①データ形式変更/プログラム難読化②変数名絵文字置換/プログラム難読化③構造高度化
6章 安全な配布のための設計指針
アップルスクリプトの配布形態とかけられる労力の違い/配布時に最低限でもコード署名が必要。そのために開発者登録も必須/習熟のために経験しておきたいアプレットのオンライン配布
7章 AppleScriptのセキュリティ再考
最近発生したAppleScriptがらみの諸問題はメモリリーク/ユーザー名やパスワード、APIキーをスクリプト内に平文で記録すると危険/かつては可能だったアプリとAppleScript間の通信傍受もいまや不可能に/ネットワーク経由の操作は、途中で傍受される危険性も/AppleScript実行ツールで、埋め込みテキストのスクリプトを設定ファイルに平文保存?
8章 Apple Events Codeダンプ分析資料
全予約語を含む記述例を実行専用状態でApple Events Codeダンプ
9章 ダンプ結果から見る情報露出傾向と対策
コマンド、記述方法、データ型から読み解く露出傾向/script objectによるダンプ対策が有効/「OSAMiner事件」から再考されたAppleScript環境におけるセキュリティ対策/コラム 本書作成のために作成・使用したAppleScript




















