په Android 10 او وروسته، هغه اپلیکیشن چې /proc/net/tcp پرانیزي د socket جدول پر ځای د لاسرسي انکار ترلاسه کوي. د VPN انټرفیس ته یې پروا نه ده: پاکټونه لا هم راځي، ځکه تونل د لارښوونې پریکړه ده، نه د فایل اجازه. هغه څه چې بدل شو د یوې تنګې پوښتنې ځواب دی: «کوم اپلیکیشن دې اړیکې مالک دی؟» بدیل ConnectivityManager.getConnectionOwnerUid دی، د هرې اړیکې لپاره ملاتړ شوې پوښتنه، او د زوړ عادت او نوي API ترمنځ انتخاب په دې پورې اړه لري چې تاسو واقعاً له درېیو کارونو کوم یو لرئ: پاکټونه ترلاسه کول، جریان نسبتول، یا کارول جمع کول.

د مالک پوښتنې ته دوه ځوابونه

له API 29 مخکې، یو ځانګړی یا root بهیر کولی شو د کرنل socket جدولونه ولولي، څلورګونی سره سم کړي او د مالک UID پوه شي. دا په یوه فایل کې د ټول وسیله لړلیک ورکاوه. له API 29 راهیسې د فایل سیسټم لید محدود دی، او ملاتړ شوې لاره د پروتوکول، سیمه‌ای پتې او لیرې پتې سره د هرې اړیکې پوښتنه ده.

QuestionLegacy socket tablesgetConnectionOwnerUid
Who owns this flow?Scan and match the tupleAsk once per tuple
Device-wide inventory?Yes, when readableNo, one flow at a time
Historical usage?NoNo; that is NetworkStatsManager
Works without root?No on modern releasesYes, for authorized callers

پرتلنه «زوړ د نوي پر وړاندې» نه ده. دا درې بېلابېل کارونه دي چې پخوا یو لوستل کېدونکي فایل پوره کول او اوس درې بېلابېل انټرفیسونه د درېو بېلابېلو قراردادونو سره پوره کوي.

سیمه‌ای پته د اپلیکیشن سر دی

د میتود لاسلیک پروتوکول، سیمه‌ای socket پته او لیرې socket پته اخلي. «سیمه‌ای» د اړیکې په اپلیکیشن خوا معنا لري، نه هغه سر چې د کتنې په شېبه کې د پاکټ سرچینه وي. له لیرې سرور څخه اپلیکیشن ته بېرته تلونکی پاکټ د دې تعریف په نسبت سرچینه او منزل بدل لري.

ConnectivityManager cm = getSystemService(ConnectivityManager.class);
int uid = cm.getConnectionOwnerUid(
    OsConstants.IPPROTO_TCP, appLocalAddress, appRemoteAddress);

دا د لوري تېروتنه ترټولو عام دلیل دی چې یوه کارکوونکې پوښتنه غلط ځواب ورکوي، یا هېڅ. له زنګ مخکې دواړه سرونه ولیکئ او جوړه د هغې اړیکې سره تایید کړئ چې اپلیکیشن واقعاً پرانیستې. د پتې کورنۍ هم مهمه ده: د IPv4 له لارې نقشه شوې پته او اصلي IPv6 پته بېلابېل tuple دي، او همدارنګه په ورته پورټونو کې TCP او UDP جریانونه.

اجازه او نامعلومې پایلې د قرارداد برخه ده

پوښتنه یوازې اجازه‌لرونکو زنګوونکو ته محدوده ده، په شمول د اړوند کاروونکي فعال VPN اپلیکیشن. نااړونده څارونکی اپلیکیشن نشي کولی فرض کړي چې د بل پروفایل اړیکې شمېرلی شي، او غیرمجاز زنګ کېدای شي د دوستانه تېروتنې پر ځای د امنیت استثنا وشیندي. دواړه پایلې په څرګند ډول مدیریت کړئ.

نشتونکی مالک د پاکټ نوم نه دی. جریان کېدای شي د پاکټ او پوښتنې ترمنځ بند شوی وي، tuple نیمګړی وي، یا زنګوونکي ته د پوهېدو اجازه نه وي. لومړنی بریالی ځواب کېش کول او بیا وروسته کارول نوی اړیکه زوړ اپلیکیشن ته منسوبوي، چې دا له نامعلوم خبر ورکولو څخه بدتر دی.

کله چې نسبت ناکام شي، ترافیک لا هم پریکړې ته اړتیا لري: چېرې چې پالیسي غواړي هلته یې بند کړئ، یوازې هغه حد ته اجازه ورکړئ چې تاسو یې پوهېږئ، یا تشه ښکاره کړئ. دا بدیل په ډیزاین پورې اړه لري، نه په تبصره.

حساب یوه بله پوښتنه ده

NetworkStatsManager کارول د خپلو لاسرسي قواعدو له مخې راپور کوي. کولی شي ووایي چې یو UID په یوه موده کې څومره لېږدولی؛ نشي کولی د یوې خپلې خوښې ژوندۍ پاکټ مالک ووایي. د شبکې وړتیاوې د شبکې ځانګړنې بیانوي، نه د socket لړلیک. درېیو ته ګډول هغه ډشبورډونه جوړوي چې یوشان ښکاري او نه دي.

د دې ساده حالت لپاره چې معلومه کړئ کوم اپلیکیشنونه تونل کاروي، د Android ملاتړ شوي اجازه‌لرونکي او بندیز اپلیکیشن لړلیکونه لا دمخه پرته له کوم scraping سیاست څرګندوي. د هر جریان نسبت هغو حالتونو ته وساتئ چې واقعاً ورته اړتیا لري، او د هغې ساتل شوې تطبیق لپاره بودیجه وټاکئ چې لوري، اجازې او نامعلوم حالتونه یوځای سمبالوي.

د کار له مخې وسیله وټاکئ، بیا څنډې وآزموئ

که اړتیا د تونل انتخاب وي، د پلیټفارم لړلیک وکاروئ. که ژوندی نسبت وي، د مالک پوښتنه وکاروئ او هر ځواب نه‌لرونکی tuple نامعلوم وګڼئ. که تاریخي مجموعې وي، stats API وکاروئ. بیا هغه درې څنډې وآزموئ چې ساده تطبیقونه ماتوي: د مخالف لوري پاکټ، هغه جریان چې له پوښتنې مخکې بندېږي، او هغه زنګوونکی چې فعال VPN نه دی.

له دې څخه هیڅ يو هم SELinux بندول، تلیفون root کول یا کرنل جدولونه نړیوال لوستل کېدونکي کول نه غواړي. محدودیت خپله موخه ده: پلیټفارم نسبت د قرارداد شاته واړاوه ترڅو ځواب یوازې هغه برخې ته ورسیږي چې په قانوني ډول ورته اړتیا لري، او بل چاته نه.

اړوندې مقالې