OWASP বিভাগ: MASVS-CODE: কোড গুণমান
ওভারভিউ
X509TrustManager
ক্লাস একটি দূরবর্তী সার্ভারের সত্যতা যাচাই করার জন্য দায়ী। এটি সার্ভারের শংসাপত্র যাচাই করে এটি করে।
একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনে একটি অনিরাপদ X509TrustManager
বাস্তবায়ন হল একটি বাস্তবায়ন যা অ্যাপ্লিকেশনটি যে সার্ভারের সাথে যোগাযোগ করছে তার সত্যতা সঠিকভাবে যাচাই করে না। এটি একজন আক্রমণকারীকে একটি বৈধ সার্ভারের ছদ্মবেশ ধারণ করতে এবং আক্রমণকারীকে সংবেদনশীল ডেটা পাঠানোর জন্য অ্যাপ্লিকেশনটিকে প্রতারণা করতে পারে৷
দুর্বলতা বিদ্যমান কারণ X509TrustManager
ক্লাস ব্যবহার করে, Java/Android সার্ভার যাচাইকরণ সম্পূর্ণ ওভাররাইড করার অনুমতি দেয়। X509TrustManager
ক্লাসে আগ্রহের দুটি ফাংশন রয়েছে: checkServerTrusted()
এবং getAcceptedIssuers()
। এই ফাংশন কলগুলি সমস্ত X.509 সার্টিফিকেট বিশ্বাস করার জন্য কনফিগার করা যেতে পারে। অবশেষে, কাস্টম বৈধতা যুক্তি বাগ বা অসম্পূর্ণ হতে পারে এবং অপ্রত্যাশিত সংযোগের অনুমতি দেয়। এই সমস্ত ক্ষেত্রে, ক্লাসের উদ্দেশ্য বাতিল করা হয়েছে এবং X509TrustManager
আউটপুটের উপর ভিত্তি করে প্রতিষ্ঠিত নেটওয়ার্ক সংযোগ নিরাপদ নয়।
প্রভাব
অনিরাপদ X509TrustManager বাস্তবায়ন দুর্বলতার দিকে নিয়ে যেতে পারে যা শিকার অ্যাপ্লিকেশন থেকে নেটওয়ার্ক ট্র্যাফিকের উপর MitM (ম্যান-ইন-দ্য-মিডল) আক্রমণ করতে ব্যবহার করা যেতে পারে। এই অনিরাপদ কোডটি ব্যবহার করার প্রভাব হল যে এই কোডটি ট্রিগার করা হলে একজন ব্যবহারকারীর অ্যাপ্লিকেশন নেটওয়ার্ক ডেটা নেটওয়ার্ক আক্রমণকারীদের (দূরবর্তী বা স্থানীয়ভাবে) দ্বারা আপস করা যেতে পারে। প্রভাবটি নেটওয়ার্ক ট্র্যাফিকের বিষয়বস্তুর উপর নির্ভর করে যা অসাবধানতাবশত প্রকাশিত হয় (PII, ব্যক্তিগত তথ্য, সংবেদনশীল সেশনের মান, পরিষেবার প্রমাণপত্র ইত্যাদি)।
প্রশমন
কাস্টম TLS/SSL শংসাপত্র বৈধতা কোড ব্যবহার বা প্রয়োগ করার পরিবর্তে সমস্ত উত্পাদন, পরীক্ষা, ডিবাগিং এবং ডেভ স্টেজ সংযোগগুলি সঠিকভাবে পরিচালনা করা হয়েছে তা নিশ্চিত করতে NetworkSecurityConfig.xml কার্যকারিতা ব্যবহার করুন৷ পরীক্ষা এবং ডিবাগ বিল্ডের জন্য একটি স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করার প্রয়োজন হলে, একটি কাস্টম X509TrustManager
প্রয়োগ করার পরিবর্তে NetworkSecurityConfig ব্যবহার করার কথা বিবেচনা করুন।
সম্পদ
- সতর্কতা ডক্স খেলুন
- নেটওয়ার্ক নিরাপত্তা কনফিগারেশন xml ফাইল কনফিগার করতে সহায়তা করার জন্য ডকুমেন্টেশন।
- TrustManager ক্লাসের জন্য ডেভেলপার ডকুমেন্টেশন।
- এই চেকটি X.509TrustManager বাস্তবায়নের জন্য দেখায় যার checkServerTrusted বা checkClientTrusted পদ্ধতি কিছুই করে না (এইভাবে যেকোন শংসাপত্রের চেইনকে বিশ্বাস করে)।
- এই চেকটি কাস্টম X.509TrustManager বাস্তবায়নের জন্য দেখায়।
- https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/ lint/checks/X509TrustManagerDetector.java