Home » Injection কী? (বিস্তারিত ব্যাখ্যা)

Injection কী? (বিস্তারিত ব্যাখ্যা)

by ITAB Content Team

Table of Contents

Injection attack তখন ঘটে যখন কোনো ওয়েব অ্যাপ্লিকেশন ব্যবহারকারীর ইনপুটকে সঠিকভাবে যাচাই (validation) বা পরিষ্কার (sanitization) না করে সরাসরি ডাটাবেজ, অপারেটিং সিস্টেম বা অন্য কোনো কমান্ড এক্সিকিউশন ইঞ্জিনে পাঠিয়ে দেয়। এর ফলে আক্রমণকারী নিজের ইচ্ছেমতো ক্ষতিকর কোড বা কমান্ডইনজেক্ট করে অ্যাপ্লিকেশনের স্বাভাবিক আচরণ পরিবর্তন করতে পারে। SQL Injection এবং XSS একই injection family এর অংশ।

সবচেয়ে পরিচিত Injection আক্রমণগুলো হলো:

  • SQL Injection
  • NoSQL Injection
  • Command Injection
  • LDAP Injection
  • ORM Injection

এর মধ্যে SQL Injection সবচেয়ে বেশি দেখা যায় এবং সবচেয়ে বিপজ্জনক।

Injection কীভাবে তৈরি হয়?

Injection vulnerability সাধারণত নিচের কারণগুলো থেকে তৈরি হয়:

1. User Input Validation না করা

ফর্ম, URL parameter, search box, login field, এগুলোর ইনপুট ঠিকভাবে যাচাই না করলে আক্রমণকারী ক্ষতিকর ইনপুট দিতে পারে।

2. Dynamic Query ব্যবহার করা

যখন SQL query স্ট্রিং আকারে তৈরি করা হয়:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

এখানে $username বা $password সরাসরি user input হলে Injection এর ঝুঁকি তৈরি হয়।

3. Prepared Statement ব্যবহার না করা

Parameterized Query বা Prepared Statement ব্যবহার না করলে Injection সহজ হয়ে যায়।

4. Error Message বেশি দেখানো

ডাটাবেজ error message সরাসরি দেখালে আক্রমণকারী বুঝে যায় কোন ডাটাবেজ, কোন টেবিল, কোন কলাম ব্যবহার হচ্ছে।

অধিকাংশ injection vulnerability মূলত insecure design flaw থেকে আসে।

Attack Scenario (আরও বিস্তারিতভাবে)

বাস্তব উদাহরণ: SQL Injection Attack

ধরা যাক, একটি অনলাইন লাইব্রেরি সিস্টেম আছে যেখানে ব্যবহারকারী লগইন করে বই রিজার্ভ করতে পারে।

লগিন ফর্মে থাকে:

  • Username
  • Password

Backend Query:

SELECT * FROM users WHERE username = 'user_input' 
AND password = 'user_input';

আক্রমণকারীর ইনপুট:

Username:

admin' OR '1'='1

Password:

anything

Final Query দাঁড়ালো:

SELECT * FROM users WHERE username = 'admin' OR '1'='1' 
AND password = 'anything';
  1. '1'='1' সবসময় TRUE হওয়ায়
  2. ডাটাবেজ প্রথম user (অনেক সময় admin) রিটার্ন করে
  3. আক্রমণকারী পাসওয়ার্ড ছাড়াই Admin হিসেবে লগইন করে ফেলে

আরেকটি Scenario: Search Box Injection

একটি নিউজ ওয়েবসাইটে সার্চ বক্স আছে।

Input:

' UNION SELECT username, password FROM users --

ফলাফল:

  • সার্চ রেজাল্টের জায়গায় ব্যবহারকারীদের username ও password লিস্ট দেখাতে শুরু করল

এটি সম্পূর্ণ ডাটাবেজ compromise এর উদাহরণ। ভুল database configuration injection আক্রমণ সহজ করে দেয়।

Injection Attack করলে আক্রমণকারী কী কী করতে পারে?

Injection হলে আক্রমণকারী পারে:

  • পুরো ডাটাবেজ পড়ে ফেলতে
  • ডাটা পরিবর্তন করতে (marks, balance, role)
  • ডাটা মুছে ফেলতে
  • Admin access নিতে
  • সার্ভারে কমান্ড রান করতে (Command Injection)
  • পুরো সিস্টেম ডাউন করে দিতে

কেন Injection এতটা ভয়ংকর?

1. Direct Database Access

Injection আক্রমণে আক্রমণকারী সরাসরি ডাটাবেজের সাথে কথা বলতে পারে।

