FixVibe
Covered by FixVibehigh

ক্রস-সাইট স্ক্রিপ্টিং (XSS) দুর্বলতা সনাক্ত করা এবং প্রতিরোধ করা

ক্রস-সাইট স্ক্রিপ্টিং (XSS) ঘটে যখন একটি অ্যাপ্লিকেশন সঠিক বৈধতা বা এনকোডিং ছাড়াই একটি ওয়েব পৃষ্ঠাতে অবিশ্বস্ত ডেটা অন্তর্ভুক্ত করে। এটি আক্রমণকারীদের শিকারের ব্রাউজারে দূষিত স্ক্রিপ্টগুলি চালানোর অনুমতি দেয়, যার ফলে সেশন হাইজ্যাকিং, অননুমোদিত ক্রিয়াকলাপ এবং সংবেদনশীল ডেটা এক্সপোজার হয়৷

CWE-79

প্রভাব

একজন আক্রমণকারী যে সফলভাবে একটি ক্রস-সাইট স্ক্রিপ্টিং (XSS) দুর্বলতাকে কাজে লাগাতে পারে সে একজন শিকার ব্যবহারকারী হিসাবে ছদ্মবেশ ধারণ করতে পারে, ব্যবহারকারীর সঞ্চালনের জন্য অনুমোদিত যে কোনও কাজ করতে পারে এবং ব্যবহারকারীর ডেটা [S1] অ্যাক্সেস করতে পারে৷ এর মধ্যে রয়েছে অ্যাকাউন্ট হাইজ্যাক করার জন্য সেশন কুকিজ চুরি করা, জাল ফর্মের মাধ্যমে লগইন শংসাপত্র ক্যাপচার করা বা ভার্চুয়াল ডিফেসমেন্ট [S1][S2] করা। যদি শিকারের প্রশাসনিক সুবিধা থাকে, আক্রমণকারী অ্যাপ্লিকেশন এবং এর ডেটা [S1] এর উপর সম্পূর্ণ নিয়ন্ত্রণ অর্জন করতে পারে।

মূল কারণ

XSS ঘটে যখন একটি অ্যাপ্লিকেশন ব্যবহারকারী-নিয়ন্ত্রণযোগ্য ইনপুট গ্রহণ করে এবং সঠিক নিরপেক্ষকরণ বা [S2] এনকোডিং ছাড়াই এটি একটি ওয়েব পৃষ্ঠায় অন্তর্ভুক্ত করে। এটি শিকারের ব্রাউজার দ্বারা ইনপুটটিকে সক্রিয় সামগ্রী (জাভাস্ক্রিপ্ট) হিসাবে ব্যাখ্যা করার অনুমতি দেয়, একই মূল নীতিকে ফাঁকি দিয়ে ওয়েবসাইটগুলিকে একে অপরের থেকে আলাদা করার জন্য ডিজাইন করা হয়েছে [S1][S2]৷

দুর্বলতার ধরন

  • প্রতিফলিত XSS: ক্ষতিকারক স্ক্রিপ্টগুলি একটি ওয়েব অ্যাপ্লিকেশন থেকে শিকারের ব্রাউজারে প্রতিফলিত হয়, সাধারণত একটি URL প্যারামিটার [S1] এর মাধ্যমে৷
  • সংরক্ষিত XSS: স্ক্রিপ্টটি সার্ভারে স্থায়ীভাবে সংরক্ষণ করা হয় (যেমন, একটি ডাটাবেস বা মন্তব্য বিভাগে) এবং পরে ব্যবহারকারীদের কাছে [S1][S2] পরিবেশন করা হয়৷
  • DOM-ভিত্তিক XSS: দুর্বলতা সম্পূর্ণরূপে ক্লায়েন্ট-সাইড কোডে বিদ্যমান যা একটি অনিরাপদ উপায়ে একটি অবিশ্বস্ত উৎস থেকে ডেটা প্রক্রিয়া করে, যেমন innerHTML [S1]-তে লেখা।

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

  • আউটপুটে ডেটা এনকোড করুন: ব্যবহারকারী-নিয়ন্ত্রিত ডেটাকে রেন্ডার করার আগে একটি নিরাপদ ফর্মে রূপান্তর করুন। HTML বডির জন্য HTML সত্তা এনকোডিং ব্যবহার করুন এবং সেই নির্দিষ্ট প্রসঙ্গের জন্য উপযুক্ত JavaScript বা CSS এনকোডিং [S1][S2] ব্যবহার করুন।
  • আগমনের সময় ফিল্টার ইনপুট: প্রত্যাশিত ইনপুট ফর্ম্যাটের জন্য কঠোর অনুমোদন তালিকা প্রয়োগ করুন এবং [S1][S2] মেনে চলে না এমন কিছু প্রত্যাখ্যান করুন।
  • নিরাপত্তা শিরোনাম ব্যবহার করুন: জাভাস্ক্রিপ্ট [S2] এর মাধ্যমে অ্যাক্সেস রোধ করতে সেশন কুকিতে HttpOnly পতাকা সেট করুন। ব্রাউজারগুলি এক্সিকিউটেবল কোড [S1] হিসাবে প্রতিক্রিয়াগুলিকে ভুল ব্যাখ্যা না করে তা নিশ্চিত করতে Content-Type এবং X-Content-Type-Options: nosniff ব্যবহার করুন৷
  • কন্টেন্ট নিরাপত্তা নীতি (CSP): একটি শক্তিশালী CSP স্থাপন করুন যে উৎসগুলি থেকে স্ক্রিপ্টগুলি লোড করা এবং কার্যকর করা যেতে পারে, একটি প্রতিরক্ষা-ইন-ডেপথ লেয়ার ZXCVFIXVIBETOKEN0ZXVXVIBETOKEN0ZXVIBETOKEN3ZXCV প্রদান করে।

কিভাবে FixVibe এর জন্য পরীক্ষা করে

FixVibe প্রতিষ্ঠিত স্ক্যানিং পদ্ধতি [S1]-এর উপর ভিত্তি করে বহু-স্তরযুক্ত পদ্ধতির মাধ্যমে XSS সনাক্ত করতে পারে:

  • প্যাসিভ স্ক্যান: Content-Security-Policy বা X-Content-Type-Options এর মতো অনুপস্থিত বা দুর্বল সুরক্ষা শিরোনামগুলি সনাক্ত করা যা XSS [S1] প্রশমিত করার জন্য ডিজাইন করা হয়েছে৷
  • অ্যাকটিভ প্রোবস: ইউআরএল প্যারামিটার এবং ফর্ম ফিল্ডে অনন্য, অ-দূষিত আলফানিউমেরিক স্ট্রিংগুলি ইনজেকশন করে সঠিক এনকোডিং [S1] ছাড়াই প্রতিক্রিয়া বডিতে প্রতিফলিত হয়েছে কিনা তা নির্ধারণ করতে।
  • রেপো স্ক্যান: "সিঙ্ক"-এর জন্য ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট বিশ্লেষণ করা যা অবিশ্বস্ত ডেটাকে অনিরাপদভাবে পরিচালনা করে, যেমন innerHTML, document.write, বা document.write, বা setTimeout-এর মধ্যে সাধারণ, XSS [S1].