iOS Serialisation and Encoding
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開発におけるオブジェクトシリアル化
iOSにおいて、オブジェクトシリアル化は、オブジェクトを簡単に保存または送信できる形式に変換し、必要に応じてこの形式から再構築することを含みます。主に2つのプロトコル、**NSCoding
とNSSecureCoding
が、Objective-CまたはNSObject
のサブクラスに対してこのプロセスを容易にし、オブジェクトをNSData
**にシリアル化できるようにします。この形式はバイトバッファをラップします。
**NSCoding
**の実装
NSCoding
**の実装NSCoding
を実装するには、クラスがNSObject
から継承するか、@objc
としてマークされる必要があります。このプロトコルは、インスタンス変数のエンコードとデコードのために2つのメソッドの実装を義務付けています:
NSSecureCoding
によるセキュリティの強化
NSSecureCoding
によるセキュリティの強化攻撃者が既に構築されたオブジェクトにデータを注入する脆弱性を軽減するために、**NSSecureCoding
**は強化されたプロトコルを提供します。NSSecureCoding
に準拠するクラスは、デコード中にオブジェクトのタイプを検証し、期待されるオブジェクトタイプのみがインスタンス化されることを保証しなければなりません。しかし、NSSecureCoding
がタイプの安全性を強化する一方で、データを暗号化したり、その整合性を保証したりするわけではないため、機密情報を保護するための追加の対策が必要です。
Data Archiving with NSKeyedArchiver
NSKeyedArchiver
NSKeyedArchiver
とその対応物である NSKeyedUnarchiver
は、オブジェクトをファイルにエンコードし、後でそれらを取得することを可能にします。このメカニズムは、オブジェクトを永続化するのに役立ちます:
Using Codable
for Simplified Serialization
Codable
for Simplified SerializationSwiftのCodable
プロトコルはDecodable
とEncodable
を組み合わせており、String
、Int
、Double
などのオブジェクトのエンコードとデコードを追加の手間なしに容易にします:
このアプローチは、プロパティリストとJSONへのシンプルなシリアル化をサポートし、Swiftアプリケーションにおけるデータ処理を強化します。
JSONとXMLエンコーディングの代替
ネイティブサポートに加えて、いくつかのサードパーティライブラリが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)
Last updated