OWASP বিভাগ: MASVS-PLATFORM: প্ল্যাটফর্ম ইন্টার্যাকশন
এক নজরে
অনেক মোবাইল অ্যাপ্লিকেশন ফিচার প্রদান করার জন্য এক্সটার্নাল API ব্যবহার করে। সাধারণত, পরিষেবার সাথে কানেক্ট করা অ্যাপ্লিকেশন যাচাই করতে স্ট্যাটিক টোকেন বা কী ব্যবহার করা হয়।
তবে, ক্লায়েন্ট-সার্ভার সেটিংয়ের (বা মোবাইল অ্যাপ ও API) ক্ষেত্রে – সংবেদনশীল ডেটা বা পরিষেবা অ্যাক্সেস করার জন্য স্ট্যাটিক কী ব্যবহার করাকে সাধারণত নিরাপদ যাচাইকরণ পদ্ধতি হিসেবে বিবেচনা করা হয় না। ইন্টার্নাল ইনফ্রাস্ট্রাকচারের মতো নয়, এই 'কী' অ্যাক্সেস করতে পারলে, যেকেউ এক্সটার্নাল API অ্যাক্সেস করতে এবং পরিষেবার অপব্যবহার করতে পারবেন।
যেমন, স্ট্যাটিক কী-এর ক্ষেত্রে অ্যাপ্লিকেশন থেকে রিভার্স ইঞ্জিনিয়ারিং করা অথবা মোবাইল অ্যাপ্লিকেশন এক্সটার্নাল API-এর সাথে যোগাযোগ করার সময় ইন্টারসেপ্ট করা সম্ভব। এছাড়াও, এই স্ট্যাটিক কী অ্যাপ্লিকেশনের মধ্যে হার্ড-কোড করা হওয়ার সম্ভাবনা বেশি।
API ডেটা ও পরিষেবার ক্ষেত্রে ঝুঁকি তখনই তৈরি হয় যখন যথেষ্ট সুরক্ষিত যাচাইকরণ ও অ্যাক্সেস কন্ট্রোল ব্যবহার করা হয় না।
স্ট্যাটিক কী ব্যবহার করার সময়, অনুরোধ রিপ্লে করে বা (ইন্টারসেপ্ট বা রিভার্স ইঞ্জিনিয়ার করা) কী ব্যবহার করে নতুন অনুরোধ তৈরি করে, কোনও সময়সীমা ছাড়াই API-এর অপব্যবহার করা যেতে পারে।
প্রভাব
কোনও ডেভেলপার AI বা ML API পরিষেবার জন্য পেমেন্ট করলে, আক্রমণকারীর পক্ষে এই 'কী' চুরি করা এবং তাদের পরিষেবায় ঋণ নেওয়া বা জাল কন্টেন্ট তৈরি করতে এটি ব্যবহার করা তুলনামূলকভাবে সহজ হবে।
API-তে স্টোর করা যেকোনও ব্যবহারকারীর ডেটা, ফাইল বা PII সহজেই উপলভ্য হবে, যার ফলে ক্ষতিকারক লিক হতে পারে।
এছাড়াও, কোনও আক্রমণকারী এই অ্যাক্সেস ব্যবহার করে প্রতারণা করতে, পরিষেবা রিডাইরেক্ট করতে এবং বিরল ক্ষেত্রে, সার্ভারের সম্পূর্ণ নিয়ন্ত্রণ পেতে পারে।
মিটিগেশন
Stateful API
অ্যাপ্লিকেশনটি যদি ব্যবহারকারীর লগ-ইন প্রদান করে বা ব্যবহারকারীর সেশন ট্র্যাক করার ক্ষমতা রাখে, তাহলে আমরা ডেভেলপারদের তাদের অ্যাপের সাথে স্টেটফুল ইন্টিগ্রেশনের জন্য Google Cloud-এর মতো একটি API পরিষেবা ব্যবহার করার সাজেশন দিই।
এছাড়াও, API পরিষেবার মাধ্যমে প্রদান করা সুরক্ষিত যাচাইকরণ, ক্লায়েন্ট যাচাইকরণ ও সেশন কন্ট্রোল ব্যবহার করুন এবং স্ট্যাটিক কী-এর বিকল্প হিসেবে ডায়নামিক টোকেন ব্যবহার করার কথা বিবেচনা করুন। টোকেনের মেয়াদ যেন যুক্তিসঙ্গতভাবে কম সময়ের মধ্যে শেষ হয়ে যায় (সাধারণত ১ ঘণ্টা)।
তারপর, API-তে অ্যাক্সেস দেওয়ার জন্য যাচাইকরণে ডায়নামিক টোকেন ব্যবহার করা উচিত। OAuth 2.0 ব্যবহার করে কীভাবে এটি করা যেতে পারে তা এই নির্দেশিকা থেকে জানতে পারবেন। এইসব নির্দেশিকা ছাড়াও, নিম্নলিখিত ফিচার প্রয়োগ করে আপনার Android অ্যাপে দুর্বলতা কমাতে OAuth 2.0 আরও শক্তিশালী করা যেতে পারে।
সমস্যা ম্যানেজ করা ও লগ করার সঠিক পদ্ধতি প্রয়োগ করুন:
- OAuth সংক্রান্ত সমস্যাগুলি সুন্দরভাবে, দৃশ্যমানভাবে ম্যানেজ করুন এবং ডিবাগ করার উদ্দেশ্যে সেগুলি লগ করুন।
- অ্যাটাক সারফেস কমানো হলে, কোনও সমস্যা দেখা দিলে তা শনাক্ত করতে এবং সমাধান করতেও আপনাকে সাহায্য করবে।
- ব্যবহারকারীকে দেখানো বা লগ করা যেকোনও মেসেজ যেন স্পষ্ট হয়, তবে তাতে যেন এমন কোনও তথ্য না থাকে যা কোনও প্রতিপক্ষের কাজে লাগতে পারে।
অ্যাপ্লিকেশনে নিরাপদে OAuth কনফিগার করুন:
- অনুমোদন ও টোকেন এন্ডপয়েন্ট, দুটিতেই
redirect_uriপ্যারামিটার পাঠান। - আপনার অ্যাপ থার্ড-পার্টি পরিষেবার সাথে OAuth ব্যবহার করলে, আপনার অ্যাপের রিসোর্সে অ্যাক্সেস সীমিত করতে ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) কনফিগার করুন।
- এটি অননুমোদিত ক্রস-সাইট স্ক্রিপ্টিং (XSS) অ্যাটাক প্রতিরোধ করতে সাহায্য করবে।
- CSRF আক্রমণ প্রতিরোধ করতে স্টেট প্যারামিটার ব্যবহার করুন।
নিরাপত্তা লাইব্রেরি ব্যবহার করুন:
- সুরক্ষিত OAuth ফ্লো-এর প্রয়োগ সহজ করতে AppAuth-এর মতো নিরাপত্তা লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।
- এই Android লাইব্রেরিগুলি আগে উল্লেখ করা নিরাপত্তার অনেক পেশাদার পদ্ধতি অটোমেট করতে সাহায্য করতে পারে।
Firebase এবং Google ID টোকেন সহ অন্যান্য যাচাইকরণ পদ্ধতি OpenAPI ডকুমেন্টেশনে বর্ণনা করা হয়েছে।
স্টেটলেস API
API পরিষেবা যদি আগে সাজেস্ট করা কোনও সুরক্ষা প্রদান না করে এবং ব্যবহারকারীর লগ-ইন ছাড়াই স্টেটলেস সেশনের প্রয়োজন হয়, তাহলে ডেভেলপারদের নিজেদের মিডলওয়্যার সমাধান প্রদান করতে হতে পারে।
এর মধ্যে অ্যাপ ও API এন্ডপয়েন্টের মধ্যে 'প্রক্সি' অনুরোধ অন্তর্ভুক্ত থাকবে। এটি করার একটি পদ্ধতি হল JSON ওয়েব টোকেন (JWT) এবং JSON ওয়েব সিগনেচার (JWS) ব্যবহার করা অথবা আগে যেমন সাজেস্ট করা হয়েছে সেই অনুযায়ী সম্পূর্ণ যাচাই করা পরিষেবা প্রদান করা। এটি অ্যাপ্লিকেশনের (ক্লায়েন্ট) পরিবর্তে সার্ভার-সাইডে ভালনারেবল স্ট্যাটিক কী স্টোর করার উপায় প্রদান করে।
মোবাইল অ্যাপ্লিকেশনে এন্ড-টু-এন্ড স্টেটলেস সমাধান প্রদান করার ক্ষেত্রে সহজাত সমস্যা রয়েছে। সবচেয়ে গুরুত্বপূর্ণ চ্যালেঞ্জগুলির মধ্যে কয়েকটি হল ক্লায়েন্ট (অ্যাপ) যাচাই করা এবং ডিভাইসে ব্যক্তিগত কী বা গোপন তথ্য নিরাপদে স্টোর করা।
Play Integrity API অ্যাপ্লিকেশন ও অনুরোধের ইন্টিগ্রিটি যাচাই করে। এটি এমন কিছু পরিস্থিতি প্রশমিত করতে পারে যেখানে এই অ্যাক্সেসের অপব্যবহার করা হতে পারে। 'কী' ম্যানেজমেন্টের ক্ষেত্রে, অনেক সময় ব্যক্তিগত 'কী' নিরাপদে স্টোর করার জন্য কীস্টোর হল সবচেয়ে ভাল জায়গা।
কিছু মোবাইল অ্যাপ্লিকেশন, অ্যাপ্লিকেশনের ইন্টিগ্রিটি চেক করতে রেজিস্ট্রেশন ফেজ ব্যবহার করে এবং নিরাপদ এক্সচেঞ্জ ব্যবহার করে একটি 'কী' প্রদান করে। এই পদ্ধতিগুলি জটিল এবং এই ডকুমেন্টের আওতার বাইরে। তবে, ক্লাউড কী ম্যানেজমেন্ট পরিষেবা একটি সম্ভাব্য সমাধান।
রিসোর্স
- OAuth 2.0 সংক্রান্ত সাজেশন
- OAuth 2.0 এবং JWT ব্যবহার করার ব্যাপারে পরামর্শ
- OAuth ক্লায়েন্ট সংক্রান্ত সাজেশন