ক্রস-সাইট স্ক্রিপ্টিং (XSS) এমন একটি দুর্বলতা যা একজন আক্রমণকারীকে একটি ওয়েব পৃষ্ঠায় ক্ষতিকারক স্ক্রিপ্ট প্রবেশ করাতে দেয়, যে স্ক্রিপ্টগুলো তখন অন্য ব্যবহারকারীর ব্রাউজারে এমনভাবে চলে যেন সেগুলো সেখানেই তৈরি। এটি ধারাবাহিকভাবে সবচেয়ে ঝুঁকিপূর্ণ দুর্বলতাগুলোর মধ্যে একটি। OWASP শীর্ষ 10এবং এটি আক্রমণকারীদের সেশন ডেটা চুরি করা, অ্যাকাউন্ট হাইজ্যাক করা, বা নীরবে ব্যবহারকারীদের কাছে কোনো অ্যাপ্লিকেশনের বিশ্বাসযোগ্যতা নষ্ট করার অন্যতম সাধারণ উপায় হিসেবে রয়ে গেছে।
SAST কোড প্রোডাকশনে পৌঁছানোর আগেই, সোর্স কোড স্ক্যান করে XSS ফাঁকি দিয়ে যাওয়া সুনির্দিষ্ট প্যাটার্নগুলো খুঁজে বের করার মাধ্যমে এই দুর্বলতাগুলো দ্রুত শনাক্ত করার অন্যতম কার্যকর উপায় হলো টুল ব্যবহার করা। এই পোস্টে থাকছে: XSS-এর তিনটি সবচেয়ে সাধারণ ধরন, বাস্তব কোডে সেগুলো দেখতে কেমন এবং কীভাবে তা মোকাবিলা করা যায়। SAST কিছু টুল (এবং কয়েকটি কোডিং পদ্ধতি) শিপিংয়ের আগেই সেগুলোকে বন্ধ করে দেয়।
XSS দুর্বলতা বলতে কী বোঝায় এবং কেন এ বিষয়ে আপনার সচেতন হওয়া উচিত?
XSS দুর্বলতা তখন ঘটে যখন কোনো অ্যাপ্লিকেশন ব্যবহারকারীর টাইপ করা, পেস্ট করা বা URL-এর মাধ্যমে দেওয়া অবিশ্বস্ত ইনপুটকে, প্রথমে যথাযথভাবে যাচাই বা এস্কেপ না করেই, একটি পৃষ্ঠায় রেন্ডার করে। এমনটা ঘটলে, একজন আক্রমণকারী সাধারণ টেক্সটের পরিবর্তে একটি স্ক্রিপ্ট ঢুকিয়ে দিতে পারে এবং ব্রাউজারের পক্ষে পার্থক্য বোঝার কোনো উপায় থাকে না: এটি পৃষ্ঠার বাকি অংশের মতোই একই বিশ্বাসযোগ্যতা এবং অনুমতি দিয়ে স্ক্রিপ্টটি চালিয়ে দেয়।
এ কারণেই XSS বিপজ্জনক, যদিও এর পেছনের বাগটি প্রায়শই ছোট হয়। একটি মাত্র অসংরক্ষিত ইনপুট ফিল্ডের মাধ্যমে একজন আক্রমণকারী সেশন কুকি চুরি করতে এবং লগ-ইন করা অ্যাকাউন্ট হাইজ্যাক করতে পারে, ব্যবহারকারীদের নীরবে ফিশিং পেজে পাঠিয়ে দিতে পারে, কীস্ট্রোক লগ করতে পারে, অথবা একজন ভিজিটরের দেখা কন্টেন্ট পরিবর্তন করে দিতে পারে—এই সবকিছুই আপনার সার্ভারকে সরাসরি স্পর্শ না করেই করা সম্ভব। এই দুর্বলতাটি সম্পূর্ণরূপে নির্ভর করে ব্রাউজার আপনার অ্যাপ্লিকেশনের নিজস্ব আউটপুটকে কীভাবে বিশ্বাস করে তার উপর।
এই কারণেই OWASP টপ ১০-এ XSS এত ঘন ঘন দেখা যায়: এর জন্য কোনো জটিল এক্সপ্লয়েট চেইনের প্রয়োজন হয় না, শুধু একটি উপেক্ষিত ইনপুটই যথেষ্ট, এবং এর প্রভাব সেই সব ব্যবহারকারীর উপরও পড়ে যারা প্রভাবিত পৃষ্ঠাটি লোড করে।
এক্সএসএস আক্রমণের রহস্য উন্মোচন: সবচেয়ে সাধারণ তিনটি প্রকারভেদ
১. সংরক্ষিত XSS: এক স্থায়ী হুমকি
স্টোর্ড XSS সার্ভারে একটি ক্ষতিকারক স্ক্রিপ্ট স্থায়ীভাবে স্থাপন করে, ফলে পরবর্তীতে যে-ই ব্যবহারকারী প্রভাবিত পৃষ্ঠাটি দেখেন, তার জন্য এটি স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যায়।
স্টোর্ড XSS দুর্বলতা তখন ঘটে যখন ক্ষতিকারক স্ক্রিপ্ট সার্ভারে (যেমন, ডেটাবেসে) স্থায়ীভাবে সংরক্ষণ করা হয় এবং কোনো ব্যবহারকারী প্রভাবিত পৃষ্ঠাটি অ্যাক্সেস করলেই তা কার্যকর হয়।
উদাহরণ: একটি মন্তব্য ক্ষেত্র যা যাচাইবিহীন ব্যবহারকারীর ইনপুট গ্রহণ করে:
২. প্রতিফলিত এক্সএসএস: তাৎক্ষণিক প্রতিক্রিয়ায় সংঘটিত
রিফ্লেক্টেড এক্সএসএস একটিমাত্র বিশেষভাবে তৈরি করা লিঙ্কের মধ্যে থাকে এবং ভুক্তভোগী সাধারণত ফিশিং বা সোশ্যাল ইঞ্জিনিয়ারিংয়ের মাধ্যমে সেটিতে ক্লিক করলেই স্ক্রিপ্টটি সক্রিয় হয়।
রিফ্লেক্টেড এক্সএসএস ঘটে যখন ইউআরএল-এ ক্ষতিকারক স্ক্রিপ্ট এমবেড করা থাকে এবং ব্যবহারকারী সেই লিঙ্কে ইন্টারঅ্যাক্ট করলে তা এক্সিকিউট হয়; এটি সাধারণত ফিশিং বা সোশ্যাল ইঞ্জিনিয়ারিংয়ের মাধ্যমে ছড়ানো হয়ে থাকে।
উদাহরণ:
৩. DOM-ভিত্তিক XSS: ব্রাউজারে লুকানো আক্রমণ
DOM-ভিত্তিক XSS কখনোই সার্ভারকে স্পর্শ করে না, ক্ষতিকারক স্ক্রিপ্টটি সম্পূর্ণভাবে ক্লায়েন্ট-সাইডে, জাভাস্ক্রিপ্টের মাধ্যমে কার্যকর হয় যা পৃষ্ঠার বিষয়বস্তুকে ভুলভাবে পরিচালনা করে।
এই ধরনের ক্ষেত্রে, ক্ষতিকারক স্ক্রিপ্টগুলো ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্টের দুর্বলতার সুযোগ নিয়ে ডকুমেন্ট অবজেক্ট মডেল (DOM)-কে ম্যানিপুলেট করে।
উদাহরণ: একটি জাভাস্ক্রিপ্ট কোড যা ব্যবহারকারীর অপরিশোধিত ইনপুটকে গতিশীলভাবে রেন্ডার করে:
জানতে আগ্রহী যে আপনার নিজের কোডবেসে এই প্যাটার্নগুলোর মধ্যে কতগুলো ইতিমধ্যেই বিদ্যমান? জাইজেনির (Xygeni) SAST স্ক্যানগুলি সংরক্ষিত, প্রতিফলিত এবং DOM-ভিত্তিক XSS ঝুঁকিগুলিকে একটি নির্দিষ্ট পর্যায়ে পৌঁছানোর আগেই স্বয়ংক্রিয়ভাবে চিহ্নিত করে। pull request.
কিভাবে SAST টুলগুলি XSS কে শুরুতেই থামিয়ে দেয়
স্ট্যাটিক অ্যাপ্লিকেশন নিরাপত্তা পরীক্ষা (SASTসফটওয়্যার ডেভেলপমেন্ট লাইফ সাইকেলের (SDLC) একেবারে প্রাথমিক পর্যায়ে XSS দুর্বলতা শনাক্ত করার ক্ষেত্রে টুলগুলো অমূল্য।SDLC).
কী উপকারিতা
বিকাশের প্রাথমিক পর্যায়ে সমস্যাগুলো চিহ্নিত করুন
SAST অ্যাপ্লিকেশনটি ডেপ্লয় করার আগে টুলগুলো দুর্বল প্যাটার্নের জন্য সোর্স কোড স্ক্যান করে।
চিহ্নিত দুর্বলতার একটি উদাহরণ:
নিরাপদ বিকল্প:
সম্পূর্ণ কোডবেস বিশ্লেষণ করুন
আধুনিক SAST টুলগুলো শুধু কাস্টম কোডই বিশ্লেষণ করে না; এগুলো ডিপেন্ডেন্সি এবং থার্ড-পার্টি লাইব্রেরিগুলোও স্ক্যান করে লুকানো ঝুঁকি শনাক্ত করে।
এর সাথে নির্বিঘ্নে একীভূত করুন CI/CD
SAST টুলগুলি স্বয়ংক্রিয়ভাবে XSS দুর্বলতার জন্য স্ক্যান করে pull requests এবং অনিরাপদ কোড মার্জ হওয়া বন্ধ করুন।
সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলিতে মনোযোগ দিন
SAST টুলগুলো দুর্বলতার শোষণযোগ্যতা এবং তীব্রতা মূল্যায়ন করে সমাধানের অগ্রাধিকার নির্ধারণ করে, যা দলগুলোকে সবচেয়ে গুরুতর সমস্যাগুলো প্রথমে সমাধান করতে সক্ষম করে।
XSS-এর বিরুদ্ধে যুদ্ধে জয়ী হতে Xygeni আপনাকে কীভাবে সাহায্য করে
একটি XSS দুর্বলতা খুঁজে বের করা এবং প্রকৃতপক্ষে তা সমাধান করার মধ্যবর্তী ব্যবধান ঘোচাতে Xygeni স্ট্যাটিক অ্যানালাইসিস, এআই-চালিত প্রতিকার এবং সাপ্লাই চেইন ভিজিবিলিটির সমন্বয় ঘটায়। যেভাবে এটি করে:
- Code Security (SAST): ফার্স্ট-পার্টি কোড লেখার সময়েই XSS এবং অন্যান্য ইনজেকশন ত্রুটির জন্য স্ক্যান করে, এবং ডেপ্লয়মেন্টের আগেই সেগুলো ধরে ফেলে। OWASP বেঞ্চমার্কে, Xygeni-SAST XSS সনাক্তকরণে এটি ন্যূনতম ফলস পজিটিভ সহ ১০০% ট্রু পজিটিভ রেট অর্জন করে।
- এআই অটোফিক্স: ডেভেলপার-প্রস্তুত সমাধান সহ চিহ্নিত XSS দুর্বলতাগুলো তাৎক্ষণিকভাবে প্রতিকার করে, যা একটি pull request আপনার কোডবেসের সাথে সামঞ্জস্যপূর্ণ একটি নিরাপদ বিকল্পের মাধ্যমে, কোনো ম্যানুয়াল প্যাচিংয়ের প্রয়োজন নেই।
- ম্যালওয়্যার প্রতিরক্ষা: ইনজেক্টেড বা কম্প্রোমাইজড কোডের জন্য ডিপেন্ডেন্সি এবং থার্ড-পার্টি লাইব্রেরিগুলো মনিটর করে, যাতে কোনো ওপেন-সোর্স প্যাকেজে লুকিয়ে থাকা ঝুঁকিপূর্ণ প্যাটার্ন আপনার ফার্স্ট-পার্টি কোড রিভিউ এড়িয়ে যেতে না পারে।
- IDE এবং CI/CD ইন্টিগ্রেশন: কোড লেখার সময়ই সরাসরি IDE-তে সমস্যা চিহ্নিত করে এবং টীকা যোগ করে। pull requests GitHub, GitLab, Bitbucket, Azure DevOps, এবং Jenkins জুড়ে স্বয়ংক্রিয়ভাবে, যাতে ঝুঁকিপূর্ণ কোড শুরুতেই মার্জ না হয়ে যায়।
স্থিতিস্থাপক অ্যাপ্লিকেশন তৈরি করুন: ক্রস-সাইট স্ক্রিপ্টিং দূরে রাখার কিছু কৌশল
আপনার অ্যাপ্লিকেশনগুলিকে আরও সুরক্ষিত করতে, এর পাশাপাশি এই পদ্ধতিগুলিও বাস্তবায়ন করুন। SAST সরঞ্জাম:
- ব্যবহারকারীর ইনপুট পরিমার্জন করুন: শক্তিশালী স্যানিটাইজেশনের জন্য DOMPurify-এর মতো লাইব্রেরি ব্যবহার করুন।
- এনকোড আউটপুট: ব্রাউজারে রেন্ডার করার আগে সর্বদা ডাইনামিক ডেটা এনকোড করুন।
- বিষয়বস্তু নিরাপত্তা নীতি (সিএসপি) বাস্তবায়ন করুন: স্ক্রিপ্ট নির্বাহ বিশ্বস্ত উৎসগুলিতে সীমাবদ্ধ করুন।
- কোড অডিট পর্যায়ক্রমিক না করে ধারাবাহিক করুন: ম্যানুয়াল রিভিউ শিডিউল করার পরিবর্তে, Xygeni-এরটি চালান। SAST স্ক্যান হিসাবে pre-commit হুক বা সরাসরি আপনার মধ্যে CI/CD pipeline (GitHub, GitLab, Bitbucket, Azure DevOps, Jenkins), তাই প্রতিটি commit স্বয়ংক্রিয়ভাবে যাচাই করা হয়, এবং অনিরাপদ কোড কখনোই মার্জ পর্যায়ে পৌঁছায় না।
আপনার অ্যাপ্লিকেশনগুলোকে XSS থেকে সুরক্ষিত করতে প্রস্তুত?
XSS দুর্বলতা মানেই এই নয় যে তা আপনার অ্যাপ্লিকেশনের নিরাপত্তার জন্য হুমকি হয়ে দাঁড়াবে। এগুলি কীভাবে কাজ করে তা বোঝা এবং সঠিক উপায়ে এগুলি শনাক্ত করা প্রয়োজন। SAST টুল ব্যবহার এবং নিরাপদ কোডিং অনুশীলন অনুসরণ করলে, কোনো আক্রমণকারী দুর্বলতা খুঁজে পাওয়ার আগেই আপনার ঝুঁকি প্রায় শূন্যে নেমে আসতে পারে।
At জাইজেনিআমাদেরকে এমনভাবে তৈরি করা হয়েছে যাতে আমরা এই দুর্বলতাগুলো দ্রুত শনাক্ত করতে পারি, যেগুলো সত্যিই গুরুত্বপূর্ণ সেগুলোকে অগ্রাধিকার দিই এবং সেগুলোকে আপনার নাগালের বাইরে রাখি। pipelineসম্পূর্ণরূপে।
একটি ডেমো বুক করুনঅথবা আজই বিনামূল্যে আপনার কোড স্ক্যান করা শুরু করুন।
FAQ
XSS দুর্বলতা বলতে কী বোঝায়?
এক্সএসএস (ক্রস-সাইট স্ক্রিপ্টিং) এমন একটি দুর্বলতা, যার মাধ্যমে আক্রমণকারী কোনো ওয়েব পেজে একটি ক্ষতিকারক স্ক্রিপ্ট প্রবেশ করাতে পারে, যা পরবর্তীতে অন্য ব্যবহারকারীর ব্রাউজারে মূল সাইটের অংশ হিসেবেই চলতে থাকে।
এক্সএসএস-এর তিনটি প্রধান প্রকার কী কী?
স্টোর্ড XSS (স্ক্রিপ্টটি সার্ভারে সংরক্ষিত থাকে এবং প্রত্যেক ভিজিটরের জন্য চলে), রিফ্লেক্টেড XSS (স্ক্রিপ্টটি একটি লিঙ্কের মধ্যে এমবেড করা থাকে এবং শুধুমাত্র সেই লিঙ্কে ক্লিক করা হলেই চলে), এবং DOM-ভিত্তিক XSS (স্ক্রিপ্টটি সার্ভারের কোনো সম্পৃক্ততা ছাড়াই অনিরাপদ ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্টের মাধ্যমে সম্পূর্ণরূপে ব্রাউজারে এক্সিকিউট হয়)।
Can SAST DOM-ভিত্তিক XSS শনাক্ত করার টুল?
হ্যাঁ, আধুনিক SAST টুলগুলো শুধু সার্ভার-সাইড কোডই নয়, ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্টও স্ক্যান করে সেইসব একই অনিরাপদ প্যাটার্নের (যেমন সরাসরি DOM-এ লেখা অপরিশোধিত ইনপুট) জন্য, যা DOM-ভিত্তিক XSS ঘটায়।
XSS কি এখনও একটি সাধারণ দুর্বলতা?
হ্যাঁ। OWASP টপ ১০ তালিকায় XSS একটি অবিচল বিষয় হিসেবে রয়ে গেছে, এর প্রধান কারণ হলো, একটি মাত্র উপেক্ষিত ইনপুট ফিল্ডই একটি সম্পূর্ণ অ্যাপ্লিকেশনের ব্যবহারকারীদের ঝুঁকির মুখে ফেলার জন্য যথেষ্ট।
কেমন হয় ক SAST XSS প্রতিরোধের জন্য এটি কি ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল (WAF) থেকে ভিন্ন কোনো টুল?
A SAST টুলটি ডেপ্লয়মেন্টের আগেই আপনার সোর্স কোডের দুর্বল প্যাটার্ন খুঁজে বের করে, ফলে বাগটি কখনোই শিপ হয় না। একটি WAF আগে থেকে চলমান কোনো অ্যাপ্লিকেশনের সামনে বসে এবং রানটাইমে ক্ষতিকারক রিকোয়েস্ট ব্লক করার চেষ্টা করে; এটি একটি সুরক্ষা জাল, মূল কোডের কোনো সমাধান নয়।