2. Authentication বাইপাস করা যায়

লগইন, OTP, Role, সব কিছু বাইপাস করা সম্ভব।

3. Data Breach এর মূল কারণ

বেশিরভাগ বড় ডাটা লিকের পেছনে SQL Injection দায়ী।

4. Silent Attack

অনেক সময় ব্যবহারকারী বা অ্যাডমিন বুঝতেই পারে না যে সিস্টেম compromise হয়েছে।

5. Compliance Violation

Injection-এর কারণে:

  • GDPR
  • PCI-DSS
  • ISO 27001
    এসব স্ট্যান্ডার্ড ভঙ্গ হয়।

সাধারণ জিজ্ঞাসা / FAQ (Frequently Asked Questions)

1. Injection কী?

Injection হলো একটি নিরাপত্তা ত্রুটি যেখানে আক্রমণকারী ইউজার ইনপুটের মাধ্যমে অ্যাপ্লিকেশনকে ভুলভাবে নির্দেশ দেয় এবং ডেটা বা সার্ভিস নিয়ন্ত্রণ করতে পারে।

2. Injection এর সাধারণ উদাহরণ কী কী?

  • SQL Injection
  • Command Injection
  • LDAP Injection
  • XML Injection

3. SQL Injection কী?

SQL Injection হলো এক ধরণের আক্রমণ, যেখানে ইউজার ইনপুট ব্যবহার করে ডেটাবেসের কুয়েরি পরিবর্তন করা হয়; যাতে ডেটা চুরি, পরিবর্তন বা মুছে ফেলা যায়।

4. Command Injection কী?

Command Injection হলো এক ধরণের আক্রমণ, যেখানে আক্রমণকারী ইউজার ইনপুটের মাধ্যমে সার্ভারের অপারেটিং সিস্টেমে কমান্ড এক্সিকিউট করতে পারে।

5. Injection আক্রমণ কিভাবে ঘটে?

  • ইউজার ইনপুট যাচাই না করলে
  • Prepared Statement বা Parameterized Query ব্যবহার না করলে
  • অ্যাপ্লিকেশন লগিক সঠিকভাবে যাচাই না করলে

6. আক্রমণকারীর লক্ষ্য কী হতে পারে?

  • ডেটাবেস ডেটা চুরি
  • সার্ভার কনফিগারেশন পরিবর্তন
  • অ্যাপ্লিকেশন নিয়ন্ত্রণ নেওয়া
  • রিমোট কোড এক্সিকিউশন

7. Injection শনাক্ত করার উপায় কী?

  • পেন‑টেস্টিং ও ভ্যালিডেশন টেস্ট
  • অ্যানালাইসিস টুল বা স্ক্যানার ব্যবহার
  • লোগ ফাইল (log file) মনিটরিং

8. কোন সিস্টেম বেশি ঝুঁকিপূর্ণ?

  • ওয়েব অ্যাপ্লিকেশন যেগুলো ডেটাবেস বা OS কমান্ড এক্সিকিউশনের সঙ্গে যুক্ত
  • API যা ইউজার ইনপুট গ্রহণ করে
  • Legacy অ্যাপ্লিকেশন যেখানে Input Validation নেই

9. Injection প্রতিরোধের উপায় কী কী?

  • Parameterized Query বা Prepared Statement ব্যবহার
  • Input Validation এবং Sanitization
  • Least Privilege Principle অনুযায়ী ডাটাবেস অ্যাক্সেস
  • লিমিটেড Error Message Display

10. Blind Injection কী?

Blind Injection হলো আক্রমণ যেখানে আক্রমণকারী সরাসরি ডেটা দেখতে পায় না, তবে সিস্টেমের প্রতিক্রিয়া বা টাইমআউট থেকে ডেটা বের করতে পারে।

11. LDAP বা XML Injection কীভাবে প্রভাব ফেলে?

  • LDAP Injection: Authentication bypass বা Directory information এক্সপ্লয়ট করা যায়
  • XML Injection: SOAP বা XML ডেটা ম্যানিপুলেট করা যায় এবং ডেটা লিক হতে পারে

12. Injection থেকে রক্ষা করার বেস্ট প্র্যাকটিস কী?

  • সব ইউজার ইনপুট ভ্যালিডেট ও স্যানিটাইজ করা
  • Prepared Statement ব্যবহার করা
  • Error Handling এবং Logging ঠিক রাখা
  • নিরাপদ কোডিং স্ট্যান্ডার্ড অনুসরণ করা
Was this article helpful?
Yes0No0

You may also like

Leave a Comment