এই পর্বে যা শিখবেন
- OWASP কী, Top 10 কীভাবে data আর survey থেকে তৈরি হয়, আর এটি কী নয়
- ২০২৫ সংস্করণের দশটি ঝুঁকি: সহজ ব্যাখ্যা, উদাহরণ, প্রতিরোধ, ধরার উপায়
- ২০২১ থেকে ২০২৫-এ কী বদলেছে আর কেন
- CWE থেকে বিভাগে যাওয়া, আর scan-এর ফল থেকে রিপোর্ট বানানো
- ASVS, Proactive Controls, Cheat Sheet Series আর SAMM-এর আলাদা ভূমিকা
- Threat modeling, code review, প্রশিক্ষণ আর test-এ তালিকাটি ব্যবহার
১ · OWASP কী, আর এই তালিকা আসলে কী
ধরুন ঢাকার ট্রাফিক বিভাগ কয়েক বছরের দুর্ঘটনার খাতা ঘেঁটে শহরের সবচেয়ে বিপজ্জনক দশটি মোড়ের একটি মানচিত্র বানাল। নতুন চালকের জন্য এটি খুব কাজের। কোথায় সাবধান হতে হবে, তা তিনি আগেই জানলেন। কিন্তু এই মানচিত্র ট্রাফিক আইন নয়, গাড়ির ফিটনেস সনদও নয়। দশটি মোড় নিরাপদে পার হলেও এগারো নম্বর মোড়ে দুর্ঘটনা হতে পারে।
OWASP Top 10 ঠিক এমন একটি মানচিত্র, web application-এর জন্য। আর OWASP হলো Open Worldwide Application Security Project. আগে নামের “Worldwide” অংশে “Web” ছিল, পরে সেটি বদলানো হয়। এটি একটি উন্মুক্ত community আর অলাভজনক foundation, যার বেশিরভাগ কাজ করেন স্বেচ্ছাসেবকেরা। কোনো software কোম্পানির সাথে এর মালিকানার সম্পর্ক নেই, তাই এর নির্দেশিকা বিনামূল্যে সবার জন্য খোলা।
তালিকাটি প্রথম আসে ২০০৩ সালে। OWASP-এর হিসাবে ২০২৫ সংস্করণটি এর অষ্টম কিস্তি। এই পর্বের নাম, ক্রম আর সংখ্যা ২০২৬ সালের অক্টোবরে OWASP-এর নিজস্ব সাইট দেখে মেলানো। পড়ার সময় আপনিও সাইটে সর্বশেষ সংস্করণটি দেখে নিন।
তালিকাটি যা
Developer আর নিরাপত্তা দলের জন্য একটি সচেতনতা-দলিল। সবচেয়ে গুরুতর ঝুঁকি নিয়ে বিস্তৃত ঐকমত্য। প্রশিক্ষণ আর আলোচনার ভালো শুরু।
Awareness documentতালিকাটি যা নয়
পূর্ণ নিরাপত্তা মান নয়। Compliance তালিকা নয়। দশটি নির্দিষ্ট bug-এর তালিকাও নয়। আর “আমরা Top 10 পুরোপুরি ঢেকেছি” দাবিটিকে OWASP নিজেই অসত্য বলে।
Not a complete standardদরপত্রে বা চুক্তিতে প্রায়ই লেখা থাকে “OWASP Top 10 compliant”. OWASP-এর মতে Top 10 কোডিং বা পরীক্ষার মান হিসেবে একেবারে ন্যূনতম। কিছু বিভাগ পরীক্ষা করে প্রমাণ করাই কঠিন, যেমন A06 নকশার ত্রুটি। আবার log ঠিক আছে কি না জানতে সাক্ষাৎকার আর incident-এর নমুনা দেখতে হয়। নিচে দেখবেন, যাচাইযোগ্য মান হিসেবে OWASP নিজেই ASVS-এর কথা বলে।
২ · তালিকা কীভাবে বানানো হয় — data, survey আর গোড়ার কারণ
তালিকার পেছনে দুটি উৎস আছে। একটি হলো পরীক্ষার তথ্য, যা নিরাপত্তা প্রতিষ্ঠান, টুল নির্মাতা আর bug bounty প্ল্যাটফর্ম দান করে। অন্যটি হলো মাঠে কাজ করা মানুষের ভোট। ডাক্তারের ভাষায় একটি হলো হাসপাতালের রোগের রেজিস্টার, অন্যটি অভিজ্ঞ চিকিৎসকদের মত। কেন দুটোই লাগে, তা একটু পরে দেখবেন।
একটি সংস্করণ যেভাবে তৈরি হয়
From contributed data and a survey to ten categories
- পরীক্ষার data
২৮ লক্ষ+ appদান করা তথ্য - CWE-এর হিসাব
৫৮৯ CWEকত app-এ আছে - বিভাগে ভাগ
৮টি data থেকেexploit আর impact-সহ - Community survey
২টি ভোটেমাঠের অভিজ্ঞতা
২০২৫ সংস্করণে OWASP জানিয়েছে, ২৮ লক্ষের বেশি application-এর তথ্য এসেছে। নাম জানা এক ডজনের মতো প্রতিষ্ঠান আর কয়েকজন বেনামি দাতা তথ্য দিয়েছেন। বিশ্লেষণে এসেছে ৫৮৯টি CWE, যা ২০২১ সালের প্রায় ৪০০-র চেয়ে অনেক বেশি। CWE মানে দুর্বলতার ধরন (পর্ব ৩২). দশটি বিভাগে মোট ২৪৮টি CWE বসেছে। গড়ে প্রতি বিভাগে প্রায় ২৫টি, সর্বনিম্ন ৫টি, আর সর্বোচ্চ সীমা ৪০টি।
গণনার নিয়মটিই আসল কথা: ঘটনা নয়, application
OWASP দেখে কতগুলো application-এ একটি CWE অন্তত একবার আছে। একই app-এ সেটি কতবার আছে, তা নয়। এই হারকে বলে incidence rate. তাই Top 10-এর ক্রম “কোন bug সবচেয়ে বেশিবার দেখা যায়” তার তালিকা নয়।
ধরুন ১,০০০টি app পরীক্ষা হলো। ত্রুটি X মোট ৫,০০০ বার পাওয়া গেল, কিন্তু সবই একটি বড় app-এ। ত্রুটি Y পাওয়া গেল ৩০০টি app-এ, প্রতিটিতে একবার করে।
X-এর incidence = ১ ÷ ১,০০০ = ০.১%. Y-এর incidence = ৩০০ ÷ ১,০০০ = ৩০%. ঘটনার সংখ্যায় X প্রায় ১৭ গুণ এগিয়ে (৫,০০০ ÷ ৩০০ ≈ ১৬.৭), অথচ OWASP-এর হিসাবে Y অনেক ওপরে। এই পদ্ধতি একটি বড় app-কে পুরো ফল বিকৃত করতে দেয় না।
শুধু হার দিয়ে ঝুঁকি হয় না। প্রায় ১.৭৫ লক্ষ CVE রেকর্ড NVD থেকে CWE-র সাথে মিলিয়ে OWASP গড় exploit আর impact স্কোর বের করে, যা ঝুঁকির সমীকরণের বাকি অর্ধেক। স্কোরগুলো এসেছে CVSS v2 আর v3 থেকে। CVSS v4.0 ব্যবহার হয়নি, কারণ OWASP-এর ব্যাখ্যায় তার হিসাব থেকে exploit আর impact আলাদা করে পাওয়া যায় না।
Survey কেন লাগে
Data সবসময় অতীতের কথা বলে। আর টুল যা সহজে পরীক্ষা করতে পারে, data-তে তাই বেশি আসে। রাতে রাস্তার বাতির নিচে হারানো চাবি খোঁজার মতো, আলো যেখানে সেখানেই খোঁজা হয়। তাই OWASP বলে, data থেকে আটটি নেওয়া হয়, কারণ তথ্য অসম্পূর্ণ। বাকি দুটি ঠিক করেন মাঠের মানুষ। ২০২৫ সালে A03 survey-তে সবচেয়ে উপরে ছিল, ঠিক অর্ধেক উত্তরদাতা একে এক নম্বরে রেখেছেন। A09 তৃতীয়বারের মতো survey থেকে তালিকায় এসেছে, কারণ এটি পরীক্ষা করা কঠিন।
আরেকটি পরিবর্তন লক্ষ করুন। OWASP যতটা সম্ভব লক্ষণ নয়, root cause ধরে বিভাগ বানাতে চায়। যেমন “তথ্য ফাঁস” একটি লক্ষণ, আর “ভুল cryptography” তার গোড়ার কারণ। গোড়া ধরলে সমাধানও পরিষ্কার হয়।
২০২১ থেকে ২০২৫ — কী বদলাল
| ২০২৫ | ২০২১-এ | পরিবর্তন |
|---|---|---|
| A01 Broken Access Control | A01 | স্থান একই। SSRF (A10:2021) এখন এর ভেতরে। |
| A02 Security Misconfiguration | A05 | পাঁচ থেকে দুইয়ে উঠেছে। আধুনিক app অনেক বেশি configuration-নির্ভর। |
| A03 Software Supply Chain Failures | A06 (অন্য নামে) | পরিধি বেড়েছে: dependency, build আর বিতরণ ব্যবস্থা সবই। |
| A04 Cryptographic Failures | A02 | দুই থেকে চারে নেমেছে। |
| A05 Injection | A03 | তিন থেকে পাঁচে নেমেছে। XSS-ও এর ভেতরে। |
| A06 Insecure Design | A04 | চার থেকে ছয়ে নেমেছে। |
| A07 Authentication Failures | A07 | স্থান একই, নাম ছোট হয়েছে। |
| A08 Software or Data Integrity Failures | A08 | স্থান একই। |
| A09 Security Logging and Alerting Failures | A09 | “Monitoring”-এর জায়গায় “Alerting”. Alert ছাড়া log-এর মূল্য কম। |
| A10 Mishandling of Exceptional Conditions | নেই | নতুন বিভাগ। |
৩ · বাজারের মানচিত্র — A01 থেকে A05
এখন একটি কাল্পনিক অনলাইন বাজার ধরুন, যেখানে মানুষ ঘরের জিনিস কেনেন। Browser কী করতে দেয় আর কী দেয় না, তা পর্ব ৩৬-এ দেখেছেন। এবার পুরো ব্যবস্থাটি দেখব। নিচের ছবিতে দেখুন, দশটি ঝুঁকি এই ব্যবস্থার কোথায় কোথায় বসে। লাল ড্যাশ দাগটি trust boundary (পর্ব ৪). তার ওপরের কিছুই বিশ্বাস করা যায় না।
কাল্পনিক অনলাইন বাজারে দশটি ঝুঁকি
Where each 2025 category sits in one web system
প্রতিটি ঝুঁকি একই ছাঁচে দেখব: সহজ কথায় কী, বাজারে কেমন দেখায়, কীভাবে আটকাবেন, কীভাবে ধরবেন, আর কোন পর্বে গভীরে যাব। এখানে কোনো হামলার উপায় নেই। আপনার নিজের নয় এমন system পরীক্ষা করতে লিখিত অনুমতি লাগে। অনুমতি ছাড়া ঢোকা অপরাধ (পর্ব ৬).
A01:2025 · Broken Access Control — অনুমতির দেয়াল ভাঙা
Broken access control মানে একজন ব্যবহারকারী নিজের অনুমতির বাইরের কাজ করতে পারছেন। আবাসিক হোটেলের চাবি অন্য ঘরেও খুলে গেলে যা হয়, এটি তাই। IDOR, CSRF আর SSRF সবই এখন এই বিভাগের CWE-তে আছে।
- বাজারে: অর্ডারের পাতা শুধু order id দেখে তথ্য দেয়, সেটি কার অর্ডার তা যাচাই করে না।
- প্রতিরোধ: default deny, server-এ প্রতিটি request-এ মালিকানা যাচাই, একই access control কোড সবখানে ব্যবহার।
- ধরবেন কীভাবে: অস্বীকৃত request-এর log, একজনের অনেক অস্বীকৃতিতে alert, আর দুই test account দিয়ে স্বয়ংক্রিয় test.
- গভীরে: পর্ব ১৯, পর্ব ৩৮ (IDOR), পর্ব ৪১ (CSRF), পর্ব ৪২ (SSRF).
A02:2025 · Security Misconfiguration — ভুল সেটিং
Security misconfiguration মানে কোড ঠিক থাকলেও সাজানো ভুল। নতুন বাড়ির তালা ভালো, কিন্তু মিস্ত্রির দেওয়া পুরোনো চাবি এখনো চলে, আর পেছনের দরজা খোলা।
- বাজারে: Public site-এ debug page খোলা, default admin account বেঁচে আছে, cookie-তে Secure আর HttpOnly নেই।
- প্রতিরোধ: স্বয়ংক্রিয় ও পুনরাবৃত্তিযোগ্য hardening, অপ্রয়োজনীয় feature বাদ, security header, আর hardcoded key-এর বদলে স্বল্পমেয়াদি credential.
- ধরবেন কীভাবে: প্রতিটি পরিবেশে configuration-এর স্বয়ংক্রিয় যাচাই, আর configuration drift-এর alert.
- গভীরে: পর্ব ৩০, পর্ব ৪৪.
A03:2025 · Software Supply Chain Failures — সরবরাহের শিকলে ভাঙন
Software supply chain failure মানে আপনার software যাঁদের কোড আর টুলের ওপর দাঁড়িয়ে, সেখানে গোলমাল। হোটেলের রান্না যত ভালোই হোক, পচা মাছ এলে খাবার নষ্ট। OWASP-এর data-য় এর উপস্থিতি কম, কারণ এটি পরীক্ষা করা কঠিন। তবু গড় exploit আর impact স্কোরে এটিই সবার ওপরে।
- বাজারে: কেউ জানে না checkout-এর ভেতরের একটি library-র ভেতরের library কোন version. একজনই কোড লিখে সরাসরি production-এ পাঠাতে পারেন।
- প্রতিরোধ: SBOM, transitive dependency-র হিসাব, অব্যবহৃত অংশ বাদ, দায়িত্বের বিভাজন, সই করা build আর ধাপে ধাপে release.
- ধরবেন কীভাবে: SCA দিয়ে নিয়মিত যাচাই, CVE ও OSV-র মতো উৎসে নজর, আর build pipeline-এর পরিবর্তনের log.
- গভীরে: পর্ব ৩২, পর্ব ৪৮.
A04:2025 · Cryptographic Failures — তালা-চাবির ভুল
Cryptographic failure মানে সংবেদনশীল তথ্য রক্ষার cryptography নেই, দুর্বল, বা ভুলভাবে ব্যবহার হচ্ছে। ব্যাংকের লকারের চাবি যদি লকারের ওপরেই ঝোলে, তালা থেকে কোনো লাভ নেই।
- বাজারে: ক্রেতার ঠিকানা আর ফোন গুদামের service-এ যায় plaintext HTTP-তে, অথবা password-এর hash দ্রুত ও salt-হীন।
- প্রতিরোধ: তথ্যের শ্রেণিবিন্যাস, অপ্রয়োজনীয় তথ্য না রাখা, TLS 1.2 বা নতুনতর, HSTS, প্রমাণিত library, আর password-এর জন্য Argon2-এর মতো ধীর hash.
- ধরবেন কীভাবে: TLS configuration আর certificate-এর নিয়মিত scan, repository-তে key খোঁজা, আর code review.
- গভীরে: পর্ব ১২, পর্ব ১৩, পর্ব ১৪.
A05:2025 · Injection — ডেটা যখন আদেশ হয়ে যায়
Injection মানে ইনপুট ডেটা হিসেবে থাকেনি, query বা command-এর গঠন বদলে দিয়েছে। পিয়নকে লিখে দিলেন “নাম খুঁজে আনুন”, আর কেউ নামের ঘরেই নতুন নির্দেশ লিখে দিলেন। পিয়ন দুটিই পালন করলেন। ওয়েবের XSS-ও এই বিভাগে। OWASP বলছে, এতে সবচেয়ে বেশি CVE আছে: XSS বেশি ঘটে কিন্তু প্রভাব কম, SQL injection কম ঘটে কিন্তু প্রভাব বেশি।
- বাজারে: Coupon খোঁজার কোড ইনপুট জুড়ে query বানায়, যেমন
"... code='" + <user-input> + "'". - প্রতিরোধ: parameterized query, server-এ allowlist যাচাই, প্রেক্ষাপট অনুযায়ী output encoding. হাতে escape করা ভঙ্গুর।
- ধরবেন কীভাবে: SAST, DAST, fuzzing আর code review. Production-এ database error-এর হঠাৎ বৃদ্ধিতে alert.
- গভীরে: পর্ব ৩৯, পর্ব ৪০, আর Database security.
৪ · বাজারের মানচিত্র — A06 থেকে A10
A06:2025 · Insecure Design — নকশাতেই ফাঁক
Insecure design মানে নিয়ন্ত্রণটি পরিকল্পনাতেই ছিল না। নকশায় জরুরি সিঁড়ি না থাকলে রাজমিস্ত্রি যত ভালোই গাঁথুন, ভবন নিরাপদ হবে না। ভুল কোড আর ভুল নকশার পার্থক্য এটাই: নিখুঁত কোড দিয়ে নকশার ফাঁক বন্ধ হয় না।
- বাজারে: নতুন ক্রেতার ছাড়ের coupon একই মানুষ যত খুশি account খুলে নিতে পারেন, কারণ কেউ ভাবেননি “এক মানুষ” মানে কী।
- প্রতিরোধ: Threat modeling, secure SDLC, যাচাই করা নকশার ছাঁচ, user story-তে নিরাপত্তা, আর misuse case-এর test.
- ধরবেন কীভাবে: Scanner দিয়ে সাধারণত নয়। ধরা পড়ে design review-এ আর ব্যবসার metric-এ, যেমন coupon-এর অস্বাভাবিক খরচ।
- গভীরে: পর্ব ৪, পর্ব ৪৫, আর Security design.
A07:2025 · Authentication Failures — পরিচয় যাচাইয়ে ভুল
Authentication failure মানে “আপনি কে” প্রশ্নের উত্তর যাচাই দুর্বল। অফিসের দারোয়ান পরিচয়পত্র না দেখেই গেট খুলে দিলে যা হয়। OWASP মনে করে, প্রচলিত authentication framework ব্যবহারে এই শ্রেণির ভুল কমছে।
- বাজারে: Login-এ চেষ্টার সীমা নেই, logout করলেও পুরোনো session চলে, আর admin account-এ MFA নেই।
- প্রতিরোধ: গুরুত্বপূর্ণ জায়গায় MFA, ফাঁস হওয়া password-এর তালিকায় মিলিয়ে দেখা, rate limit, login-এর পর নতুন session ID, আর প্রমাণিত identity সমাধান।
- ধরবেন কীভাবে: ব্যর্থ login-এর ঢেউ, credential stuffing-এর ছাঁচ, নতুন দেশ বা যন্ত্র থেকে login-এর alert.
- গভীরে: পর্ব ১৫, পর্ব ১৬, পর্ব ১৭.
A08:2025 · Software or Data Integrity Failures — যাচাইহীন বিশ্বাস
Integrity failure মানে অবিশ্বস্ত কোড বা ডেটাকে যাচাই ছাড়াই বিশ্বস্ত ধরা। পোস্ট অফিসের সিলমোহর না দেখে পার্সেল নিয়ে নেওয়ার মতো। A03-র সাথে পার্থক্য হলো স্তরে: A03 পুরো সরবরাহ-পথের কথা, আর A08 নির্দিষ্ট একটি বিশ্বাসের জায়গায় অখণ্ডতা যাচাইয়ের কথা।
- বাজারে: Checkout page একটি বাইরের CDN থেকে script আনে অখণ্ডতা যাচাই ছাড়া, অথবা client-এর পাঠানো সই-ছাড়া object সরাসরি deserialization করে।
- প্রতিরোধ: Digital signature বা hash দিয়ে উৎস ও অখণ্ডতা যাচাই, বিশ্বস্ত repository, আর CI/CD-তে access control.
- ধরবেন কীভাবে: Signature যাচাই ব্যর্থ হলে build থামানো ও alert, আর pipeline-এর পরিবর্তনের নিরীক্ষা।
- গভীরে: পর্ব ৯, পর্ব ১১, পর্ব ৪৮.
A09:2025 · Security Logging and Alerting Failures — নীরব পাহারা
Logging and alerting failure মানে ঘটনা ঘটছে, কিন্তু কেউ জানছেন না। মহল্লার পাহারাদার খাতায় সব লিখলেন, কিন্তু চোর এলে বাঁশি বাজালেন না। তাই নাম বদলে “Alerting” এসেছে।
- বাজারে: Refund আর ব্যর্থ login log হয় না, অথবা log আছে কিন্তু কেউ দেখেন না। আবার log-এ পুরো ফোন নম্বর আর token জমছে।
- প্রতিরোধ: সফল ও ব্যর্থ দুই ঘটনার log, পড়া সহজ এমন গঠন, log-এর এনকোডিং, সহজে বদলানো যায় না এমন সংরক্ষণ, আর প্রতিটি alert-এর জন্য লিখিত পদক্ষেপ।
- ধরবেন কীভাবে: মহড়া দিয়ে দেখুন alert বাজে কি না। Honeytoken কাজে লাগে, কারণ এটি ছোঁয়া মানেই সন্দেহ, তাই false positive কম।
- গভীরে: পর্ব ৫৫, পর্ব ৫৬.
A10:2025 · Mishandling of Exceptional Conditions — অস্বাভাবিক অবস্থায় ভুল আচরণ
Exceptional condition মানে স্বাভাবিক পথের বাইরের অবস্থা: timeout, ফাঁকা উত্তর, মেমরি শেষ, অনুমতি না পাওয়া। এই বিভাগের ভয় হলো “error হলে কী হবে” তা কেউ ঠিক করেননি। বিদ্যুৎ গেলে যদি ব্যাংকের লকার রুমের দরজা নিজে থেকেই খুলে যায়, সেটিই fail open. উল্টোটি fail secure.
- বাজারে: Payment gateway সাড়া দিল না, আর কোড ধরে নিল টাকা এসেছে। অর্ডার “paid” হয়ে গেল।
- প্রতিরোধ: Error যেখানে ঘটে সেখানেই ধরা, একটি global handler, এক লেনদেনের কোনো ধাপ ব্যর্থ হলে পুরোটা rollback, সীমা বা quota, আর ব্যবহারকারীকে পরিষ্কার কিন্তু ভেতরের তথ্যহীন বার্তা।
- ধরবেন কীভাবে: Error rate-এর হঠাৎ বৃদ্ধি, একই error-এর পুনরাবৃত্তি, আর stress test ও ব্যর্থতা ঢুকিয়ে দেখা test.
- গভীরে: পর্ব ৩, পর্ব ৪৪, পর্ব ৪৬.
৫ · একটি checkout, দশটি ঝুঁকি
ঝুঁকিগুলো তালিকায় আলাদা, কিন্তু বাস্তবে একটি কেনাকাটার পথেই পাশাপাশি থাকে। নিচে আমাদের কাল্পনিক বাজারের একটি অর্ডারকে শুরু থেকে শেষ পর্যন্ত অনুসরণ করুন। প্রতিটি ধাপে দেখুন কোন বিভাগ, কোন CWE, আর এখন পর্যন্ত কয়টি বিভাগ দেখা হলো। সবই কাল্পনিক, কোনো হামলার পদ্ধতি নেই।
- Loginপরিচয়
- Cartবাইরের কোড
- Couponইনপুট, নিয়ম
- Orderমালিকানা
- Paymentতথ্য, ব্যতিক্রম
- Logপাহারা
| বিভাগ | |
| CWE উদাহরণ | |
| মোট বিভাগ |
- Login, A07. ক্রেতা login করলেন। এই পথে ব্যর্থ চেষ্টার কোনো সীমা নেই (CWE-307). প্রতিকার: rate limit আর MFA-র সুযোগ।
- Cart, A03 আর A08. Cart page একটি পুরোনো library ব্যবহার করে, যার জানা দুর্বলতা আছে (CWE-1395, A03). আবার একটি বাইরের script আসে অখণ্ডতা যাচাই ছাড়া (CWE-494, A08). প্রতিকার: SBOM, SCA আর অখণ্ডতা যাচাই।
- Coupon খোঁজা, A05. Coupon কোড ইনপুট হিসেবে আসে আর জুড়ে দেওয়া হয় query-তে (CWE-89). প্রতিকার: parameterized query.
- Coupon-এর নিয়ম, A06. কোড ঠিক থাকলেও নিয়মে ফাঁক: এক মানুষ অসংখ্য account খুলে নতুন ক্রেতার ছাড় নিতে পারেন। এটি একটি নকশার ফাঁক, একটি লাইনের bug নয়। প্রতিকার: threat modeling আর misuse case.
- অর্ডারের পাতা, A01. Server শুধু order id দেখে উত্তর দেয়, কার অর্ডার তা দেখে না (CWE-639). প্রতিকার: প্রতিটি request-এ মালিকানা যাচাই।
- পেমেন্টের তথ্য, A04. ঠিকানা আর ফোন গুদামের service-এ যায় plaintext HTTP-তে (CWE-319). প্রতিকার: ভেতরের পথেও TLS, আর যতটুকু দরকার ততটুকু তথ্য পাঠানো।
- Gateway timeout, A10. Gateway সাড়া দিল না। কোড ধরে নিল টাকা এসেছে, অর্ডার হলো “paid” (CWE-636, failing open). প্রতিকার: অনিশ্চিত হলে অর্ডার আটকে রাখা, gateway থেকে অবস্থা মিলিয়ে নেওয়া।
- Error page, A02. ব্যর্থতার পর ব্যবহারকারী দেখলেন পুরো stack trace, কারণ public site-এ debug চালু (CWE-489). প্রতিকার: production configuration-এ debug বন্ধ, কেন্দ্রীয় error page.
- পরের দিন, A09. এত কিছুর পরও কোনো alert নেই, কারণ এসব ঘটনা log-ই হয়নি (CWE-778). দশটি বিভাগই একটি পথে এলো। খেয়াল করুন, বেশিরভাগ ত্রুটির প্রতিকার আলাদা, তাই একটি টুল দিয়ে সব সারে না।
তালিকার ক্রম বনাম আপনার কাজের ক্রম
একটি সাধারণ ভুল হলো ধরে নেওয়া, A01 মানেই আগে, A10 মানেই পরে। OWASP-এর ক্রম সারা বিশ্বের app-এর গড় ছবি। আপনার সিদ্ধান্ত হবে আপনার ক্ষতি আর খোলা পথ দেখে। Triage মানে ফলাফল বাছাই করে কোনটি আগে তা ঠিক করা, হাসপাতালের জরুরি বিভাগের মতো।
নিচের খেলনা প্রোগ্রামে সাতটি finding আছে। Impact আর reach ১ থেকে ৩ স্কেলে, আর প্রমাণ থাকলে স্কোর দ্বিগুণ। ওজনগুলো আমাদের নিজের, শেখার জন্য বানানো, OWASP-এর নয়।
// Toy triage for a fictional bazaar. The weights are ours, NOT from OWASP.
const findings = [
{ id: 'F1', what: 'order page has no owner check', cat: 'A01', impact: 3, reach: 3, proof: true },
{ id: 'F2', what: 'old report page open to all staff', cat: 'A01', impact: 1, reach: 1, proof: false },
{ id: 'F3', what: 'debug page on public site', cat: 'A02', impact: 2, reach: 3, proof: true },
{ id: 'F4', what: 'flawed library, code path unused', cat: 'A03', impact: 2, reach: 1, proof: false },
{ id: 'F5', what: 'coupon search joins text into query', cat: 'A05', impact: 3, reach: 2, proof: false },
{ id: 'F6', what: 'no alert on refund spike', cat: 'A09', impact: 2, reach: 2, proof: true },
{ id: 'F7', what: 'gateway timeout marks order paid', cat: 'A10', impact: 3, reach: 3, proof: true },
];
function score(f) { return f.impact * f.reach * (f.proof ? 2 : 1); }
function priority(s) { return s >= 12 ? 'P1' : s >= 6 ? 'P2' : 'P3'; }
const ranked = findings
.map(f => ({ ...f, s: score(f), p: priority(score(f)) }))
.sort((a, b) => b.s - a.s);
for (const f of ranked) {
console.log(f.p, String(f.s).padStart(2), f.cat, f.id, f.what);
}
const count = { P1: 0, P2: 0, P3: 0 };
ranked.forEach(f => count[f.p]++);
console.log('summary:', JSON.stringify(count));আউটপুটের শুরু আর শেষ দেখুন:
P1 18 A01 F1 order page has no owner check
P1 18 A10 F7 gateway timeout marks order paid
P1 12 A02 F3 debug page on public site
...
P3 1 A01 F2 old report page open to all staff
summary: {"P1":3,"P2":2,"P3":2}
দুটি finding-ই A01, অথচ F1 সবার ওপরে আর F2 সবার নিচে। আর A10-এর F7 উঠেছে এক নম্বরের পাশে। F7-এর স্কোর ৩ × ৩ × ২ = ১৮, F2-এর ১ × ১ × ১ = ১। F5-এ injection-এর সন্দেহ আছে কিন্তু প্রমাণ নেই, তাই আগে যাচাই লাগবে। বিভাগ বলে ত্রুটির ধরন। অগ্রাধিকার ঠিক হয় আপনার প্রেক্ষাপটে, ঠিক যেমন পর্ব ৩২-এ CVSS-এর পাশে asset-এর গুরুত্ব দেখেছিলেন।
৬ · CWE-তে নামা — বিভাগ থেকে নির্দিষ্ট দুর্বলতা
Top 10-এর একটি বিভাগ যেন হাসপাতালের একটি বিভাগ, যেমন হৃদরোগ বিভাগ। আর CWE হলো নির্দিষ্ট রোগের নাম। স্ক্যানার সাধারণত CWE নম্বর দেয়, Top 10 বিভাগ নয়। তাই দুইয়ের মধ্যে যাতায়াত জানা দরকার।
| বিভাগ | CWE উদাহরণ | মনে রাখার মতো |
|---|---|---|
| A01 | CWE-639, CWE-862, CWE-918, CWE-352 | SSRF আর CSRF দুটোই এখানে |
| A02 | CWE-614, CWE-1004, CWE-489 | Cookie-র flag না থাকা এখানে |
| A03 | CWE-1104, CWE-1395 | বিভাগে CWE কম, ঝুঁকি বড় |
| A04 | CWE-319, CWE-327, CWE-916 | ধীর hash না থাকাও এখানে |
| A05 | CWE-79, CWE-89, CWE-78 | XSS এখানে |
| A06 | CWE-434, CWE-501 | নকশার ভুল, অনেক সময় স্ক্যানারে আসে না |
| A07 | CWE-307, CWE-384, CWE-798 | Hardcoded credential এখানে |
| A08 | CWE-494, CWE-502 | অখণ্ডতা যাচাই আর deserialization |
| A09 | CWE-532, CWE-778, CWE-117 | Log-এ গোপন তথ্যও এখানে |
| A10 | CWE-209, CWE-636, CWE-476 | Error-এ ভেতরের তথ্য ফাঁসও এখানে |
নিচের প্রোগ্রাম তিনটি কাল্পনিক app-এর scan ফল থেকে রিপোর্ট বানায়। খেয়াল করুন, এটি OWASP-এর মতো দুইভাবে গোনে: মোট ঘটনা (hits) আর কতগুলো app-এ আছে। MAP টেবিলটি আসল mapping-এর ছোট অংশ।
// Toy scan for 3 fictional apps. MAP is a small excerpt, not the full mapping.
const MAP = { 22: 'A01', 352: 'A01', 639: 'A01', 862: 'A01', 918: 'A01',
614: 'A02', 1004: 'A02', 1104: 'A03', 1395: 'A03', 319: 'A04', 327: 'A04',
79: 'A05', 89: 'A05', 434: 'A06', 501: 'A06', 384: 'A07', 798: 'A07',
494: 'A08', 502: 'A08', 532: 'A09', 778: 'A09', 209: 'A10', 636: 'A10' };
const apps = ['shop', 'seller', 'admin'];
const scan = [ ['shop', 79], ['shop', 79], ['shop', 79], ['shop', 79], ['shop', 79],
['shop', 614], ['seller', 639], ['seller', 1004], ['seller', 209],
['admin', 862], ['admin', 778], ['admin', 209], ['admin', 120] ];
const byCat = {};
const unmapped = [];
for (const [app, cwe] of scan) {
const cat = MAP[cwe];
if (!cat) { unmapped.push(app + ':CWE-' + cwe); continue; }
byCat[cat] = byCat[cat] || { hits: 0, apps: new Set(), cwes: new Set() };
byCat[cat].hits++;
byCat[cat].apps.add(app);
byCat[cat].cwes.add(cwe);
}
const rows = Object.entries(byCat).sort((a, b) =>
b[1].apps.size - a[1].apps.size || a[0].localeCompare(b[0]));
console.log('cat hits apps incidence cwes');
for (const [cat, r] of rows) {
const pct = Math.round(r.apps.size / apps.length * 100);
console.log(cat, String(r.hits).padStart(4), String(r.apps.size).padStart(4),
String(pct).padStart(8) + '%', [...r.cwes].join(','));
}
console.log('not in this table:', unmapped.join(' '));চালালে এই আউটপুট আসে:
cat hits apps incidence cwes
A01 2 2 67% 639,862
A02 2 2 67% 614,1004
A10 2 2 67% 209
A05 5 1 33% 79
A09 1 1 33% 778
not in this table: admin:CWE-120
A05-এর ঘটনা সবচেয়ে বেশি, পাঁচটি, কিন্তু সবই shop app-এর একই CWE-79. তাই incidence ১ ÷ ৩ = ৩৩%. A01 আছে দুটি app-এ, ২ ÷ ৩ = ৬৭%. Top 10-এর গণনার নিয়মটি এখানে আপনি নিজের চোখে দেখলেন। শেষ লাইনটিও জরুরি: CWE-120 টেবিলে নেই মানে ঝুঁকি নেই, এমন নয়। Top 10 সব CWE ঢাকে না। মোট ৯৬৮টির মধ্যে ২৪৮টি মাত্র তালিকায়।
সাবধান: এক CWE কখনো কখনো একাধিক গল্প বলে। Log-এ token পড়লে CWE-532 (A09), অথচ এর ফল হতে পারে session চুরি (A07). স্ক্যানার যা বলে সেটি শুরু, শেষ কথা নয়। False positive বাদ দিতে একজন মানুষকে দেখতে হয়।
৭ · মানচিত্রের পরে — ASVS, Proactive Controls, Cheat Sheet আর SAMM
মানচিত্র দিয়ে শুরু হয়, কিন্তু কাজ চালাতে আরও দলিল লাগে। ট্রাফিকের উদাহরণেই বলি: Top 10 হলো বিপজ্জনক মোড়ের মানচিত্র, ASVS গাড়ির ফিটনেস পরীক্ষার পূর্ণ তালিকা, Proactive Controls ড্রাইভিং স্কুলের প্রথম দশ অভ্যাস, Cheat Sheet মেরামতের ছোট গাইড, আর SAMM পুরো পরিবহন কোম্পানির মান মাপার পদ্ধতি।
| দলিল | প্রশ্ন | কার জন্য |
|---|---|---|
| Top 10:2025 | কোন ঝুঁকি নিয়ে আগে কথা বলব? | সবাই, প্রশিক্ষণ |
| ASVS 5.0.0 | আমার app কী কী শর্ত পূরণ করছে? | Developer, tester, ক্রেতা |
| Proactive Controls (২০২৪) | শুরু থেকে কী কী করব? | Developer |
| Cheat Sheet Series | এই নির্দিষ্ট কাজটি নিরাপদে কীভাবে করব? | Developer |
| SAMM (v2) | প্রতিষ্ঠান হিসেবে আমরা কতটা পরিপক্ব? | নেতৃত্ব, AppSec দল |
ASVS 5.0.0 — যাচাইযোগ্য মান
ASVS মানে Application Security Verification Standard. স্থিতিশীল সংস্করণ 5.0.0 প্রকাশিত হয়েছে ২০২৫ সালের ৩০ মে। এতে মোট ৩৪৫টি requirement আছে। একটি requirement এমনভাবে লেখা, যা “হ্যাঁ” বা “না” দিয়ে যাচাই করা যায়। তাই OWASP বলে, মান হিসেবে গ্রহণ করতে চাইলে Top 10 নয়, ASVS নিন। v4.0.3-তে Level 1-এ ছিল ২৭৮টির মধ্যে ১২৮টি, প্রায় ৪৬%. v5.0.0-তে সেটি ৩৪৫টির মধ্যে ৭০টি, প্রায় ২০%. উদ্দেশ্য, শুরু করা সহজ করা।
| Level | মোট requirement-এর কত অংশ পূরণ করতে হয় | OWASP-এর ভাষ্য |
|---|---|---|
| L1 | প্রায় ২০%, অর্থাৎ ৭০টি | গ্রহণের প্রথম ধাপ, প্রতিরক্ষার প্রথম স্তর |
| L2 | প্রায় ৭০% (L1 + L2), প্রায় ২৪০টি | মান নিরাপত্তা চর্চার পূর্ণ চিত্র, বেশিরভাগ app-এর লক্ষ্য |
| L3 | ১০০%, শেষ প্রায় ৩০% যোগ করে | সর্বোচ্চ নিশ্চয়তা দরকার এমন app |
৩৪৫ × ০.৭০ ≈ ২৪১, তাই “প্রায় ২৪০” একটি আন্দাজ, OWASP-এর সঠিক সংখ্যা নয়। ASVS-এ level চাপিয়ে দেওয়া হয় না। প্রতিষ্ঠান নিজের ঝুঁকি দেখে ঠিক করে। ব্যাংকের উদাহরণ দিয়ে ASVS বলে, Level 3-এর কম কেন, তা গ্রাহককে বোঝানো কঠিন হবে। নিচের ধাপে দেখুন আমাদের বাজার কীভাবে সিদ্ধান্ত নিচ্ছে।
| প্রশ্ন | |
| সিদ্ধান্ত | |
| মোট শর্ত (প্রায়) |
- ভাগ করে দেখা। পুরো ব্যবস্থায় একটি level বসানোর দরকার নেই। আগে ঠিক করুন কোন অংশগুলো আলাদা করে যাচাই হবে।
- তথ্যের পাতা: L1. Login নেই, ব্যক্তিগত তথ্য নেই। প্রথম স্তরের প্রায় ৭০টি শর্ত দিয়ে শুরু করা যুক্তিসঙ্গত।
- ক্রেতার app: L2. Login, ঠিকানা আর অর্ডারের তথ্য আছে। ASVS বলে বেশিরভাগ app-এর লক্ষ্য হওয়া উচিত L2, প্রায় ২৪০টি শর্ত।
- Refund service: L3. ভুল হলে সরাসরি টাকা বেরিয়ে যায়। এখানে পূর্ণ ৩৪৫টি শর্তের দিকে যাওয়ার যুক্তি আছে। প্রযোজ্য নয় এমন শর্ত কারণসহ বাদ দিন, চুপচাপ নয়।
- লিখে রাখা। কোন অংশের কোন level, কে দায়িত্বে, কী বাদ গেল আর কেন, সব খাতায় লিখুন। নতুন feature এলে আবার দেখুন। Level নিজে নিরাপত্তা নয়, এটি শুধু মাপকাঠি।
বাকি তিনটি দলিল
Proactive Controls: ২০২৪ সংস্করণে দশটি প্রতিরোধমূলক কাজ, যেমন C1 Implement Access Control, C4 Address Security from the Start, C9 Implement Security Logging and Monitoring. Top 10 সমস্যা বলে, আর এটি অভ্যাস বলে। প্রকল্পের সাইট আরও নতুন সংস্করণ নিয়ে কাজ চলার ইঙ্গিত দেয়, তাই দেখে নিন।
Cheat Sheet Series: নির্দিষ্ট বিষয়ে ছোট, হাতে-কলমের গাইড। Top 10 আপনাকে বলবে A07 দেখুন, আর Cheat Sheet বলবে session কীভাবে সামলাবেন। ASVS-এর সাথেও এর একটি সূচি আছে।
SAMM: Software Assurance Maturity Model. এটি কোড নয়, প্রতিষ্ঠান মাপে। পাঁচটি business function আছে: Governance, Design, Implementation, Verification, Operations. প্রতিটিতে তিনটি করে, মোট ১৫টি security practice. দল নিজের অবস্থান মেপে পরের লক্ষ্য ঠিক করে। ASVS বলে “এই app কেমন”, আর SAMM বলে “যে প্রতিষ্ঠান app বানায় সেটি কেমন”।
৮ · দল তালিকাটি কীভাবে কাজে লাগায়
Threat modeling
নতুন feature-এ দশটি বিভাগকে প্রশ্ন হিসেবে ধরুন: কার অনুমতি লাগবে? ব্যর্থ হলে কী? এটি STRIDE-এর বিকল্প নয়, পরিপূরক (পর্ব ৪).
A06-এর প্রধান ওষুধCode review
Pull request-এ ছোট প্রশ্নের তালিকা। তবে OWASP-এর মতে review-এর জন্য Top 10 একেবারে ন্যূনতম, পূর্ণ তালিকা নয় (Code review).
প্রতিটি পরিবর্তনেপ্রশিক্ষণ
নতুন developer-কে তালিকা মুখস্থ না করিয়ে নিজের product-এর উদাহরণ দেখান। Top 10-এর সবচেয়ে ভালো ব্যবহার এখানেই।
AwarenessTest
Access control test unit আর integration স্তরে রাখুন। SAST, DAST আর SCA pipeline-এ বসান (DevSecOps). ধরা পড়া ত্রুটিতে regression test যোগ করুন।
প্রতিটি build-এCode review-এর চেকলিস্ট — একটি খেলনা স্কোর
নিচের প্রোগ্রাম একটি কাল্পনিক code review-এর তথ্য নিয়ে স্কোর বের করে। প্রশ্নগুলোর ওজন আছে, আর কিছু প্রশ্ন “blocker”, মানে সেটি ব্যর্থ হলে স্কোর যত ভালোই হোক, কোড মিশবে না। Reviewer নিজে উত্তর দেন, প্রোগ্রাম শুধু হিসাব রাখে।
// Toy pull request "add coupon API". A reviewer records facts, then scores.
function review(pr) {
const list = [ // risk, question, weight, blocker, passed
['A01', 'server checks who owns the object', 3, true, pr.ownerCheck],
['A05', 'queries use parameters', 3, true, pr.parameterized],
['A07', 'endpoint requires login', 3, true, pr.loginRequired],
['A02', 'no secret in the diff', 3, true, !pr.secretInDiff],
['A10', 'failure stops the action', 3, true, pr.failsClosed],
['A03', 'new dependency pinned, reviewed', 2, false, pr.depPinned],
['A06', 'misuse case has a test', 2, false, pr.misuseTest],
['A09', 'sensitive action is logged', 1, false, pr.logged],
['A02', 'error hides internal detail', 1, false, pr.quietError],
];
const total = list.reduce((sum, c) => sum + c[2], 0);
const got = list.reduce((sum, c) => sum + (c[4] ? c[2] : 0), 0);
const failed = list.filter(c => !c[4]);
const blocked = failed.some(c => c[3]);
console.log('score', got + '/' + total, Math.round(got / total * 100) + '%');
failed.forEach(c => console.log(' fail', c[0], c[1], c[3] ? '[BLOCKER]' : ''));
console.log(' verdict:', blocked ? 'CHANGES REQUESTED' : 'OK TO MERGE, human review still needed');
}
const v1 = { ownerCheck: false, parameterized: true, loginRequired: true,
secretInDiff: false, failsClosed: true, depPinned: true,
misuseTest: true, logged: true, quietError: true };
console.log('PR version 1');
review(v1);
console.log('PR version 2');
review({ ...v1, ownerCheck: true, logged: false });আউটপুট:
PR version 1
score 18/21 86%
fail A01 server checks who owns the object [BLOCKER]
verdict: CHANGES REQUESTED
PR version 2
score 20/21 95%
fail A09 sensitive action is logged
verdict: OK TO MERGE, human review still needed
প্রথম সংস্করণে স্কোর ৮৬%, ১৮ ÷ ২১. তবু কোড আটকে গেল, কারণ মালিকানা যাচাই নেই। গড় স্কোর একটি মারাত্মক ত্রুটি লুকিয়ে ফেলতে পারে, তাই blocker আলাদা। দ্বিতীয় সংস্করণে blocker নেই, কিন্তু log বাদ পড়েছে, আর সেটি আলাদা ticket হওয়া উচিত। “OK” মানে তালিকা পেরিয়েছে, নিরাপদ প্রমাণ হয়নি।
একটি finding থেকে fix আর test
দল তালিকাটি সবচেয়ে ভালো কাজে লাগায়, যখন একটি finding শেষ হয় একটি test-এ। তাহলে একই ভুল আর ফেরে না। নিচে F1 finding-টি ধাপে ধাপে দেখুন। কাজটি হচ্ছে কোম্পানির নিজের staging পরিবেশে, নিজের দুটি test account দিয়ে।
F1: test_a logged in, opened an order of test_b. Page showed name, address and phone of test_b.
CWE : CWE-639
Category: A01:2025
Score : 3 x 3 x 2 = 18
Priority: P1
Owner : orders team
function getOrder(session, orderId) {
return db.orders.find(orderId);
// who is asking was never checked
}
function getOrder(session, orderId) {
const order = db.orders.find(orderId);
if (!order || order.ownerId !== session.userId) {
log.warn('order_denied', { user: session.userId });
return notFound();
}
return order;
}
test('buyer reads own order', () => {
expect(api.as('test_b').get(orderOfB).status).toBe(200);
});
test('buyer cannot read other order', () => {
expect(api.as('test_a').get(orderOfB).status).toBe(404);
});
event = order_denied group by user, window 5m count >= 20 -> alert security on-call
[x] test fails on old code, passes on new
[x] same pattern searched in other handlers
[x] fix verified on staging, then production
[x] past logs checked for misuse
Status: closed
- Finding. Tester নিজের দুটি test account দিয়ে দেখলেন, একজনের session থেকে অন্যজনের অর্ডার খোলে। খেয়াল করুন, আসল গ্রাহকের তথ্য ছোঁয়া হয়নি।
- শ্রেণিবিন্যাস। CWE-639, তাই A01. খেলনা triage-এর হিসাবে ৩ × ৩ × ২ = ১৮, অর্থাৎ P1. একজন মালিক ঠিক হলেন।
- গোড়ার কারণ। Function শুধু id দিয়ে অর্ডার খোঁজে। প্রশ্নকর্তা কে, তা কখনো দেখা হয় না। লক্ষণ তথ্য ফাঁস, কিন্তু কারণ অনুমতি যাচাই না থাকা।
- Fix. মালিক না মিললে অর্ডার পাওয়া যায়নি বলা হয়, আর ঘটনাটি log হয়। এটি default deny. 404 দেওয়ায় অর্ডারটি আছে কি না, তাও বোঝা যায় না।
- Regression test. দুটি test: মালিক পান (200), অন্যজন পান না (404). শুধু দ্বিতীয়টি থাকলে কেউ সবাইকে আটকে দিলেও test পাস করত, তাই দুটোই লাগে।
- Detection. একই ব্যবহারকারীর ৫ মিনিটে ২০টি অস্বীকৃতি হলে alert. সংখ্যাটি উদাহরণ, নিজের ট্রাফিক দেখে ঠিক করবেন। এটি A09-এর ফাঁকও বন্ধ করল।
- বন্ধ করা। Test পুরোনো কোডে ব্যর্থ হয়েছে কি না দেখা হলো। একই ছাঁচ অন্য handler-এও খোঁজা হলো। পুরোনো log দেখা হলো, কারণ ত্রুটিটি আগে কেউ ব্যবহার করেছেন কি না জানা দরকার। ঘটেছে বলে সন্দেহ হলে এটি incident (পর্ব ৬১).
৯ · আরও তালিকা — API, LLM আর অন্যরা
Top 10 নামটি একটি পরিবারের মতো হয়ে গেছে। মূল তালিকার পাশে নির্দিষ্ট প্রযুক্তির জন্য আলাদা তালিকা আছে, কারণ একই গোড়ার ভুল সেখানে অন্য চেহারায় আসে।
| তালিকা | কী বিশেষ | কোথায় পড়বেন |
|---|---|---|
| API Security Top 10 (২০২৩) | API1 Broken Object Level Authorization সবার ওপরে, যা A01-এর API রূপ। এতে API4 Unrestricted Resource Consumption, API9 Improper Inventory Management-এর মতো বিভাগও আছে। | পর্ব ৪৩ |
| LLM Top 10 (২০২৬) | LLM01 Prompt Injection, LLM03 Excessive Agency, LLM10 Improper Output Handling. ইনপুটে আদেশ মিশে যাওয়ার সমস্যাটি এখানে নতুন চেহারায় এসেছে। | পর্ব ৫১ |
| Mobile আর IoT তালিকা | যন্ত্রে থাকা কোড আর তথ্যের ঝুঁকি। | পর্ব ৩৫ |
একটি প্রকল্পে একাধিক তালিকা একসাথে প্রযোজ্য হতে পারে। আমাদের বাজারে যদি AI সহায়ক chatbot থাকে, তাহলে web-এর জন্য মূল তালিকা, mobile app-এর API-র জন্য API Top 10, আর chatbot-এর জন্য LLM Top 10 দেখতে হবে। তালিকা বেশি হওয়া সমস্যা নয়। প্রতিটির ওপরের কয়েকটি ঝুঁকি আপনার threat model-এ আছে কি না দেখাই আসল কাজ।
আরও গভীরে: Top 10-এর পাশে MITRE-র CWE Top 25-ও আছে, যা নির্দিষ্ট CWE-র ক্রম, বিভাগের নয়। ASVS 5.0-এ requirement-এর level ঠিক হয়েছে ঝুঁকি কমানো আর বাস্তবায়নের খরচের তুলনায়, পরীক্ষা করা সহজ কি না দেখে নয়। A03 নিয়ে OWASP-এর নিজের সতর্কতা আছে, এর data কম কারণ টুল কম। A04-এর পাতায় high-risk system-কে ২০৩০ সালের শেষ নাগাদ quantum-safe করার পরামর্শও আছে, যা আপনি পর্ব ১৪-এর সাথে মিলিয়ে পড়তে পারেন।
পরীক্ষা ও ইন্টারভিউতে:
- Top 10:2025-এর প্রথম তিনটি? Broken Access Control, Security Misconfiguration, Software Supply Chain Failures.
- ২০২৫-এ SSRF কোথায়? আলাদা বিভাগ নয়, A01-এর ভেতরে।
- নতুন দুটি বিভাগ? A03 (পুরোনো উপাদান-বিভাগ বড় হয়ে) আর A10 Mishandling of Exceptional Conditions.
- Top 10 আর ASVS-এর পার্থক্য? Top 10 সচেতনতা; ASVS যাচাইযোগ্য requirement-এর মান, যাতে তিনটি level আছে।
- Insecure design আর insecure implementation? প্রথমটিতে নিয়ন্ত্রণ পরিকল্পনাতেই নেই; দ্বিতীয়টিতে নকশা ঠিক, কোডে ভুল।
১০ · AI-এর যুগে Top 10
AI এখন প্রচুর web কোড লেখে আর review করে। Top 10 এখানে ভালো একটি ছাঁকনি। তবে AI নিজেই পুরোনো সংস্করণ মনে রাখে, আর আত্মবিশ্বাসে ভুল বলে।
| AI-এর ভুল | যেভাবে ধরবেন |
|---|---|
| ২০২১-এর তালিকা ২০২৫ বলে চালানো, SSRF-কে A10 বলা | OWASP-এর সাইটে সংস্করণ দেখুন |
| নেই এমন CVE বা ASVS requirement নম্বর বানানো | NVD আর ASVS-এর মূল ফাইলে খুঁজুন |
| নমুনা endpoint-এ মালিকানা যাচাই বাদ দেওয়া (A01) | দুই account-এর test লিখুন |
Error ঠিক করতে যাচাই বন্ধ করা, verify=False বা খোলা CORS | Diff পড়ুন, ঝুঁকি না বুঝে মেশাবেন না |
| পুরোনো পরামর্শ, যেমন password-এ MD5 বা salt ছাড়া hash | পর্ব ১৩-এর সাথে মিলিয়ে দেখুন |
| Triage-এ অতিরিক্ত নিশ্চিত হওয়া | মানুষের সিদ্ধান্ত রাখুন, প্রমাণ চান |
| অস্তিত্বহীন package সুপারিশ, যা A03-র ঝুঁকি বাড়ায় | Registry-তে উৎস আর রক্ষণাবেক্ষণ দেখুন |
নিজের লেখা, secret-মুক্ত ও ছদ্মনাম দেওয়া কোড review করাতে এমন prompt ব্যবহার করুন। শেষের অংশটি AI-কে “জানি না” বলার পথ দেয়।
AI-এর উত্তর ব্যবহারের আগে
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।
প্র ০১Injection বহু বছর এক নম্বরে ছিল, এখন পাঁচে। তাহলে কি injection-এর সমস্যা মিটে গেছে?
না। ক্রমের পতন মানে সমস্যা শেষ নয়, আর এখানে কয়েকটি আলাদা ঘটনা একসাথে কাজ করছে।
২০১০, ২০১৩ আর ২০১৭ সালের তালিকায় Injection ছিল A1. ২০২১ সালে সেটি তিনে নামে, আর সেই সংস্করণেই XSS-কে এর ভেতরে আনা হয়। ২০২৫-এ এটি পাঁচে। তবু OWASP বলছে, দশটি বিভাগের মধ্যে এতেই সবচেয়ে বেশি CVE যুক্ত। অর্থাৎ ক্রম শুধু ত্রুটি কমলেই বদলায় না, অন্যরা ওপরে উঠলেও বদলায়।
একটি বড় কারণ টুলের উন্নতি। আধুনিক framework আর ORM সাধারণ পথে parameterized query ব্যবহার করে। অনেক template engine নিজে থেকেই output encoding করে। ভালো জিনিস ডিফল্ট হলে সাধারণ ভুল কমে। এটিই secure by default-এর শক্তি।
আরেকটি কারণ গণনার ধরন। OWASP দেখে কত app-এ অন্তত একবার আছে। একই app-এ হাজারবার থাকলেও গণনা একবার। আবার configuration-নির্ভর app বেড়েছে, তাই A02 ওপরে উঠেছে। অর্থাৎ অন্য বিভাগ বড় হলে Injection নিজের অবস্থানে দাঁড়িয়েও নিচে সরে যেতে পারে।
তবে বিপদ রয়ে গেছে পুরোনো কোডে, হাতে বানানো রিপোর্টে, যেখানে table বা column-এর নাম ইনপুট থেকে আসে, আর নতুন জায়গায়। LLM Top 10-এর এক নম্বর prompt injection একই পুরোনো ভুলের নতুন রূপ: ডেটা আর আদেশ এক পথে মিশে গেছে।
মূল উপলব্ধি: ক্রম হলো আপেক্ষিক ছবি। কোনো বিভাগ নিচে নামলে তার প্রতিরোধ তুলে নেওয়া যায় না, বরং বোঝা যায় ভালো ডিফল্ট কাজ করছে, আর সেগুলো বজায় রাখা দরকার।
প্র ০২একটি কোম্পানি লিখেছে “আমরা OWASP Top 10 compliant”. এই দাবিতে সমস্যা কোথায়?
সমস্যা তিন জায়গায়: শব্দে, পরিধিতে আর প্রমাণে।
শব্দে: Compliance মানে একটি মানের নির্দিষ্ট শর্ত পূরণ। Top 10-এ এমন যাচাইযোগ্য শর্তের তালিকা নেই। এটি ঝুঁকির শ্রেণির তালিকা। OWASP নিজেই একে সচেতনতা-দলিল বলে, আর পূর্ণ আওতার দাবিকে অসত্য বলে উল্লেখ করে।
পরিধিতে: তালিকায় ২৪৮টি CWE আছে, অথচ MITRE-র অভিধানে ৯৬৮টি। আমাদের scan-এর CWE-120-এর মতো অনেক কিছুই বাইরে। আবার তালিকা অতীতের data থেকে তৈরি, তাই নতুন প্রবণতা বাদ পড়তে পারে।
প্রমাণে: Scanner-এর সবুজ রিপোর্ট দেখে A06 যাচাই হয় না। OWASP বলছে, A06 বেশিরভাগ পরীক্ষা পদ্ধতির বাইরে। আর log ও alert যাচাইয়ে সাক্ষাৎকার আর incident-এর নমুনা লাগে। তাই “টুল চালিয়েছি, কিছু পাইনি” মানে “এই টুল দিয়ে এই সময়ে এটুকু পাইনি”।
তাহলে ক্রেতা হিসেবে আপনি কী চাইবেন? প্রশ্ন বদলান। “কোন ASVS level-এ, কোন সংস্করণে, কোন অংশ যাচাই হয়েছে? প্রমাণ কী? কী বাদ গেছে? স্বাধীনভাবে কে দেখেছেন?” Pentest রিপোর্ট চাইলে তার scope আর তারিখ দেখুন, কারণ সেটি একটি নির্দিষ্ট দিনের ছবি, আর পরের release-এ অবস্থা বদলে যেতে পারে। সরবরাহকারীর কাছে যাচাইয়ের ফলের সাথে কোন অংশ বাদ গেছে তার তালিকাও চাইতে পারেন। কিছু চুক্তি বা নিয়ন্ত্রক দলিলে Top 10-এর উল্লেখ থাকতে পারে, সেখানে শব্দটি কীভাবে ব্যবহৃত হয়েছে তা পড়ে নিন।
মূল উপলব্ধি: নিরাপত্তার দাবি মানে একটি নির্দিষ্ট পরিধিতে, নির্দিষ্ট সময়ে, নির্দিষ্ট প্রমাণ। “Top 10 compliant” শব্দটি এই তিনটির একটিও বলে না।
প্র ০৩Supply chain বিভাগে data-র উপস্থিতি কম, অথচ এটি তিন নম্বরে। কম প্রমাণের ভিত্তিতে এত ওপরে রাখা কি ঠিক?
এখানে প্রশ্নটি data-র প্রকৃতি নিয়ে। “কম দেখা গেছে” আর “কম আছে” এক কথা নয়।
স্বয়ংক্রিয় টুল সহজে দেখে একটি পরিচিত library-র version. কিন্তু build server-এ কেউ গোপনে কিছু যোগ করেছেন কি না, একজন বিশ্বস্ত maintainer-এর account ব্যবহার হচ্ছে কি না, তা app scan করে ধরা যায় না। OWASP নিজেও বলছে, উপস্থিতি কম হওয়ার কারণ পরীক্ষার ফাঁক। পরিসংখ্যানে একে বলে পরিমাপের পক্ষপাত: যা মাপা সহজ, সেটিই বেশি দেখা যায়।
দ্বিতীয় দিক হলো প্রভাব। ঝুঁকি শুধু হার নয়, ক্ষতিও। সাম্প্রতিক প্রকাশিত ঘটনাগুলো এই কথাই বলে। ২০২০ সালের SolarWinds ঘটনায় একটি বহুল ব্যবহৃত পণ্যের update-এর পথ ব্যবহৃত হয়েছিল বলে রিপোর্টে এসেছে। ২০২১ সালের Log4Shell দেখিয়েছে, একটি ছোট library বিশ্বজুড়ে কত জায়গায় থাকতে পারে, আর অনেক দল জানতই না এটি তাদের কোথায় আছে। ২০২৪ সালের xz ঘটনায়, প্রকাশিত রিপোর্ট অনুসারে, একটি compression library-তে দীর্ঘদিন আস্থা অর্জনের পর backdoor ঢোকানো হয়, আর একজন প্রকৌশলীর সতর্ক নজরে সেটি ধরা পড়ে।
এই শ্রেণির ঘটনা বারবার ঘটে না, কিন্তু একবারেই বহু প্রতিষ্ঠানে পৌঁছায়। OWASP-এর হিসাবে A03-র গড় exploit আর impact স্কোরও সবচেয়ে বেশি। তাই survey-তে মাঠের মানুষের ভোট যুক্তিসঙ্গত। ঠিক উল্টো ভুল হলো শুধু গণনা দেখে ঝুঁকিকে ছোট ভাবা।
তবু সমালোচনা আছে: ভোট মানুষের ভয় আর সাম্প্রতিক খবরের দিকে হেলতে পারে। তাই OWASP দুই উৎস মিলিয়েছে, শুধু একটির ওপর ভর করেনি, আর পদ্ধতিটিও প্রকাশ করেছে।
মূল উপলব্ধি: Data আর মানুষের বিচার একে অপরের অন্ধকার দিক ঢাকে। ভালো নিরাপত্তা সিদ্ধান্তে দুটোই লাগে, আর দুটোর সীমাও লিখে রাখতে হয়।
প্র ০৪Error সামলানো তো প্রোগ্রামিংয়ের পুরোনো বিষয়। A10 আলাদা বিভাগ হলো কেন?
কারণ error সামলানোর ভুল এতদিন ছড়িয়ে ছিল অন্য অনেক বিভাগে, অথবা “code quality” বলে ধরা হতো। A10 সেগুলোকে একটি root cause-এর নিচে এনেছে: অস্বাভাবিক অবস্থায় software কী করবে, তা কেউ ঠিক করেনি।
ধারণাটি পুরোনো। ১৯৭৫ সালে Saltzer ও Schroeder তাঁদের বিখ্যাত নিবন্ধে fail-safe defaults-এর কথা বলেন: অনুমতির সিদ্ধান্ত হবে বাদ দেওয়ার নয়, দেওয়ার ভিত্তিতে। ব্যর্থ হলে পথ বন্ধ থাকবে।
না সামলানো ব্যতিক্রমের দামও পুরোনো। ১৯৯৬ সালের ৪ জুন Ariane 5 রকেটের প্রথম উড্ডয়ন এক মিনিটের কম সময়ে ব্যর্থ হয়। তদন্ত রিপোর্ট অনুসারে একটি 64-bit সংখ্যাকে 16-bit-এ রূপান্তরের সময় overflow হয়, ব্যতিক্রমটি সেই জায়গায় ধরা ছিল না, আর পরপর দুই inertial reference system বন্ধ হয়ে যায়। কোডটি আগের রকেটে নিরাপদে চলত। নতুন পরিস্থিতিতে ধারণাটি ভেঙে গেল। এটি নিরাপত্তার ঘটনা ছিল না, কিন্তু শিক্ষা একই।
আধুনিক web app-এ এই ঝুঁকি আরও বেশি, কারণ একটি অর্ডারের পথে থাকে অনেক service, network আর বাইরের gateway. ব্যর্থতা এখন ব্যতিক্রম নয়, নিয়মিত ঘটনা। একটি লেনদেনের অর্ধেক ধাপ হলে টাকা কাটা গেল কিন্তু অর্ডার হলো না, অথবা উল্টোটি। তাই OWASP বলছে, লেনদেনের কোনো ধাপ ব্যর্থ হলে পুরোটা ফিরিয়ে আবার শুরু করুন। Race condition আর ভেতরের তথ্য ফাঁস করা error message-ও এখানে আসে।
রক্ষকের কাজ হলো ব্যর্থতার পথকেও একটি feature হিসেবে নকশা করা। টাইমআউট হলে কী? উত্তর ফাঁকা হলে কী? অনুমতি যাচাইয়ের service বন্ধ থাকলে কী? শেষ প্রশ্নের উত্তর অবশ্যই “প্রবেশ বন্ধ”।
মূল উপলব্ধি: বেশিরভাগ test আনন্দের পথ দেখে। হামলাকারী আর বাস্তব দুনিয়া দুজনেই দেখে ব্যর্থতার পথ। সেই পথের আচরণ আগে থেকে ঠিক করাই A10-এর মূল বার্তা।
প্র ০৫একটি মূল Top 10 দিয়ে কাজ চলে না কেন? API আর LLM-এর জন্য আলাদা তালিকা কি শুধু নাম বাড়ানো?
গোড়ার ভুল অনেক ক্ষেত্রেই এক, কিন্তু চেহারা, প্রতিরোধ আর গুরুত্ব আলাদা। তাই আলাদা তালিকা কাজে লাগে।
API-র কথাই ভাবুন। Browser-কেন্দ্রিক web app-এ server অনেক সময় পাতা বানিয়ে দেয়। আর API-তে client সরাসরি object চায়, যেখানে প্রতিটি id একটি দরজা। তাই API Security Top 10 (২০২৩)-এর API1 হলো Broken Object Level Authorization. এটি A01-এর পরিবারের, কিন্তু object-স্তরে আলাদা করে বলা হয়েছে, কারণ এখানেই ভুল বেশি। আবার API9 Improper Inventory Management এসেছে এই বাস্তবতা থেকে যে পুরোনো version-এর API চালু থেকে ভুলে যাওয়া যায়। মূল তালিকায় এটি এত নির্দিষ্টভাবে নেই।
LLM-এর ক্ষেত্রে নতুন বিষয় আছে। ২০২৬ তালিকার LLM01 Prompt Injection-এ ডেটা আর নির্দেশ মিশে যাওয়া Injection-এর আত্মীয়, কিন্তু parameterized query-র মতো পরিষ্কার সমাধান এখানে নেই, কারণ model একই পথে সব পড়ে। LLM03 Excessive Agency হলো least privilege-এর প্রশ্ন, এখন একটি agent-এর জন্য। LLM07 Misinformation-এর মতো বিভাগ আবার ক্লাসিক web তালিকায় নেই। ২০২৫ সালের ডিসেম্বরে agentic application-এর জন্যও OWASP GenAI প্রকল্প থেকে আলাদা তালিকার ঘোষণা এসেছে।
তবে একটি সতর্কতা। তালিকা বাড়লে দল শুধু তালিকা মিলিয়ে যেতে পারে, আর নিজের system-এর ঝুঁকি ভুলে যেতে পারে। ব্যবহারের ভালো পথ হলো threat model দিয়ে শুরু করা, তারপর প্রাসঙ্গিক তালিকা দিয়ে “কী বাদ পড়ল” দেখা। সব তালিকার ওপরে থাকে কয়েকটি চিরন্তন প্রশ্ন: কে চাইছেন, তিনি অনুমোদিত কি না, এই ডেটা কি আদেশ হয়ে যেতে পারে, ব্যর্থ হলে কী হবে।
মূল উপলব্ধি: তালিকা আসে-যায়, মূলনীতি থাকে। Least privilege, ডেটা ও আদেশের বিভাজন আর fail secure বুঝলে নতুন যেকোনো তালিকা আপনি দ্রুত পড়তে পারবেন।
অনুশীলন
খাতা আর কলম নিয়ে বসুন। কোডের ব্লক বদলে চালিয়েও নিজের উত্তর মেলাতে পারেন।
-
Incidence-এর হিসাব: ৪০০টি app পরীক্ষা হলো। CWE-X পাওয়া গেল ৮০টি app-এ, মোট ৬,০০০ বার। CWE-Y পাওয়া গেল ৪০টি app-এ, মোট ১২,০০০ বার। দুটির incidence rate কত? OWASP-এর গণনায় কোনটি ওপরে? আর ASVS 5.0-এ L1 থেকে L2-এ যেতে প্রায় কয়টি নতুন শর্ত যোগ হবে, মোট ৩৪৫-এর ৫০% ধরে?
CWE-X: ৮০ ÷ ৪০০ = ২০%. CWE-Y: ৪০ ÷ ৪০০ = ১০%. ঘটনায় Y দ্বিগুণ হলেও (১২,০০০ বনাম ৬,০০০) OWASP-এর গণনায় X ওপরে, কারণ X দ্বিগুণ app-এ আছে। ASVS-এ L2-এর নতুন অংশ ৩৪৫ × ০.৫০ ≈ ১৭২টি। OWASP নিজে “প্রায় ৫০%” বলে, তাই এটি আন্দাজ।
-
আউটপুট অনুমান করুন:
triage.js-এ F2-কেimpact: 3, reach: 2, proof: trueকরলে F2-র স্কোর আর priority কত হবে? কোন লাইনগুলো কোন ক্রমে ছাপা হবে, আর শেষsummaryলাইন কী হবে? সমান স্কোরে JavaScript-এরsortমূল ক্রম বজায় রাখে।স্কোর ৩ × ২ × ২ = ১২, তাই P1. F2 আর F3 দুটিরই ১২, আর মূল তালিকায় F2 আগে, তাই F2 আগে ছাপা হবে। F1-ও F7-এর আগে থাকবে:
P1 18 A01 F1 order page has no owner check P1 18 A10 F7 gateway timeout marks order paid P1 12 A01 F2 old report page open to all staff P1 12 A02 F3 debug page on public site P2 8 A09 F6 no alert on refund spike P2 6 A05 F5 coupon search joins text into query P3 2 A03 F4 flawed library, code path unused summary: {"P1":4,"P2":2,"P3":1} -
বিভাগ চিনুন: নিচের ত্রুটিগুলো Top 10:2025-এর কোন বিভাগে পড়ে? (ক) Session cookie-তে HttpOnly নেই (খ) কোডে hardcoded admin password (গ) Password hash-এ salt নেই (ঘ) Server ব্যবহারকারীর দেওয়া URL থেকে ফাইল আনে, গন্তব্য যাচাই ছাড়া (ঙ) Log-এ পুরো token লেখা হয় (চ) Reflected XSS.
(ক) A02, CWE-1004. (খ) A07, CWE-798. (গ) A04, CWE-759. (ঘ) A01, CWE-918, এটি SSRF. (ঙ) A09, CWE-532. (চ) A05, CWE-79. লক্ষ করুন, নাম শুনে আন্দাজ করলে (ক) A07 আর (ঙ) A02 মনে হতে পারে। তাই CWE দেখে মিলিয়ে নিন।
-
সমালোচনা করুন: একটি দলের পরিকল্পনা: “প্রতি বছর একবার scanner চালাব। দশটি বিভাগে কোনো finding না থাকলে ওয়েবসাইটে লিখব, আমরা OWASP Top 10 compliant. A01 সবার আগে সারাব, A10 সবার শেষে।” এই পরিকল্পনার অন্তত চারটি দুর্বলতা বলুন, আর একটি ভালো বিকল্প লিখুন।
- Scanner A06 আর A09-এর অনেকটাই দেখে না। ব্যবসার নিয়মের ফাঁকও দেখে না।
- বছরে একবার মানে এগারো মাস অন্ধ। প্রতিটি pipeline আর পরিবর্তনে যাচাই দরকার।
- “Compliant” দাবিটি ভুল, কারণ Top 10 যাচাইযোগ্য মান নয়।
- বিভাগের ক্রমে সারানো ভুল। F7-এর মতো A10-এর ত্রুটি P1 হতে পারে।
- False negative-এর হিসাব নেই। “কিছু পাওয়া যায়নি” মানে “কিছু নেই” নয়।
ভালো বিকল্প: অংশ ধরে ASVS level ঠিক করুন, প্রতিটি build-এ SAST ও SCA, staging-এ DAST, প্রতিটি feature-এ ছোট threat model, প্রতিটি PR-এ checklist, আর বছরে অন্তত একবার লিখিত অনুমতিসহ স্বাধীন penetration test. Finding সাজান প্রেক্ষাপট দেখে, আর প্রতিটির শেষে regression test.
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমএকটি নিরাপত্তা finding সামলানোর ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- অনুমোদিত পরিবেশে ত্রুটিটি পুনরায় দেখা ও নথিভুক্ত করা
- CWE আর Top 10 বিভাগে শ্রেণিবিন্যাস
- প্রেক্ষাপট দেখে অগ্রাধিকার ঠিক করা
- গোড়ার কারণ খুঁজে fix করা
- Regression test যোগ করা
- Log, alert আর অতীতের প্রমাণ দেখে ticket বন্ধ করা
OWASP Top 10:2025 অনুযায়ী সঠিক প্রথম তিনটি বিভাগ কোনটি?
- Broken Access Control, Cryptographic Failures, Injection
- Broken Access Control, Security Misconfiguration, Software Supply Chain Failures
- Injection, Broken Access Control, Insecure Design
- Authentication Failures, Injection, Security Logging and Alerting Failures
Top 10:2025 সংস্করণে Server-Side Request Forgery (SSRF) কোথায় গেছে?
- এখনো A10 বিভাগ হিসেবে আছে
- তালিকা থেকে পুরোপুরি বাদ পড়েছে
- Broken Access Control (A01)-এর ভেতরে
- Injection (A05)-এর ভেতরে
Payment gateway থেকে উত্তর না আসায় একটি কোড অর্ডারকে “paid” ধরে নিল। Top 10:2025-এ এটি মূলত কোন বিভাগে পড়ে?
- Cryptographic Failures
- Injection
- Security Misconfiguration
- Mishandling of Exceptional Conditions
১,০০০টি app পরীক্ষায় একটি CWE ২০০টি app-এ মোট ৪,০০০ বার পাওয়া গেল। OWASP Top 10-এর পদ্ধতিতে incidence rate কত?
- ২০%
- ৪০০%
- ২০টি
- ৫%
একটি প্রতিষ্ঠান জানতে চায়, তাদের আর্থিক app যাচাইযোগ্য কোন শর্ত পূরণ করছে। কোন OWASP দলিলটি সবচেয়ে উপযুক্ত?
- OWASP Top 10
- SAMM
- ASVS
- Proactive Controls
“আমাদের scanner-এ OWASP Top 10-এর কোনো finding নেই, তাই আমরা নিরাপদ।” এই দাবিটি কেন দুর্বল?
- Scanner কখনোই কোনো ত্রুটি ধরতে পারে না
- তালিকা পূর্ণ নয়, আর কিছু বিভাগ স্বয়ংক্রিয় পরীক্ষায় ধরা কঠিন
- Top 10 বাতিল হয়ে গেছে
- নিজের system-এ scanner চালানো সবসময় বেআইনি
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- Top 10 একটি সচেতনতা-তালিকা: পূর্ণ মান নয়, compliance তালিকা নয়, দশটি bug-ও নয়।
- ২০২৫: A01 Access Control, A02 Misconfiguration, A03 Supply Chain, A04 Crypto, A05 Injection, A06 Design, A07 Authentication, A08 Integrity, A09 Logging and Alerting, A10 Exceptional Conditions.
- তালিকা গোনে কত app-এ আছে, কতবার আছে তা নয়; আটটি data থেকে, দুটি survey থেকে।
- স্ক্যানার দেয় CWE, মানুষ ঠিক করেন অগ্রাধিকার। ক্রম আপনার কাজের ক্রম নয়।
- যাচাইয়ে ASVS, প্রতিষ্ঠানে SAMM; প্রতিটি finding শেষ হোক একটি regression test-এ।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ৩৮ · Broken access control — IDOR আর server-এ অনুমতি যাচাইপরবর্তী পর্বA01-এর গভীরে, মালিকানা যাচাইয়ের কোড আর test.
- সাইবার নিরাপত্তা · কোর্স হোম৮০টি পর্বপুরো কোর্সের রোডম্যাপ।
- পর্ব ৪ · Threat modelingআগের ভিত্তিSTRIDE আর attack surface, যা A06-এর প্রধান ওষুধ।
- পর্ব ৩২ · Vulnerability managementআগের ভিত্তিCVE, CWE, CVSS আর অগ্রাধিকারের পূর্ণ হিসাব।
- Code reviewপাশের ট্র্যাকদলের review-এর অভ্যাস আর চেকলিস্ট।
- DevSecOpsপাশের ট্র্যাকPipeline-এ নিরাপত্তা পরীক্ষা বসানো।