পাঠ ০৪ · ৬০-এর মধ্যে · মডিউল ১
Home / Courses / Cybersecurity & Ethical Hacking / থ্রেট ও রিস্ক

থ্রেট, ভালনারেবিলিটি ও রিস্ক — অ্যাটাক ফ্রেমওয়ার্ক

Threat, vulnerability, risk & attack frameworks (MITRE ATT&CK, OWASP)
৯ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • Threat, Vulnerability ও Risk-এর সঠিক সংজ্ঞা এবং কেন এই তিনটি আলাদা করে বোঝা জরুরি
  • Risk = Likelihood × Impact সূত্র দিয়ে ঝুঁকিকে সংখ্যায় রূপান্তর করে অগ্রাধিকার দেওয়া
  • MITRE ATT&CK ফ্রেমওয়ার্কের Tactics ও Techniques কাঠামো
  • OWASP কীভাবে ওয়েব অ্যাপ্লিকেশন সিকিউরিটির জন্য একটি বিশেষায়িত ফ্রেমওয়ার্ক

১ · Threat, Vulnerability ও Risk — তিনটি ভিন্ন জিনিস

নিরাপত্তা আলোচনায় এই তিনটি শব্দ প্রায়ই একে অপরের বদলে ভুলভাবে ব্যবহার হয় — কিন্তু এদের অর্থ সম্পূর্ণ আলাদা এবং এই পার্থক্য বোঝা risk-based সিদ্ধান্ত নেওয়ার ভিত্তি।

Threat (হুমকি)
একটি সম্ভাব্য বিপদের উৎস — যেমন একটি আক্রমণকারী গোষ্ঠী, একজন insider, বা এমনকি একটি প্রাকৃতিক দুর্যোগ। থ্রেট নিজে কোনো দুর্বলতা নয়, এটি "কে বা কী ক্ষতি করতে চাইতে পারে।"
Vulnerability (দুর্বলতা)
একটি দুর্বল পয়েন্ট বা ফাঁক — যেমন প্যাচ না করা সফটওয়্যার, একটি ভুল কনফিগারেশন। দুর্বলতা নিজে ক্ষতি করে না, এটি শুধু একটি সুযোগ তৈরি করে।
Risk (ঝুঁকি)
একটি থ্রেট যখন একটি ভালনারেবিলিটি কাজে লাগাতে পারে, তখনই আসল ঝুঁকি তৈরি হয়। কোনো থ্রেট না থাকলে, বা কাজে লাগানোর কোনো দুর্বলতা না থাকলে — বাস্তব ঝুঁকি নেই।
কেন এই পার্থক্য গুরুত্বপূর্ণ

ধরুন একটি সার্ভারে একটি Critical দুর্বলতা আছে, কিন্তু সার্ভারটি একটি সম্পূর্ণ বিচ্ছিন্ন (air-gapped) নেটওয়ার্কে আছে যেখানে কোনো থ্রেট অ্যাক্টর পৌঁছাতে পারে না — তাহলে বাস্তব ঝুঁকি কম, যদিও দুর্বলতার তীব্রতা বেশি। উল্টোদিকে, একটি সামান্য দুর্বলতাও যদি একটি সক্রিয় ও সক্ষম থ্রেট অ্যাক্টরের সরাসরি নাগালে থাকে, তাহলে বাস্তব ঝুঁকি অনেক বেশি হতে পারে। এই কারণেই শুধু দুর্বলতার তীব্রতা দেখে সিদ্ধান্ত নেওয়া যথেষ্ট নয় — থ্রেট প্রেক্ষাপটও বিবেচনা করতে হয়।

২ · Risk = Likelihood × Impact

ঝুঁকিকে ব্যবহারিকভাবে পরিমাপযোগ্য করার সবচেয়ে সাধারণ পদ্ধতি হলো একে দুটি উপাদানের গুণফল হিসেবে দেখা — Likelihood (এই দুর্বলতা কাজে লাগানোর সম্ভাবনা কতটা) এবং Impact (কাজে লাগানো হলে কতটা ক্ষতি হবে)। এই সংখ্যাগত পদ্ধতি বিভিন্ন দুর্বলতাকে একই স্কেলে তুলনা করে অগ্রাধিকার ঠিক করতে সাহায্য করে — একটি core security-management practice, যা L14 (CVSS) ও L15 (vulnerability management)-এ আরও গভীরভাবে প্রয়োগ হবে।

৩ · MITRE ATT&CK — আক্রমণকারীর আচরণের একটি জ্ঞানভাণ্ডার

MITRE ATT&CKMITRE ATT&CKবাস্তব-জগতের পর্যবেক্ষিত আক্রমণকারী আচরণের একটি বিস্তৃত, পাবলিকলি উপলব্ধ জ্ঞানভাণ্ডার — defenders এটি ব্যবহার করেন detection gap ম্যাপ করতে ও প্রতিরক্ষা কৌশল যাচাই করতে। দুটি স্তরে সংগঠিত —

  • Tactics ("কেন") — আক্রমণকারীর উদ্দেশ্য, যেমন Initial Access (প্রথম প্রবেশ), Persistence (স্থায়িত্ব), Exfiltration (ডেটা বের করে নেওয়া)।
  • Techniques ("কীভাবে") — প্রতিটি Tactic অর্জনের নির্দিষ্ট পদ্ধতি — একটি Tactic-এর অধীনে একাধিক সম্ভাব্য Technique থাকতে পারে।

