iOS UIPasteboard

HackTricks'i Destekleyin

iOS cihazlarda uygulamalar arasında veri paylaşımı, iki ana kategoriye ayrılan UIPasteboard mekanizması ile kolaylaştırılmaktadır:

  • Sistem genelinde genel yapıştırıcı: Bu, herhangi bir uygulama ile veri paylaşmak için kullanılır ve cihaz yeniden başlatıldığında ve uygulama kaldırıldığında verileri korumak için tasarlanmıştır; bu özellik iOS 10'dan beri mevcuttur.

  • Özel / İsimlendirilmiş yapıştırıcılar: Bunlar, bir uygulama içinde veya aynı takım kimliğini paylaşan başka bir uygulama ile veri paylaşmak için özel olarak tasarlanmıştır ve oluşturuldukları uygulama süresinin ötesinde kalıcı olmaları amaçlanmamıştır; bu, iOS 10 ile getirilen değişiklikleri takip eder.

Güvenlik hususları, yapıştırıcıların kullanılmasında önemli bir rol oynamaktadır. Örneğin:

  • Kullanıcıların yapıştırıcıya erişim için uygulama izinlerini yönetebileceği bir mekanizma yoktur.

  • Yetkisiz arka plan izleme riskini azaltmak için erişim, uygulama ön planda olduğunda kısıtlanmıştır (iOS 9'dan beri).

  • Gizlilik endişeleri nedeniyle kalıcı isimlendirilmiş yapıştırıcıların kullanımı, paylaşılan konteynerler lehine teşvik edilmemektedir.

  • iOS 10 ile tanıtılan Evrensel Panoya özelliği, içeriğin genel yapıştırıcı aracılığıyla cihazlar arasında paylaşılmasına olanak tanır ve geliştiricilerin veri süresini ayarlayıp otomatik içerik aktarımını devre dışı bırakmalarına olanak tanır.

Hassas bilgilerin yanlışlıkla genel yapıştırıcıda saklanmadığından emin olmak çok önemlidir. Ayrıca, uygulamalar, genel yapıştırıcı verilerinin istenmeyen eylemler için kötüye kullanılmasını önleyecek şekilde tasarlanmalıdır ve geliştiricilerin hassas bilgilerin panoya kopyalanmasını önlemek için önlemler alması teşvik edilmektedir.

Statik Analiz

Statik analiz için, kaynak kodu veya ikili dosyada şunları arayın:

  • systemwide general pasteboard kullanımını belirlemek için generalPasteboard.

  • özel yapıştırıcılar oluşturmak için pasteboardWithName:create: ve pasteboardWithUniqueName. Kalıcılığın etkin olup olmadığını doğrulayın, ancak bu artık önerilmemektedir.

Dinamik Analiz

Dinamik analiz, belirli yöntemleri izlemek veya takip etmekle ilgilidir:

  • Sistem genelindeki kullanımı izlemek için generalPasteboard'ı izleyin.

  • Özel uygulamalar için pasteboardWithName:create: ve pasteboardWithUniqueName'ı takip edin.

  • Kalıcılık ayarlarını kontrol etmek için önerilmeyen setPersistent: yöntem çağrılarını gözlemleyin.

İzlenmesi gereken ana detaylar şunlardır:

  • Yapıştırıcı adları ve içerikler (örneğin, dizeler, URL'ler, resimler kontrol edilerek).

  • Mevcut öğe sayısı ve veri türleri, standart ve özel veri türü kontrolleri kullanılarak.

  • setItems:options: yöntemini inceleyerek son kullanma ve yerel seçenekler.

Bir izleme aracı kullanma örneği, genel yapıştırıcıyı her 5 saniyede bir değişiklikler için sorgulayan ve yeni verileri çıktılayan objection'ın yapıştırıcı izleyicisidir.

İşte her 5 saniyede bir yapıştırıcıdan değişiklikleri okumak ve kaydetmek için objection'ın yaklaşımından ilham alan basit bir JavaScript betiği örneği:

const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();

setInterval(function () {
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();

if (currentCount === count) { return; }

items = currentItems;
count = currentCount;

console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);

}, 1000 * 5);

Referanslar

HackTricks'i Destekleyin

Last updated