{{#include ../../banners/hacktricks-training.md}} Kushiriki data ndani na kati ya programu kwenye vifaa vya iOS kunarahisishwa na mekanizma ya [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), ambayo imegawanywa katika makundi mawili makuu: - **Systemwide general pasteboard**: Hii inatumika kwa kushiriki data na **programu yoyote** na imeundwa kudumisha data wakati wa upya wa kifaa na kufutwa kwa programu, kipengele ambacho kimekuwa kinapatikana tangu iOS 10. - **Custom / Named pasteboards**: Hizi ni maalum kwa kushiriki data **ndani ya programu au na programu nyingine** inayoshiriki kitambulisho sawa cha timu, na hazijaundwa kudumu zaidi ya maisha ya mchakato wa programu unaoziumba, kufuatia mabadiliko yaliyoanzishwa katika iOS 10. **Mambo ya usalama** yana jukumu muhimu wakati wa kutumia pasteboards. Kwa mfano: - Hakuna mekanizma kwa watumiaji kusimamia ruhusa za programu kufikia **pasteboard**. - Ili kupunguza hatari ya ufuatiliaji wa nyuma usioidhinishwa wa pasteboard, ufikiaji unazuiliwa wakati programu iko mbele (tangu iOS 9). - Matumizi ya pasteboards zenye majina yanayodumu yanakemewa kwa ajili ya vyombo vya kushiriki kutokana na wasiwasi wa faragha. - Kipengele cha **Universal Clipboard** kilichoanzishwa na iOS 10, kinachoruhusu maudhui kushirikiwa kati ya vifaa kupitia pasteboard ya jumla, kinaweza kusimamiwa na waendelezaji kuweka muda wa kuisha kwa data na kuzima uhamishaji wa maudhui kiotomatiki. Kuhakikisha kwamba **taarifa nyeti hazihifadhiwi bila kukusudia** kwenye pasteboard ya ulimwengu ni muhimu. Zaidi ya hayo, programu zinapaswa kubuniwa kuzuia matumizi mabaya ya data ya pasteboard ya ulimwengu kwa vitendo visivyokusudiwa, na waendelezaji wanahimizwa kutekeleza hatua za kuzuia nakala ya taarifa nyeti kwenye clipboard. ### Uchambuzi wa Kijamii Kwa uchambuzi wa kijamii, tafuta katika msimbo wa chanzo au binary kwa: - `generalPasteboard` ili kubaini matumizi ya **systemwide general pasteboard**. - `pasteboardWithName:create:` na `pasteboardWithUniqueName` kwa kuunda **custom pasteboards**. Thibitisha ikiwa kudumu kumewashwa, ingawa hii imeondolewa. ### Uchambuzi wa Kijamii Uchambuzi wa kijamii unahusisha kuunganisha au kufuatilia mbinu maalum: - Fuata `generalPasteboard` kwa matumizi ya mfumo mzima. - Fuata `pasteboardWithName:create:` na `pasteboardWithUniqueName` kwa utekelezaji wa kawaida. - Angalia simu za mbinu za zamani `setPersistent:` ili kuangalia mipangilio ya kudumu. Maelezo muhimu ya kufuatilia ni pamoja na: - **Majina ya pasteboard** na **maudhui** (kwa mfano, kuangalia nyuzi, URLs, picha). - **Idadi ya vitu** na **aina za data** zilizopo, ukitumia ukaguzi wa aina za data za kawaida na za kawaida. - **Muda wa kuisha na chaguo za ndani pekee** kwa kukagua mbinu ya `setItems:options:`. Mfano wa matumizi ya chombo cha kufuatilia ni **monitor ya pasteboard ya objection**, ambayo inachunguza generalPasteboard kila sekunde 5 kwa mabadiliko na kutoa data mpya. Hapa kuna mfano rahisi wa script ya JavaScript, iliyochochewa na mbinu ya objection, kusoma na kurekodi mabadiliko kutoka kwa pasteboard kila sekunde 5: ```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) ``` ## Marejeleo - [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}}