একটি APK ইনস্টল করার আগে Android অ্যাপের অনুমতিগুলি কীভাবে দেখবেন
আপনি যখন Google Play Store থেকে একটি অ্যাপ ইনস্টল করেন, তখন Android অ্যাপটি কী অ্যাক্সেস করতে পারে তার একটি সরলীকৃত সারাংশ দেখায়। একটি নন-প্লে সোর্স থেকে একটি APK সাইডলোড করুন এবং আপনি নিজে ম্যানিফেস্টটি না পড়লে আপনার কাছে এমন কোনো নিরাপত্তা জাল নেই। "একটি ওয়ালপেপার অ্যাপ কি সত্যিই এসএমএস এবং মাইক্রোফোন অ্যাক্সেসের প্রয়োজন?" ঠিক এই ধরনের প্রশ্ন এই গাইড আপনাকে উত্তর দিতে সাহায্য করবে।
একটি অপরিচিত APK ট্রাইজ করার সময় আমাদের টিম একই ওয়ার্কফ্লো ব্যবহার করে: এটি খুলুন, uses-permission এন্ট্রিগুলি পড়ুন, সুরক্ষা স্তরগুলি ডিকোড করুন এবং এটির বিভাগে সাধারণত যা প্রয়োজন তার তুলনায় বলেন অ্যাপটির কী প্রয়োজন তা তুলনা করুন৷ আমাদের অনলাইন APK তথ্য টুল আপনার জন্য বাইনারি-XML ডিকোডিং করে তাই পুরো প্রক্রিয়াটি প্রায় দশ সেকেন্ড সময় নেয়।
কেন অডিটিং অনুমতি বিরক্ত?
ক্ষতিকারক বিকাশকারীরা জনপ্রিয় বিনামূল্যের অ্যাপগুলি গ্রহণ করে, সেগুলিকে পরিবর্তন করে এবং তৃতীয় পক্ষের সাইটগুলিতে পুনরায় প্রকাশ করে৷ যদিও অ্যাপটি দেখতে এবং স্বাভাবিকভাবে কাজ করতে পারে, এর লুকানো কোডটি আপনার যোগাযোগের তালিকা অনুলিপি করতে বা আপনার পটভূমি অডিও রেকর্ড করতে পারে। অনুমতি প্রাক ইনস্টলেশন দেখার দ্বারা, আপনি "অনুমতি ক্রীপ" এর এই লাল পতাকাগুলি দেখতে পারেন৷
যেকোন APK ফাইল কিভাবে অডিট করবেন (অনলাইন)
আমাদের APK তথ্য টুল সম্পূর্ণরূপে আপনার ব্রাউজারে আপনার ফাইলের ম্যানিফেস্ট পড়ে; ফাইলটি কখনই একটি সার্ভারে আপলোড করা হয় না এবং কোন কোড কার্যকর করা হয় না। এটি কীভাবে ব্যবহার করবেন তা এখানে:
প্রক্রিয়া:
- APK তথ্য পৃষ্ঠা এ যান।
- আপনার .apk ফাইল নির্বাচন করুন.
- বিশ্লেষণ শেষ হওয়ার জন্য অপেক্ষা করুন (সাধারণত 5 সেকেন্ড)।
- অনুমতি বিভাগ নিচে স্ক্রোল করুন।
- READ_SMS, PROCESS_OUTGOING_CALLS, বা ACCESS_FINE_LOCATION এর মতো উচ্চ-ঝুঁকির পতাকাগুলি দেখুন৷
অনুমতি লাল পতাকা তালিকা
যদি একটি ক্যালকুলেটর বা টর্চলাইট অ্যাপ READ_CONTACTS বা RECORD_AUDIO এর জন্য জিজ্ঞাসা করে, অবিলম্বে ফাইলটি মুছুন। এই অ্যাপগুলিতে সেই ডেটা থাকার কোনও বৈধ কারণ নেই।
Android পারমিশন লেভেল বোঝা
সব অনুমতি সমান তৈরি করা হয় না. Android তাদের তিনটি স্তরে শ্রেণীবদ্ধ করে:
- স্বাভাবিক: কম-ঝুঁকির অনুমতি যা সরাসরি গোপনীয়তাকে হুমকি দেয় না (যেমন, SET_ALARM)। Android স্বয়ংক্রিয়ভাবে এগুলি মঞ্জুর করে৷
- বিপজ্জনক: উচ্চ-ঝুঁকির অনুমতি (যোগাযোগ, অবস্থান, ক্যামেরা)। এই আবশ্যক অ্যাপটি চলাকালীন আপনার দ্বারা নিশ্চিত করা হবে।
- স্বাক্ষর/সিস্টেম: অত্যন্ত উচ্চ-ঝুঁকি। এগুলি শুধুমাত্র ডিভাইস প্রস্তুতকারক বা OS দ্বারা স্বাক্ষরিত অ্যাপগুলিতে উপলব্ধ৷
ম্যানুয়াল পদ্ধতি (একটি জিপ ভিউয়ার ব্যবহার করে)
আপনার যদি কিছু প্রযুক্তিগত দক্ষতা থাকে তবে আপনি নিজেই অনুমতি নিরীক্ষা করতে পারেন:
- app.apk এর নাম পরিবর্তন করে app.zip করুন এবং এটি খুলুন।
- AndroidManifest.xml খুঁজুন। (দ্রষ্টব্য: এটি বাইনারি বিন্যাসে এবং একটি টেক্সট এডিটরে অস্পষ্ট মনে হবে)।
- এটিকে পাঠযোগ্য পাঠ্যে রূপান্তর করতে AXMLPrinter এর মতো একটি টুল ব্যবহার করুন।
- <uses-permission> দিয়ে শুরু হওয়া ট্যাগগুলির জন্য অনুসন্ধান করুন৷
প্রস্তাবনা: আমাদের অনলাইন টুল ব্যবহার করা অনেক দ্রুত যা আপনার জন্য তাৎক্ষণিকভাবে এটিকে ডিকোড করে।
এখনই আপনার অ্যাপস অডিট করুন
আপনার অ্যাপ্লিকেশানগুলি ঠিক কী চাইছে তা জানুন। কোন গোপন, কোন ঝুঁকি.
APK অনুমতি পরীক্ষা করুনAndroidManifest.xml-এ আসলে কী সংরক্ষিত আছে
ম্যানিফেস্ট হল প্রতিটি অনুমতি, উপাদান এবং একটি অ্যাপের বৈশিষ্ট্যের জন্য সত্যের উৎস। একটি APK-এর ভিতরে, ফাইলটি বাইনারি XML ফর্মে আছে, সোর্স কোডে আপনি যে প্লেইন টেক্সট দেখতে পাচ্ছেন তা নয়, তাই এটি একটি সাধারণ টেক্সট এডিটর দিয়ে পড়া যাবে না। আমাদের APK তথ্য টুলটি বাইনারি XML ডিকোড করে এবং প্রাসঙ্গিক ট্যাগগুলিকে সারফেস করে। সবচেয়ে গুরুত্বপূর্ণ হল:
- <uses-permission android:name="..."/>: অ্যাপটি কখনও অনুরোধ করতে পারে এমন প্রতিটি অনুমতি। পূর্ণ তালিকাটি এখানে রয়েছে, যেগুলি অ্যাপটি রানটাইমে কখনই ব্যবহার করতে পারে না।
- <uses-permission-sdk-23 ... />: একই, কিন্তু শুধুমাত্র তখনই অনুরোধ করা হয় যখন অ্যাপটি Android 6 বা তার পরে চলে। পুরানো ডিভাইসগুলিকে অনুরোধ না করেই নীরবে অনুমতি দেওয়া হয়৷
- <uses-feature android:name="..." android:required="true|false"/>: অ্যাপ ব্যবহার করে হার্ডওয়্যার বৈশিষ্ট্যগুলি (ক্যামেরা, জিপিএস, এনএফসি)। প্রয়োজনীয় চিহ্নিত করা হলে, Play Store অ্যাপটিকে এমন ডিভাইসগুলি থেকে লুকিয়ে রাখে যেখানে বৈশিষ্ট্য নেই।
- <application android:debuggable="true">: একটি রিলিজ APK-এ একটি বিশাল লাল পতাকা৷ একটি ডিবাগযোগ্য অ্যাপ ADB অ্যাক্সেস সহ যেকোনও ব্যক্তির কাছে তার মেমরি এবং প্রক্রিয়া অবস্থা প্রকাশ করে। প্রত্যাখ্যান করুন।
- সংবেদনশীল কার্যকলাপে <activity android:exported="true">: অন্যান্য অ্যাপকে সেই স্ক্রীন চালু করতে দেয়। একটি গোপনীয়তা অ্যাপের জন্য, এটি প্রায়শই অগোছালো কোডিংকে নির্দেশ করে।
অনুমতি সুরক্ষা স্তর: চিট শীট
Android প্রতিটি অনুমতিকে একটি "সুরক্ষা স্তর" বরাদ্দ করে। একটি অনুরোধ কোন স্তরের অন্তর্গত তা জানা আপনাকে বলে যে OS এটিকে কতটা গুরুত্ব সহকারে ব্যবহার করবে৷
| সুরক্ষা স্তর | ব্যবহারকারীর অভিজ্ঞতা | উদাহরণ |
|---|---|---|
| স্বাভাবিক | ইনস্টল করার সময় নীরবে মঞ্জুর করা হয়েছে। কোন প্রম্পট. | ইন্টারনেট, ভাইব্রেট, ACCESS_NETWORK_STATE, WAKE_LOCK |
| বিপজ্জনক | প্রথমবার বৈশিষ্ট্যটি ব্যবহার করা হলে রানটাইম প্রম্পট। সেটিংসে প্রত্যাহারযোগ্য। | ক্যামেরা, RECORD_AUDIO, READ_CONTACTS, ACCESS_FINE_LOCATION |
| স্বাক্ষর | অনুদানকারী অ্যাপ বা OS-এর মতো একই শংসাপত্র সহ স্বাক্ষরিত অ্যাপগুলিকে শুধুমাত্র মঞ্জুর করা হয়েছে। | BIND_VPN_SERVICE, INSTALL_PACKAGES (শুধুমাত্র সিস্টেম) |
| স্বাক্ষর|সুবিধাপ্রাপ্ত | সিস্টেম ইমেজের priv-app ডিরেক্টরিতে শুধুমাত্র আগে থেকে ইনস্টল করা অ্যাপ্লিকেশানগুলির জন্য উপলব্ধ৷ | MANAGE_USERS, READ_LOGS (ইউজার ও লগ পরিচালনা) |
| appop/ ভূমিকা | সক্ষম করার জন্য একটি পৃথক সেটিংস প্রবাহের প্রয়োজন৷ | SYSTEM_ALERT_WINDOW, BIND_ACCESSIBILITY_SERVICE, MANAGE_EXTERNAL_STORAGE (বিশেষ সিস্টেম অনুমতি) |
"লুকানো" অনুমতি আসলে কি মানে
একটি সাধারণ ভুল ধারণা হল যে কিছু অনুমতি গোপনীয়। সেগুলি নয়: একটি অ্যাপ ব্যবহার করতে পারে এমন প্রতিটি অনুমতি অবশ্যই AndroidManifest.xml-এ ঘোষণা করতে হবে এবং OS সেখানে তালিকাভুক্ত নয় এমন কোনও অনুমতি দিতে অস্বীকার করে। লোকেরা সাধারণত "লুকানো" দ্বারা যা বোঝায় তা হল দুটি জিনিসের মধ্যে একটি:
- সাধারণ-স্তরের অনুমতিগুলি নীরব। কোনো ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই ইনস্টলের সময় মঞ্জুর করা হয়। প্লে স্টোরের সারাংশ তাদের কিছু দেখায় না। এগুলি "লুকানো" অর্থে "উপেক্ষা করা সহজ", "অপ্রকাশিত" অর্থে নয়।
- অ্যাপ-সংজ্ঞায়িত কাস্টম অনুমতি। অ্যাপগুলি তাদের নিজস্ব <permission> ট্যাগ ঘোষণা করতে পারে এবং অভ্যন্তরীণ উপাদানগুলিতে তাদের প্রয়োজন। এগুলি আন্তঃ-অ্যাপ যোগাযোগের জন্য বিদ্যমান এবং নিজেরাই গোপনীয়তার উদ্বেগ নয়, তবে যদি একটি জনপ্রিয় অ্যাপ ভুল সুরক্ষা স্তরের সাথে একটি কাস্টম অনুমতি ঘোষণা করে এবং অন্য একটি অ্যাপ এটিকে ব্যাকডোর হিসাবে ব্যবহার করে তবে সেগুলি অপব্যবহার করা যেতে পারে।
যেভাবেই হোক, উত্তরটি একই: ম্যানিফেস্টটি পড়ুন, নিজে থেকে প্লে স্টোরের বিবরণকে বিশ্বাস করবেন না।
কাজের উদাহরণ: একটি বাস্তব APK অডিটিং
ধরুন আপনার ডাউনলোড ফোল্ডারে example.apk আছে। এখানে সঠিক কর্মপ্রবাহ আছে:
- আপনার ব্রাউজারে APK তথ্য টুল খুলুন।
- আপলোড এলাকায় APK ড্রপ. প্রক্রিয়াকরণ স্থানীয়ভাবে ঘটে; ফাইলটি আপনার ডিভাইস ছেড়ে যায় না।
- অনুমতি বিভাগটি পড়ুন। প্রতিটি এন্ট্রি ধ্রুবক নাম (android.permission.READ_CONTACTS এবং এটি যা অনুমতি দেয় তার একটি সরল-ভাষা বর্ণনা দেখায়)।
- অ্যাপের বিভাগের সাথে তালিকার তুলনা করুন। মোটামুটিভাবে, আশা করুন:
- ক্যামেরা অ্যাপস: ক্যামেরা, RECORD_AUDIO (ভিডিওর জন্য), স্টোরেজ/মিডিয়া লিখুন
- মেসেজিং অ্যাপস: INTERNET, READ_CONTACTS, SEND_SMS (শুধুমাত্র SMS-ভিত্তিক হলে), RECORD_AUDIO (ভয়েস নোটের জন্য), ক্যামেরা (ছবি পাঠানোর জন্য)
- গেম: ইন্টারনেট, কখনও কখনও RECORD_AUDIO (ইন-গেম ভয়েস চ্যাটের জন্য), বিলিং-সম্পর্কিত অনুমতি; কদাচিৎ অন্য কিছু
- ইউটিলিটি অ্যাপস (ক্যালকুলেটর, ফ্ল্যাশলাইট, আবহাওয়া): ইন্টারনেট (বিজ্ঞাপনের জন্য), ACCESS_NETWORK_STATE, সম্ভবত LOCATION (শুধুমাত্র আবহাওয়া)। এর বাইরে কিছু সন্দেহজনক।
- তালিকার কিছু যদি বিভাগের সাথে খাপ খায় না, ইনস্টল করবেন না। একটি ক্যালকুলেটর এসএমএস অ্যাক্সেস প্রয়োজন কোন ভাল কারণ নেই.
ফাইলটি একটি APK, একটি XAPK (যেখানে আমরা অভ্যন্তরীণ বেস APK পড়ি), বা একটি APKS বান্ডেল (যেখানে আমরা প্রতিটি স্প্লিটের ম্যানিফেস্ট পড়ি) কিনা একই যুক্তি প্রযোজ্য।
কমান্ড লাইন থেকে এটা করা
আপনি যদি টার্মিনাল রুট পছন্দ করেন, তাহলে Android SDK aapt2 পাঠায়, যা প্লেইন XML-এ যেকোনো APK থেকে একটি ম্যানিফেস্ট ডাম্প করে:
aapt2 dump badging example.apk | grep "uses-permission"
অথবা একই সময়ে স্বাক্ষর শংসাপত্র যাচাই করতে apksigner ব্যবহার করুন:
apksigner verify --print-certs example.apk
ব্রাউজার টুলটি ব্যবহারকারীদের জন্য একই কাজ করে যারা শুধুমাত্র একটি ফাইল পরীক্ষা করার জন্য একটি SDK ইনস্টল করবেন না।
প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
আমি কি একটি APK ইনস্টল করার পরে একটি অনুমতি অস্বীকার করতে পারি?
হ্যাঁ। Android 6.0 এবং উচ্চতর সংস্করণে, আপনি পৃথক বিপজ্জনক অনুমতিগুলি চালু বা বন্ধ করতে সেটিংস > অ্যাপস > [অ্যাপের নাম] > অনুমতি-এ যেতে পারেন।
XAPK ফাইলের বিভিন্ন অনুমতি আছে?
একটি XAPK-এ এক বা একাধিক APK থাকে৷ প্রতিটি APK এর ভিতরের নিজস্ব ম্যানিফেস্ট রয়েছে। আমাদের টুলটি আপনাকে প্রাসঙ্গিক অনুমতিগুলি দেখানোর জন্য বান্ডেলের মধ্যে প্রধান APK বিশ্লেষণ করবে।
কেন প্রতিটি অ্যাপ "নেটওয়ার্ক অ্যাক্সেস" জিজ্ঞাসা করে?
বিশ্লেষণ, বাগ রিপোর্টিং বা বিজ্ঞাপনের জন্য প্রায় সব অ্যাপেরই ইন্টারনেট অ্যাক্সেস প্রয়োজন। যদিও এটি সাধারণ, এটি যেভাবে চুরি করা ডেটা হ্যাকারের সার্ভারে পাঠানো হয়।
আপনি ইনস্টল করার আগে ম্যানিফেস্ট অনুমতিগুলি পরিদর্শন করুন৷
আপনি যা দেখতে পাচ্ছেন না তার বিচার করতে পারবেন না। আপনি সাইডলোড করার আগে একটি APK এর অনুমতি দেখুন-এ দশ সেকেন্ড সময় ব্যয় করা হল একটি অ্যাপ কী পৌঁছাতে পারে তা জানা এবং কেবল এটি আচরণ করবে আশা করার মধ্যে পার্থক্য। প্রথমে তালিকাটি পড়ুন এবং দ্বিতীয়টি ইনস্টল করুন।