iOS UIPasteboard

Support HackTricks

Deljenje podataka unutar i između aplikacija na iOS uređajima olakšano je mehanizmom UIPasteboard, koji je podeljen u dve glavne kategorije:

  • Sistemsku opštu međuspremnik: Ovo se koristi za deljenje podataka sa bilo kojom aplikacijom i dizajnirano je da zadrži podatke čak i nakon ponovnog pokretanja uređaja i deinstalacije aplikacija, funkcija koja je dostupna od iOS 10.

  • Prilagođeni / imenovani međuspremnici: Ovi su specifično za deljenje podataka unutar aplikacije ili sa drugom aplikacijom koja deli isti tim ID, i nisu dizajnirani da traju duže od trajanja procesa aplikacije koja ih kreira, u skladu sa promenama uvedenim u iOS 10.

Bezbednosna razmatranja igraju značajnu ulogu prilikom korišćenja međuspremnika. Na primer:

  • Ne postoji mehanizam za upravljanje dozvolama aplikacija za pristup međuspremniku.

  • Da bi se smanjio rizik od neovlašćenog praćenja međuspremnika u pozadini, pristup je ograničen na trenutke kada je aplikacija u prvom planu (od iOS 9).

  • Korišćenje trajnih imenovanih međuspremnika se ne preporučuje zbog briga o privatnosti.

  • Universal Clipboard funkcija uvedena sa iOS 10, koja omogućava deljenje sadržaja između uređaja putem opšteg međuspremnika, može se upravljati od strane programera kako bi se postavila isteka podataka i onemogućio automatski prenos sadržaja.

Osiguranje da osetljive informacije nisu nenamerno sačuvane na globalnom međuspremniku je ključno. Pored toga, aplikacije bi trebale biti dizajnirane da spreče zloupotrebu podataka globalnog međuspremnika za nenamerne radnje, a programeri se podstiču da implementiraju mere za sprečavanje kopiranja osetljivih informacija u međuspremnik.

Staticka analiza

Za statičku analizu, pretražujte izvorni kod ili binarni fajl za:

  • generalPasteboard kako biste identifikovali korišćenje sistemske opšte međuspremnika.

  • pasteboardWithName:create: i pasteboardWithUniqueName za kreiranje prilagođenih međuspremnika. Proverite da li je trajnost omogućena, iako je ovo zastarelo.

Dinamička analiza

Dinamička analiza uključuje povezivanje ili praćenje specifičnih metoda:

  • Pratite generalPasteboard za sistemsku upotrebu.

  • Pratite pasteboardWithName:create: i pasteboardWithUniqueName za prilagođene implementacije.

  • Posmatrajte pozive zastare metode setPersistent: kako biste proverili postavke trajnosti.

Ključni detalji koje treba pratiti uključuju:

  • Imena međuspremnika i sadržaj (na primer, proveravanje stringova, URL-ova, slika).

  • Broj stavki i tipovi podataka prisutni, koristeći standardne i prilagođene provere tipa podataka.

  • Opcije isteka i lokalno samo inspekcijom metode setItems:options:.

Primer korišćenja alata za praćenje je objectionov monitor međuspremnika, koji proverava generalPasteboard svake 5 sekundi za promene i ispisuje nove podatke.

Evo jednostavnog primera JavaScript skripte, inspirisane pristupom objection-a, za čitanje i logovanje promena iz međuspremnika svake 5 sekundi:

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);

References

Podržite HackTricks

Last updated