FixVibe
Covered by FixVibehigh

JWT নিরাপত্তা: অনিরাপদ টোকেন এবং দাবির বৈধতা অনুপস্থিত হওয়ার ঝুঁকি

JSON ওয়েব টোকেন (JWTs) দাবি স্থানান্তর করার জন্য একটি মান প্রদান করে, কিন্তু নিরাপত্তা কঠোর বৈধতার উপর নির্ভর করে। স্বাক্ষর, মেয়াদ শেষ হওয়ার সময়, বা অভিপ্রেত শ্রোতা যাচাই করতে ব্যর্থ হলে আক্রমণকারীদের প্রমাণীকরণ বাইপাস বা টোকেন রিপ্লে করতে দেয়।

CWE-347CWE-287CWE-613

আক্রমণকারীর প্রভাব

অনুপযুক্ত JWT বৈধতা আক্রমণকারীদের দাবি জাল করে বা মেয়াদোত্তীর্ণ টোকেন [S1] পুনরায় ব্যবহার করে প্রমাণীকরণ প্রক্রিয়া বাইপাস করতে দেয়। যদি কোনো সার্ভার বৈধ স্বাক্ষর ছাড়াই টোকেন গ্রহণ করে, তাহলে কোনো আক্রমণকারী বিশেষাধিকার বৃদ্ধি করতে বা কোনো ব্যবহারকারী [S1] ছদ্মবেশী করতে পেলোড পরিবর্তন করতে পারে। অধিকন্তু, মেয়াদোত্তীর্ণ (exp) দাবি কার্যকর করতে ব্যর্থ হলে একজন আক্রমণকারীকে একটি আপস করা টোকেন অনির্দিষ্টকালের জন্য [S1] ব্যবহার করার অনুমতি দেয়৷

মূল কারণ

একটি JSON ওয়েব টোকেন (JWT) হল একটি JSON-ভিত্তিক কাঠামো যা ডিজিটালভাবে স্বাক্ষরিত বা অখণ্ডতা সুরক্ষিত [S1] দাবির প্রতিনিধিত্ব করতে ব্যবহৃত হয়। নিরাপত্তা ব্যর্থতা সাধারণত দুটি প্রাথমিক বাস্তবায়ন ফাঁক থেকে উদ্ভূত হয়:

  • অনিরাপদ JWTs গ্রহণ: যদি একটি পরিষেবা কঠোরভাবে স্বাক্ষর যাচাইকরণ প্রয়োগ না করে, তাহলে এটি "অনিরাপদ JWTs" প্রক্রিয়া করতে পারে যেখানে স্বাক্ষর অনুপস্থিত থাকে এবং অ্যালগরিদম "কোনটিই নয়" [S1] তে সেট করা থাকে। এই পরিস্থিতিতে, সার্ভার তাদের অখণ্ডতা [S1] যাচাই না করেই পেলোডের দাবিগুলিকে বিশ্বাস করে৷
  • অনুপস্থিত দাবির বৈধতা: exp (মেয়াদ শেষ হওয়ার সময়) দাবিটি সেই সময়কে চিহ্নিত করে যেটি বা তার পরে JWT অবশ্যই [S1] প্রক্রিয়াকরণের জন্য গ্রহণ করা উচিত নয়৷ aud (শ্রোতা) দাবি [S1] টোকেনের উদ্দিষ্ট প্রাপকদের চিহ্নিত করে৷ যদি এইগুলি চেক না করা হয়, সার্ভার টোকেনগুলি গ্রহণ করতে পারে যেগুলির মেয়াদ শেষ হয়ে গেছে বা একটি ভিন্ন অ্যাপ্লিকেশন [S1] এর জন্য ছিল৷

কংক্রিট ফিক্স

  • ক্রিপ্টোগ্রাফিক স্বাক্ষর প্রয়োগ করুন: যেকোন JWT প্রত্যাখ্যান করার জন্য অ্যাপ্লিকেশনটি কনফিগার করুন যা একটি পূর্ব-অনুমোদিত, শক্তিশালী স্বাক্ষর করার অ্যালগরিদম (যেমন RS256) ব্যবহার করে না।
  • মেয়াদ শেষ হওয়ার বৈধতা দিন: বর্তমান তারিখ এবং সময় exp দাবি [S1]-এ নির্দিষ্ট সময়ের আগে নিশ্চিত করতে একটি বাধ্যতামূলক চেক প্রয়োগ করুন৷
  • শ্রোতা যাচাই করুন: নিশ্চিত করুন aud দাবিতে স্থানীয় পরিষেবা চিহ্নিতকারী একটি মান রয়েছে; aud দাবিতে পরিষেবাটি চিহ্নিত না হলে, টোকেন অবশ্যই [S1] প্রত্যাখ্যান করতে হবে।
  • রিপ্লে প্রতিরোধ করুন: jti (JWT ID) দাবিটি ব্যবহার করুন প্রতিটি টোকেনের জন্য একটি অনন্য শনাক্তকারী বরাদ্দ করার জন্য, সার্ভারটিকে পুনরায় ব্যবহার করা টোকেন [S1] ট্র্যাক এবং প্রত্যাখ্যান করার অনুমতি দেয়৷

সনাক্তকরণ কৌশল

JWT পরিচালনার দুর্বলতাগুলি টোকেন গঠন এবং সার্ভার প্রতিক্রিয়া আচরণ বিশ্লেষণ করে চিহ্নিত করা যেতে পারে:

  • হেডার পরিদর্শন: alg (অ্যালগরিদম) শিরোনামটি "কোনটিই" সেট করা নেই এবং প্রত্যাশিত ক্রিপ্টোগ্রাফিক মান [S1] ব্যবহার করে তা নিশ্চিত করতে পরীক্ষা করা হচ্ছে।
  • দাবি যাচাই: JSON পেলোড [S1]-এর মধ্যে exp (মেয়াদ শেষ হওয়া) এবং aud (শ্রোতা) দাবির উপস্থিতি এবং বৈধতা নিশ্চিত করা।
  • ভ্যালিডেশন টেস্টিং: সার্ভার সঠিকভাবে exp দাবি অনুযায়ী মেয়াদ উত্তীর্ণ হওয়া টোকেনগুলিকে প্রত্যাখ্যান করে বা aud দাবি aud দাবির দ্বারা সংজ্ঞায়িত ভিন্ন দর্শকের জন্য উদ্দেশ্যে করা হয়েছে কিনা তা পরীক্ষা করা।