iOS Serialisation and Encoding
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Kod i więcej informacji w https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
W iOS, serializacja obiektów polega na konwertowaniu obiektów na format, który można łatwo przechowywać lub przesyłać, a następnie rekonstruowaniu ich z tego formatu w razie potrzeby. Dwa główne protokoły, NSCoding
i NSSecureCoding
, ułatwiają ten proces dla Objective-C lub podklas NSObject
, pozwalając obiektom na serializację do NSData
, formatu, który opakowuje bufor bajtów.
NSCoding
ImplementacjaAby zaimplementować NSCoding
, klasa musi dziedziczyć po NSObject
lub być oznaczona jako @objc
. Ten protokół wymaga implementacji dwóch metod do kodowania i dekodowania zmiennych instancyjnych:
NSSecureCoding
Aby zminimalizować luki, w których atakujący wstrzykują dane do już skonstruowanych obiektów, NSSecureCoding
oferuje ulepszony protokół. Klasy, które przestrzegają NSSecureCoding
, muszą weryfikować typ obiektów podczas dekodowania, zapewniając, że tylko oczekiwane typy obiektów są instancjonowane. Należy jednak zauważyć, że chociaż NSSecureCoding
zwiększa bezpieczeństwo typów, nie szyfruje danych ani nie zapewnia ich integralności, co wymaga dodatkowych środków w celu ochrony wrażliwych informacji:
NSKeyedArchiver
NSKeyedArchiver
i jego odpowiednik, NSKeyedUnarchiver
, umożliwiają kodowanie obiektów do pliku i późniejsze ich odzyskiwanie. Mechanizm ten jest przydatny do utrwalania obiektów:
Codable
for Simplified SerializationProtokół Codable
w Swift łączy Decodable
i Encodable
, ułatwiając kodowanie i dekodowanie obiektów takich jak String
, Int
, Double
itp., bez dodatkowego wysiłku:
To podejście wspiera bezpośrednią serializację do i z list właściwości oraz JSON, co poprawia obsługę danych w aplikacjach Swift.
Poza natywnym wsparciem, kilka bibliotek firm trzecich oferuje możliwości kodowania/odkodowywania JSON i XML, z których każda ma swoje własne cechy wydajnościowe i kwestie bezpieczeństwa. Niezwykle ważne jest staranne wybieranie tych bibliotek, szczególnie w celu złagodzenia podatności, takich jak ataki XXE (XML External Entities), poprzez skonfigurowanie parserów w celu zapobiegania przetwarzaniu zewnętrznych encji.
Podczas serializacji danych, szczególnie do systemu plików, istotne jest zachowanie czujności wobec potencjalnego włączenia informacji wrażliwych. Zserializowane dane, jeśli zostaną przechwycone lub niewłaściwie obsłużone, mogą narażać aplikacje na ryzyko, takie jak nieautoryzowane działania lub wyciek danych. Zaleca się szyfrowanie i podpisywanie zserializowanych danych w celu zwiększenia bezpieczeństwa.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)