Defenders এই ফ্রেমওয়ার্ক ব্যবহার করেন নিজেদের detection ক্ষমতা যাচাই করতে ("আমরা কি এই নির্দিষ্ট Technique ধরতে পারি?") এবং ফাঁক চিহ্নিত করতে — এটি L02-এর kill chain-এর চেয়ে অনেক বেশি বিস্তারিত ও বাস্তব-জগতের পর্যবেক্ষণ-ভিত্তিক।

৪ · OWASP — ওয়েব অ্যাপ্লিকেশন সিকিউরিটিতে বিশেষায়িত ফ্রেমওয়ার্ক

OWASP (Open Worldwide Application Security Project) MITRE ATT&CK-এর মতো সাধারণ সব আক্রমণ কভার করে না — এটি নির্দিষ্টভাবে ওয়েব অ্যাপ্লিকেশন সিকিউরিটিতে ফোকাস করে। এর সবচেয়ে পরিচিত আউটপুট হলো OWASP Top 10 — সবচেয়ে সাধারণ ও গুরুত্বপূর্ণ ওয়েব নিরাপত্তা ঝুঁকির একটি তালিকা, যা এই কোর্সের পুরো M5 মডিউল (L17-L29) জুড়ে বিস্তারিতভাবে কভার করা হবে।

৫ · কোড সেল — Risk-ভিত্তিক অগ্রাধিকার নির্ধারণ

নিচের কোডে আমরা কয়েকটি ভুয়া থ্রেট/ভালনারেবিলিটি জোড়ার জন্য Risk = Likelihood × Impact গণনা করে ঝুঁকির নিম্নক্রম অনুযায়ী সাজাব — এটি সম্পূর্ণ ভুয়া, in-memory ডেটার উপর একটি সিমুলেশন মাত্র।

Python
# প্রতিটি এন্ট্রি: (নাম, likelihood 0.0-1.0, impact 0-10)
threat_vuln_pairs = [
    ("পাবলিক সার্ভারে অপরিবর্তিত ডিফল্ট পাসওয়ার্ড",      0.9, 9),
    ("অভ্যন্তরীণ টুলে পুরনো, কিন্তু আন-এক্সপোজড লাইব্রেরি", 0.2, 6),
    ("ইন্টারনেট-মুখী RDP পোর্ট খোলা (L05-তে বিস্তারিত)",   0.7, 8),
    ("অভ্যন্তরীণ ওয়াইফাই-তে দুর্বল কিন্তু নন-ক্রিটিকাল বাগ", 0.3, 3),
]

def calc_risk(likelihood, impact):
    return round(likelihood * impact, 2)

# প্রতিটি জোড়ার জন্য risk score গণনা করে একটি নতুন তালিকা তৈরি
scored = [
    (name, likelihood, impact, calc_risk(likelihood, impact))
    for name, likelihood, impact in threat_vuln_pairs
]

# risk score অনুযায়ী নিম্নক্রমে সাজানো (সবচেয়ে জরুরিটি আগে)
scored.sort(key=lambda entry: entry[3], reverse=True)

print("ঝুঁকি-ভিত্তিক অগ্রাধিকার তালিকা (সবচেয়ে জরুরি আগে):\n")
for name, likelihood, impact, risk in scored:
    print(f"Risk={risk:>4} (L={likelihood}, I={impact}) — {name}")

    
লক্ষ্য করুন — সবচেয়ে বেশি impact-এর দুর্বলতা (৯) সবার উপরে যায়নি এমন নয়, কিন্তু ক্রমটি নির্ধারিত হয়েছে likelihood ও impact উভয়ের গুণফল দিয়ে। একটি উচ্চ-impact কিন্তু কম-likelihood দুর্বলতা, একটি মাঝারি-impact কিন্তু উচ্চ-likelihood দুর্বলতার চেয়ে কম অগ্রাধিকার পেতে পারে — এটাই risk-based prioritization-এর মূল শক্তি।
মূল কথা · Key takeaway

Threat, Vulnerability ও Risk আলাদা করে বোঝা এবং Risk = Likelihood × Impact সূত্র প্রয়োগ করা একজন নিরাপত্তা পেশাজীবীকে সীমিত সময় ও সম্পদ দিয়ে সবচেয়ে গুরুত্বপূর্ণ সমস্যা আগে সমাধান করতে সাহায্য করে। MITRE ATT&CK ও OWASP-এর মতো ফ্রেমওয়ার্ক এই চিন্তাভাবনাকে কাঠামোবদ্ধ, পুনরাবৃত্তিযোগ্য প্রক্রিয়ায় রূপ দেয়।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি সিস্টেমে একটি Critical দুর্বলতা আছে কিন্তু কোনো পরিচিত থ্রেট অ্যাক্টর সেই সিস্টেমে পৌঁছাতে পারে না — এক্ষেত্রে ভালনারেবিলিটি ও রিস্কের মধ্যে পার্থক্য ব্যাখ্যা করুন।

