79 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{#include ../../banners/hacktricks-training.md}}
iOS cihazlarda uygulamalar arasında veri paylaşımı, iki ana kategoriye ayrılan [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) mekanizması ile sağlanır:
- **Sistem genel panosu**: 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 verilerin kalıcı olmasını sağlamak için tasarlanmıştır; bu özellik iOS 10'dan beri mevcuttur.
- **Özel / İsimlendirilmiş panolar**: Bunlar, **bir uygulama içinde veya aynı takım kimliğini paylaşan başka bir uygulama ile** veri paylaşımı için özel olarak tasarlanmıştır ve oluşturuldukları uygulama sürecinin ömründen öteye kalıcı olmaları amaçlanmamıştır; bu, iOS 10 ile getirilen değişiklikleri takip eder.
**Güvenlik hususları**, panoları kullanırken önemli bir rol oynamaktadır. Örneğin:
- Kullanıcıların **panoya** 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ş panoların kullanımı, paylaşılan konteynerler lehine teşvik edilmemektedir.
- iOS 10 ile tanıtılan **Evrensel Panoya** özelliği, içeriğin genel pano aracılığıyla cihazlar arasında paylaşılmasına olanak tanır ve geliştiricilerin veri süresini ayarlamasına ve otomatik içerik aktarımını devre dışı bırakmasına olanak tanır.
**Hassas bilgilerin yanlışlıkla** genel panoda saklanmadığından emin olmak çok önemlidir. Ayrıca, uygulamalar, genel pano verilerinin istenmeyen eylemler için kötüye kullanılmasını önleyecek şekilde tasarlanmalı ve geliştiricilerin hassas bilgilerin panoya kopyalanmasını önlemek için önlemler alması teşvik edilmelidir.
### Statik Analiz
Statik analiz için, kaynak kodda veya ikili dosyada şunları arayın:
- **`generalPasteboard`**: **sistem genel panosu** kullanımını belirlemek için.
- **`pasteboardWithName:create:`** ve **`pasteboardWithUniqueName`**: **özel panolar** oluşturmak için. 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 genel kullanım 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:
- **Pano isimleri** 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.
- **Süresi dolmuş ve yerel seçenekler** için **`setItems:options:`** yöntemini inceleyerek.
Bir izleme aracı kullanımına örnek olarak, **objection'ın pano izleyicisi**, her 5 saniyede bir genel panoyu değişiklikler için sorgular ve yeni verileri çıktılar.
İşte objection'ın yaklaşımından esinlenerek, panodan her 5 saniyede bir değişiklikleri okumak ve kaydetmek için basit bir JavaScript örneği:
```javascript
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
- [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
- [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
- [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
{{#include ../../banners/hacktricks-training.md}}