2011-05-23 11 views
6

これまでのところ、私は全体的なセキュリティに関する懸念はほとんどありませんでした。Cocoa UIと一般的なフレームワーク要素は、悪質な攻撃からどれくらい保護されていますか?

現在のところ、重要なユーザー情報を扱うため、私はこの問題について何度か必要とするMacアプリケーションに取り組んでいます。

データを物理的な形(ディスク上)で保護する必要があることはわかっていますが、暗号化するなどして、データを通常の使用過程でメモリに保存している間は、応用。

したがって、私は知りたいのです:
限り、それは唯一、このようなNSTextFieldやコアデータなどのフレームワークの要素に基づいて構築されたとして私のアプリケーションどのように安全ですか?

ココアの入力要素は悪質な攻撃に対してどの程度敏感ですか?コアデータを使用して保存された保存されたデータを保護する最善の方法は何ですか?

答えて

6

Objective-Cは動的言語です。つまり、実行時にクラスとクラスの特定のメソッドを置き換えることができます。たとえば、これは1PasswordプラグインがSafariへの道を見つけ、DropboxがFinderにその方法を見つける方法です。現在のところ、悪意のある攻撃者は、低レベルのmach_inject APIや、SIMBLやOSAX注入などのその他のやや高いレベルのメソッドを使用して、コードをアプリケーションに読み込むことは可能です。アプリケーションにコードがロードされると、Objective-Cの動的な性質により、NSTextFieldを攻撃者が選択したサブクラス、またはクラス内の特定のメソッド(ユーザー入力のリスニングと格納を含む)で置き換えることが理論上可能になります。パスワード用に設計されたNSTextFieldのセキュアバージョンは、これに対していくつかの保護を持っているかもしれませんが、そのための具体的な文書は見つかりませんでした。 Security.frameworkとキーチェーンAPIは一般に、データをメモリ内で保護していますが、Objective-Cに基づいているわけではありません。

+0

レイトナイトココアの興味深い(ダブル)エピソードがあり、ゲストが「ハッキングココア」について説明しています。彼らは「セキュリティ」について正確には議論していませんが、このプラットフォームでのコードローディングが興味深いです:http://itunes.apple.com/us/podcast/late-night-cocoa/id213023580# –

0

(非常に良いです)上記答えるのをmgorbachに追加するには、コアデータは4つの形式でデータを保存することができます

  1. SQLite3のデータベース(最も一般的)
  2. の.plistファイル(例えばXML)
  3. バイナリファイル
  4. インメモリ(非永続ストレージ)

どちらの.plist、バイナリファイル、またはSQLiteは安全です。 .plistファイルを簡単に読み取ることができます。バイナリファイルは扱いにくくなりますが、AFAIKでは暗号化を使用していませんし、Objective-Cコーダはその内容を簡単に抽出できるはずです。 SQLiteも安全ではありません。 FireFoxの場合はSQLite Manager、Macの場合はBaseなどのツールは、Core Data SQLiteデータを読むのが簡単です。

コアデータの保存方法が安全でないため、データをディスクにコミットする前に暗号化することをお勧めします。

これはメモリ内攻撃を考慮しません。もちろん、これが成功するためには、システムは通常、何らかの形ですでに侵害されている必要があります。

エンドユーザーがFileVaultを有効にして(ホームフォルダ全体を暗号化して)、仮想メモリを有効にし、ファイアウォールをオンにし、強力なパスワードを使用すると、多くの攻撃に対してかなり安全です。

関連する問題