ভালনারেবিলিটি (দুর্বলতার তীব্রতা) এখানে বেশি — এটি একটি Critical-level দুর্বলতা। কিন্তু যেহেতু কোনো থ্রেট অ্যাক্টর এটি পৌঁছাতে বা কাজে লাগাতে পারে না, বাস্তব রিস্ক কম। এটিই দেখায় কেন শুধু দুর্বলতার তীব্রতা দেখে অগ্রাধিকার ঠিক করা যথেষ্ট নয় — থ্রেট প্রেক্ষাপট (কে আসলে এটি কাজে লাগাতে পারে) বিবেচনা করতেই হবে।

প্র ০২ Risk = Likelihood × Impact সূত্রে, কেন একটি মাঝারি-impact কিন্তু উচ্চ-likelihood দুর্বলতা কখনো কখনো একটি উচ্চ-impact কিন্তু কম-likelihood দুর্বলতার চেয়ে বেশি অগ্রাধিকার পায়?

কারণ গুণফলটাই আসল সংখ্যা নির্ধারণ করে, শুধু impact নয়। উদাহরণ: likelihood 0.9 × impact 6 = 5.4, কিন্তু likelihood 0.1 × impact 9 = 0.9। প্রথমটির প্রকৃত ঘটার সম্ভাবনা এতটাই বেশি যে সামগ্রিকভাবে এটি বেশি জরুরি — একটি বিরল কিন্তু ভয়ংকর ঘটনার চেয়ে একটি প্রায়-নিশ্চিত মাঝারি ঘটনা প্রায়ই বাস্তবে আগে মোকাবিলা করা প্রয়োজন হয়।

প্র ০৩ MITRE ATT&CK ও OWASP উভয়ই "ফ্রেমওয়ার্ক" — কিন্তু এই দুটির স্কোপ কীভাবে ভিন্ন?

MITRE ATT&CK সাধারণভাবে যেকোনো সিস্টেমের বিরুদ্ধে ব্যবহৃত সব ধরনের বাস্তব-জগতের আক্রমণকারী আচরণ (Tactics ও Techniques) কভার করে — নেটওয়ার্ক, এন্ডপয়েন্ট, ক্লাউড ইত্যাদি সব ক্ষেত্রে। OWASP নির্দিষ্টভাবে শুধু ওয়েব অ্যাপ্লিকেশন সিকিউরিটিতে ফোকাস করে — এটি একটি বিশেষায়িত, সংকীর্ণ কিন্তু গভীর ফ্রেমওয়ার্ক, যেখানে MITRE ATT&CK অনেক বেশি ব্যাপক ও সাধারণ।

অনুশীলন

  1. চিন্তা করুন: একটি প্রতিষ্ঠানের অভ্যন্তরীণ HR সিস্টেমে (যা শুধু অফিস নেটওয়ার্ক থেকেই অ্যাক্সেসযোগ্য) একটি Medium-severity দুর্বলতা আছে। একই প্রতিষ্ঠানের পাবলিক-ফেসিং ওয়েবসাইটে একই severity-এর একটি দুর্বলতা আছে। কোনটির রিস্ক বেশি এবং কেন?

    পাবলিক-ফেসিং ওয়েবসাইটের দুর্বলতার রিস্ক বেশি — কারণ এর likelihood (কেউ এটি কাজে লাগানোর সম্ভাবনা) অনেক বেশি, যেহেতু বিশ্বের যেকোনো থ্রেট অ্যাক্টর এতে পৌঁছাতে পারে। অভ্যন্তরীণ HR সিস্টেমের ক্ষেত্রে, শুধু অফিস নেটওয়ার্কে প্রবেশাধিকার থাকা কেউ (বা যে এতে ঢুকতে পারে) এটি কাজে লাগাতে পারবে — একই severity হলেও likelihood অনেক কম, তাই সামগ্রিক risk কম।

  2. পরীক্ষা করুন: উপরের কোড সেলে threat_vuln_pairs তালিকায় একটি নতুন এন্ট্রি ("প্যাচ না করা পাবলিক VPN গেটওয়ে", 0.95, 10) যোগ করুন এবং Run চেপে দেখুন এটি অগ্রাধিকার তালিকার কোথায় স্থান পায়।

    এই এন্ট্রির risk score হবে 0.95 × 10 = 9.5 — তালিকার সব এন্ট্রির মধ্যে সর্বোচ্চ, তাই এটি সাজানো তালিকার একদম শীর্ষে চলে আসবে। এটি স্বাভাবিক — উচ্চ likelihood ও উচ্চ impact উভয়ই একসাথে থাকলে তা প্রায় সবসময় সর্বোচ্চ অগ্রাধিকার পাওয়ার যোগ্য।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

পাঠ ০৩
রেসপনসিবল ডিসক্লোজার ও বাগ বাউন্টি বেসিকস