iOS Serialisation and Encoding
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Code and more information in https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
iOSにおいて、オブジェクトシリアル化は、オブジェクトを簡単に保存または送信できる形式に変換し、必要に応じてこの形式から再構築することを含みます。主に2つのプロトコル、**NSCoding
とNSSecureCoding
が、Objective-CまたはNSObject
のサブクラスに対してこのプロセスを容易にし、オブジェクトをNSData
**にシリアル化できるようにします。この形式はバイトバッファをラップします。
NSCoding
**の実装NSCoding
を実装するには、クラスがNSObject
から継承するか、@objc
としてマークされる必要があります。このプロトコルは、インスタンス変数のエンコードとデコードのために2つのメソッドの実装を義務付けています:
NSSecureCoding
によるセキュリティの強化攻撃者が既に構築されたオブジェクトにデータを注入する脆弱性を軽減するために、**NSSecureCoding
**は強化されたプロトコルを提供します。NSSecureCoding
に準拠するクラスは、デコード中にオブジェクトの型を確認し、期待されるオブジェクト型のみがインスタンス化されることを保証しなければなりません。しかし、NSSecureCoding
が型安全性を強化する一方で、データを暗号化したり、その整合性を保証したりするわけではないため、機密情報を保護するための追加の対策が必要です。
NSKeyedArchiver
NSKeyedArchiver
とその対となる NSKeyedUnarchiver
は、オブジェクトをファイルにエンコードし、後でそれらを取得することを可能にします。このメカニズムは、オブジェクトを永続化するのに役立ちます:
Codable
for Simplified SerializationSwiftのCodable
プロトコルはDecodable
とEncodable
を組み合わせており、String
、Int
、Double
などのオブジェクトのエンコードとデコードを追加の手間なしに容易にします:
このアプローチは、プロパティリストとJSONへのシンプルなシリアル化をサポートし、Swiftアプリケーションにおけるデータ処理を強化します。
ネイティブサポートを超えて、いくつかのサードパーティライブラリがJSONおよびXMLのエンコーディング/デコーディング機能を提供しており、それぞれに独自のパフォーマンス特性とセキュリティ上の考慮事項があります。特に、外部エンティティ処理を防ぐためにパーサーを設定することで、XXE(XML外部エンティティ)攻撃のような脆弱性を軽減するために、これらのライブラリを慎重に選択することが重要です。
データをシリアル化する際、特にファイルシステムへのシリアル化においては、機密情報が含まれる可能性に注意を払うことが不可欠です。シリアル化されたデータは、傍受されたり不適切に処理されたりすると、アプリケーションを不正な操作やデータ漏洩のリスクにさらす可能性があります。セキュリティを強化するために、シリアル化されたデータの暗号化と署名が推奨されます。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)