OWASP বিভাগ: MASVS-নেটওয়ার্ক: নেটওয়ার্ক কমিউনিকেশন
ওভারভিউ
একটি অ্যান্ড্রয়েড অ্যাপে ক্লিয়ারটেক্সট নেটওয়ার্ক যোগাযোগের অনুমতি দেওয়ার অর্থ হল নেটওয়ার্ক ট্র্যাফিক নিরীক্ষণকারী যে কেউ প্রেরিত হওয়া ডেটা দেখতে এবং ম্যানিপুলেট করতে পারে৷ প্রেরিত ডেটাতে পাসওয়ার্ড, ক্রেডিট কার্ড নম্বর বা অন্যান্য ব্যক্তিগত তথ্যের মতো সংবেদনশীল তথ্য থাকলে এটি একটি দুর্বলতা।
আপনি সংবেদনশীল তথ্য পাঠাচ্ছেন বা না পাঠাচ্ছেন তা নির্বিশেষে, ক্লিয়ারটেক্সট ব্যবহার করা এখনও একটি দুর্বলতা হতে পারে কারণ ARP বা DNS বিষের মতো নেটওয়ার্ক আক্রমণের মাধ্যমেও ক্লিয়ারটেক্সট ট্র্যাফিক ম্যানিপুলেট করা যেতে পারে, এইভাবে আক্রমণকারীদের একটি অ্যাপের আচরণকে প্রভাবিত করতে সক্ষম করে।
প্রভাব
যখন একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন একটি নেটওয়ার্কের মাধ্যমে পরিষ্কার পাঠ্যে ডেটা পাঠায় বা গ্রহণ করে, তখন যে কেউ নেটওয়ার্ক নিরীক্ষণ করে সেই ডেটা আটকাতে এবং পড়তে পারে৷ যদি এই ডেটাতে পাসওয়ার্ড, ক্রেডিট কার্ড নম্বর বা ব্যক্তিগত বার্তাগুলির মতো সংবেদনশীল তথ্য অন্তর্ভুক্ত থাকে, তাহলে এটি পরিচয় চুরি, আর্থিক জালিয়াতি এবং অন্যান্য গুরুতর সমস্যার কারণ হতে পারে।
উদাহরণস্বরূপ, ক্লিয়ার টেক্সটে পাসওয়ার্ড প্রেরণকারী একটি অ্যাপ এই শংসাপত্রগুলিকে ট্র্যাফিক বাধাদানকারী ক্ষতিকারক অভিনেতার কাছে প্রকাশ করতে পারে। এই ডেটা তখন ব্যবহারকারীর অ্যাকাউন্টে অননুমোদিত অ্যাক্সেস পেতে ব্যবহার করা যেতে পারে।
ঝুঁকি: এনক্রিপ্ট করা যোগাযোগ চ্যানেল
এনক্রিপ্ট না করা যোগাযোগ চ্যানেলগুলির মাধ্যমে ডেটা প্রেরণ করা ডিভাইস এবং অ্যাপ্লিকেশন এন্ডপয়েন্টগুলির মধ্যে ভাগ করা ডেটা প্রকাশ করে৷ বলা তথ্য একটি আক্রমণকারী দ্বারা বাধা এবং সম্ভাব্য পরিবর্তন করা যেতে পারে.
প্রশমন
এনক্রিপ্ট করা যোগাযোগ চ্যানেলের মাধ্যমে ডেটা পাঠানো উচিত। এনক্রিপশন ক্ষমতা অফার করে না এমন প্রোটোকলের বিকল্প হিসেবে নিরাপদ প্রোটোকল ব্যবহার করা উচিত।
নির্দিষ্ট ঝুঁকি
এই বিভাগটি এমন ঝুঁকি সংগ্রহ করে যেগুলির জন্য অ-মানক প্রশমন কৌশল প্রয়োজন বা নির্দিষ্ট SDK স্তরে প্রশমিত করা হয়েছে এবং সম্পূর্ণতার জন্য এখানে রয়েছে।
ঝুঁকি: HTTP
এই বিভাগের নির্দেশিকা শুধুমাত্র Android 8.1 (API স্তর 27) বা তার আগের অ্যাপগুলির জন্য প্রযোজ্য। Android 9 (API স্তর 28) দিয়ে শুরু করে, ক্লিয়ারটেক্সট সমর্থন ডিফল্টরূপে অক্ষম করা হয়।
প্রশমন
ক্লিয়ারটেক্সট ট্রাফিক অপ্ট-আউট করতে NetworkSecurityConfig.xml বৈশিষ্ট্য ব্যবহার করুন:
এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</network-security-config>
এই বিকল্পটি ব্যাকএন্ড সার্ভারের মতো বাহ্যিক উত্স দ্বারা প্রদত্ত URL গুলির পরিবর্তনের কারণে অ্যাপগুলিতে দুর্ঘটনাজনিত রিগ্রেশন প্রতিরোধ করতে সহায়তা করে৷
ঝুঁকি: FTP
ডিভাইসগুলির মধ্যে ফাইলগুলি আদান-প্রদানের জন্য FTP প্রোটোকল ব্যবহার করা বিভিন্ন ঝুঁকি উপস্থাপন করে, সবচেয়ে উল্লেখযোগ্য হল যোগাযোগ চ্যানেলে এনক্রিপশনের অভাব। এর পরিবর্তে নিরাপদ বিকল্প যেমন SFTP বা HTTPS ব্যবহার করা উচিত।
এই বিভাগের নির্দেশিকা শুধুমাত্র Android 8.1 (API স্তর 27) বা তার আগের অ্যাপগুলির জন্য প্রযোজ্য। Android 9 (API স্তর 28) দিয়ে শুরু করে, ক্লিয়ারটেক্সট সমর্থন ডিফল্টরূপে অক্ষম করা হয়।
প্রশমন
HTTPS ব্যবহার করুন
এই প্রোটোকল ট্রানজিটে ডেটা এনক্রিপ্ট করে। এই ধরনের ফাইল এক্সচেঞ্জ প্রোটোকল ব্যবহার করার সময় অতিরিক্ত ব্যবস্থা বিবেচনা করা উচিত:
- প্রমাণীকরণ - ব্যবহারকারীদের নিরাপদ প্রক্রিয়া ব্যবহার করে নিজেদের প্রমাণীকরণ করা উচিত। প্রাথমিক প্রমাণীকরণকে সাধারণত নিরুৎসাহিত করা হয়, কারণ শংসাপত্রগুলি সুরক্ষিত থাকে না এবং প্রতিটি অনুরোধে পাঠানো হয়, আপসের ঝুঁকি বাড়ায়।
- অনুমোদন - ব্যবহারকারীদের শুধুমাত্র উদ্দিষ্ট সম্পদ অ্যাক্সেস করতে সীমাবদ্ধ করা উচিত।
- নিরাপত্তার সর্বোত্তম অনুশীলন অনুসরণ করে একটি শক্তিশালী প্রোটোকল এবং সাইফার স্যুট ব্যবহার করা হয়েছে তা নিশ্চিত করুন। লেখার তারিখে, কমপক্ষে TLSv1.3 প্রোটোকল ব্যবহার করার পরামর্শ দেওয়া হয় ।
- Android 9 এবং পরবর্তীতে, ক্লিয়ারটেক্সট HTTP যোগাযোগগুলি ডিফল্টরূপে অক্ষম করা হয়, স্বয়ংক্রিয়ভাবে HTTPS প্রয়োগ করে৷
সম্পদ
- HTTP ওভার TLS RFC
- HTTP প্রমাণীকরণ স্কিম
- মজিলা ওয়েব নিরাপত্তা সুপারিশ
- Mozilla SSL প্রস্তাবিত কনফিগারেশন জেনারেটর
- মজিলা সার্ভার সাইড TLS সুপারিশ
SFTP ব্যবহার করুন
এই প্রোটোকল ট্রানজিটে ডেটা এনক্রিপ্ট করে। এই ধরনের ফাইল এক্সচেঞ্জ প্রোটোকল ব্যবহার করার সময় অতিরিক্ত ব্যবস্থা বিবেচনা করা উচিত:
- SFTP বিভিন্ন ধরনের প্রমাণীকরণ সমর্থন করে। পাসওয়ার্ড-ভিত্তিক প্রমাণীকরণের পরিবর্তে, সর্বজনীন কী প্রমাণীকরণ পদ্ধতি ব্যবহার করা উচিত। এই ধরনের কীগুলি নিরাপদে তৈরি এবং সংরক্ষণ করা উচিত, এই উদ্দেশ্যে Android Keystore সুপারিশ করা হয়।
- নিশ্চিত করুন যে সমর্থিত সাইফারগুলি নিরাপত্তার সর্বোত্তম অনুশীলনগুলি অনুসরণ করে৷
সম্পদ
- OpenSSH প্রধান ম্যানুয়াল পৃষ্ঠা
- SSH RFC, যা এই প্রোটোকলের জন্য ব্যবহার করা যেতে পারে এমন কনফিগারেশন এবং স্কিমগুলির বিবরণ দেয়
- Mozilla OpenSSH নিরাপত্তা সুপারিশ
- অ্যান্ড্রয়েড কীস্টোর সিস্টেম
সম্পদ
- নেটওয়ার্ক নিরাপত্তা কনফিগারেশনের জন্য ক্লিয়ারটেক্সট ট্রাফিক অপ্ট-আউট
- HTTP ওভার TLS RFC
- HTTP প্রমাণীকরণ স্কিম
- মজিলা ওয়েব নিরাপত্তা সুপারিশ
- Mozilla SSL প্রস্তাবিত কনফিগারেশন জেনারেটর
- মজিলা সার্ভার সাইড TLS সুপারিশ
- OpenSSH প্রধান ম্যানুয়াল পৃষ্ঠা
- SSH RFC, যা এই প্রোটোকলের জন্য ব্যবহার করা যেতে পারে এমন কনফিগারেশন এবং স্কিমগুলির বিবরণ দেয়
- Mozilla OpenSSH নিরাপত্তা সুপারিশ
- অ্যান্ড্রয়েড কীস্টোর সিস্টেম