HackCert
Intermediate 10 min read May 25, 2026

Code Review: সোর্স কোডের লুকায়িত বাগ এবং নিরাপত্তা দুর্বলতা শনাক্ত করার পদ্ধতি!

সিকিউর কোড রিভিউয়ের কৌশল, টুলস এবং প্রক্রিয়া—কীভাবে সোর্স কোডে লুকিয়ে থাকা vulnerability খুঁজে বের করবেন।

Imran Hossain Chowdhury
Application Security Engineer
share
Code Review: সোর্স কোডের লুকায়িত বাগ এবং নিরাপত্তা দুর্বলতা শনাক্ত করার পদ্ধতি!
Overview

একটি প্রতিষ্ঠানের সবচেয়ে মূল্যবান সম্পদ যদি হয় তার সোর্স কোড, তবে সেই কোডের ভেতরে লুকিয়ে থাকা একটি ছোট বাগও পুরো ব্যবসা ধ্বংস করে দিতে পারে। Equifax-এর ১৪ কোটি ৭০ লক্ষ গ্রাহকের ডেটা ফাঁস হয়েছিল Apache Struts-এর একটি single deserialization vulnerability-র কারণে। Log4Shell আক্রমণ পৃথিবীর প্রায় ৩৫ শতাংশ servers-কে প্রভাবিত করেছিল কারণ একটি জনপ্রিয় logging library-তে একটি ভয়াবহ flaw ছিল। এই দৃশ্যপটে Code Review একটি প্রক্রিয়া হিসেবে শুধু code quality উন্নয়নের মাধ্যম নয়, বরং সাইবার নিরাপত্তার একটি অপরিহার্য defense layer। আজকের আলোচনায় আমরা জানবো কীভাবে systematic ভাবে code review করে hidden bug ও security vulnerability শনাক্ত করা যায়।

Code Review আসলে কী

Code Review হলো একটি systematic প্রক্রিয়া যেখানে একজন developer-এর লেখা code অন্য একজন বা একদল developer পরীক্ষা করেন। এর প্রধান উদ্দেশ্যগুলো হলো bug detection, security flaw identification, code quality improvement, এবং knowledge sharing।

Security-focused code review-এ আমরা বিশেষভাবে এমন pattern খুঁজি যেগুলো OWASP Top 10, CWE Top 25, বা SANS Top 25-এর মতো known vulnerability category-তে পড়ে। SQL Injection, XSS, Insecure Deserialization, Authentication Bypass, Cryptographic Failure—এই সব এই category-র অন্তর্ভুক্ত।

Microsoft-এর একটি গবেষণা দেখিয়েছে যে production-এ পৌঁছানোর আগে code review-এর মাধ্যমে ৬০ শতাংশের বেশি defect ধরা পড়ে। NIST-এর মতে, code review production-এ bug fix করার তুলনায় ৬-১০ গুণ সস্তা।

Code Review-এর প্রধান ধরন

বিভিন্ন context-এ বিভিন্ন ধরনের code review করা হয়।

Peer Review: Same team-এর একজন developer অন্যজনের code review করেন। এটি সবচেয়ে সাধারণ এবং GitHub Pull Request-এর মাধ্যমে স্বাভাবিক workflow-এ অন্তর্ভুক্ত।

Formal Inspection: Fagan Inspection নামে পরিচিত, একটি structured meeting-এ multiple reviewer code পরীক্ষা করেন। সময়সাপেক্ষ কিন্তু critical system-এর জন্য কার্যকর।

Tool-Assisted Review: SAST (Static Application Security Testing) tool যেমন SonarQube, Checkmarx, Veracode-এর মাধ্যমে automated review।

Pair Programming: Two developer একসাথে code লেখেন, একজন লেখেন আর অন্যজন real-time review করেন।

Security Code Review: Application security expert বিশেষভাবে security vulnerability-এর জন্য review করেন।

External Audit: Third-party expert বা consultant দিয়ে code audit করানো। Compliance বা high-stakes application-এর জন্য করা হয়।

SAST, DAST ও IAST

Automated security testing tool-এর তিনটি প্রধান category আছে।

SAST (Static Application Security Testing): Source code analyze করে vulnerability খুঁজে। কোড execute না করেই pattern matching, data flow analysis, এবং taint analysis-এর মাধ্যমে কাজ করে। Tools: SonarQube, Checkmarx, Semgrep, Fortify, CodeQL।

DAST (Dynamic Application Security Testing): Running application-কে external attacker-এর দৃষ্টিকোণ থেকে test করে। Black-box testing-এর মতো। Tools: OWASP ZAP, Burp Suite, Acunetix।

IAST (Interactive Application Security Testing): Application runtime-এ instrumentation এর মাধ্যমে কাজ করে। SAST ও DAST-এর সুবিধা একত্রিত। Tools: Contrast Security, Seeker।

SCA (Software Composition Analysis): Third-party library ও dependency-তে known vulnerability খুঁজে। Tools: Snyk, Dependabot, OWASP Dependency-Check।

Modern DevSecOps pipeline-এ এই সব tool একসাথে ব্যবহার করা হয়, প্রতিটি stage-এ ভিন্ন purpose serve করে।

প্রধান Vulnerability Pattern চিনতে শেখা

একজন security code reviewer হিসেবে কিছু common vulnerability pattern চিনতে পারা অপরিহার্য।

SQL Injection: User input সরাসরি SQL query-তে concatenate হলে এটি ঘটে।

# Vulnerable
query = f"SELECT * FROM users WHERE id = {user_id}"

# Secure
query = "SELECT * FROM users WHERE id = %s"
cursor.execute(query, (user_id,))

Cross-Site Scripting (XSS): User input HTML output-এ properly escape না করলে।

// Vulnerable
element.innerHTML = userInput;

// Secure
element.textContent = userInput;

Command Injection: User input shell command-এ ব্যবহার হলে।

# Vulnerable
os.system(f"ping {user_input}")

# Secure
subprocess.run(["ping", user_input], check=True)

Insecure Deserialization: Untrusted data deserialize করলে remote code execution হতে পারে।

# Vulnerable
data = pickle.loads(user_input)

# Secure
data = json.loads(user_input)

Path Traversal: User input file path-এ properly validate না করলে।

# Vulnerable
open(f"/var/data/{filename}")

# Secure
filename = os.path.basename(filename)
filepath = os.path.join("/var/data", filename)
if not filepath.startswith("/var/data/"):
    raise ValueError("Invalid path")

Hardcoded Secrets: API key, password code-এ hardcoded থাকলে।

# Vulnerable
AWS_KEY = "AKIA1234567890"

# Secure
AWS_KEY = os.environ.get("AWS_KEY")

Insecure Cryptography: Weak algorithm বা improper usage।

# Vulnerable
hashlib.md5(password.encode()).hexdigest()

# Secure
bcrypt.hashpw(password.encode(), bcrypt.gensalt())

Code Review-এর Systematic Approach

কার্যকর code review-এর জন্য একটি structured approach প্রয়োজন।

1. Threat Modeling First: Review শুরু করার আগে application-এর threat model বুঝুন। কোন data sensitive, কোন endpoint exposed, কী attack surface—এগুলো জানা থাকলে focus area চিহ্নিত করা সহজ।

2. Context বুঝুন: Pull Request-এর description, related ticket, design document পড়ুন। কোডটি কী সমস্যা solve করছে তা না বুঝে review করলে গুরুত্বপূর্ণ flaw miss হতে পারে।

3. Entry Points চিহ্নিত করুন: User input কোথা থেকে আসছে—API endpoint, form field, file upload, query parameter? প্রতিটি entry point-এ taint analysis করুন।

4. Trust Boundaries বুঝুন: কোথায় trusted ও untrusted code আলাদা হচ্ছে? Trust boundary cross করার সময় কী validation হচ্ছে?

5. Data Flow Analysis: Untrusted data কোন path দিয়ে sensitive sink (database, file system, OS command, browser) পর্যন্ত পৌঁছাচ্ছে?

6. Authentication ও Authorization Check: প্রতিটি sensitive operation-এ proper auth check আছে কি? IDOR (Insecure Direct Object Reference) check করুন।

7. Error Handling Review: Error message-এ কি sensitive information leak হচ্ছে? Exception properly catch করা হচ্ছে?

8. Cryptography Review: Weak algorithm, hardcoded key, improper randomness—এসব flaw খুঁজুন।

9. Dependencies পরীক্ষা: কোন third-party library ব্যবহৃত হচ্ছে এবং সেগুলোতে known vulnerability আছে কি?

10. Logging ও Audit: Security-relevant event log হচ্ছে কি? কিন্তু password, token এসব log-এ যাচ্ছে না তো?

OWASP Top 10 ও CWE Top 25

Code review-এ এই দুটি framework মুখস্থ রাখা গুরুত্বপূর্ণ।

OWASP Top 10 (2021):

  1. Broken Access Control
  2. Cryptographic Failures
  3. Injection
  4. Insecure Design
  5. Security Misconfiguration
  6. Vulnerable and Outdated Components
  7. Identification and Authentication Failures
  8. Software and Data Integrity Failures
  9. Security Logging and Monitoring Failures
  10. Server-Side Request Forgery (SSRF)

CWE Top 25 (2024): MITRE-এর Common Weakness Enumeration থেকে সবচেয়ে dangerous software weakness-এর তালিকা। CWE-79 (XSS), CWE-787 (Out-of-bounds Write), CWE-89 (SQL Injection), CWE-352 (CSRF), CWE-22 (Path Traversal) ইত্যাদি শীর্ষে আছে।

জনপ্রিয় Code Review Tools

কিছু widely used tool-এর সংক্ষিপ্ত পরিচয়।

Semgrep: Lightweight, pattern-based SAST tool। Custom rule লেখা সহজ। Open-source।

SonarQube: Comprehensive code quality ও security analysis platform। ৩০+ language support।

CodeQL (GitHub): GitHub-এর powerful semantic analysis engine। Open-source repository-তে free।

Snyk: Dependency vulnerability scanning-এ শক্তিশালী। CI/CD integration সহজ।

Bandit: Python-specific SAST tool।

ESLint Security Plugin: JavaScript-এর জন্য।

Brakeman: Ruby on Rails-এর জন্য specialized।

Gitleaks/TruffleHog: Hardcoded secret detection-এ specialized।

বাস্তব উদাহরণ ও Famous Bugs

Heartbleed (CVE-2014-0160): OpenSSL-এ একটি missing bounds check-এর কারণে server memory থেকে sensitive data leak হতো। শিক্ষা: C-তে memory management code review করার সময় bounds check অত্যন্ত গুরুত্বপূর্ণ।

Apache Struts CVE-2017-5638 (Equifax Breach): Struts framework-এ OGNL expression-এর improper handling-এর কারণে RCE হতো। Code review-এ deserialization ও expression evaluation-কে বিশেষ scrutiny দিতে হবে।

Log4Shell (CVE-2021-44228): Log4j-এ JNDI lookup feature exploit করে RCE। শিক্ষা: Logging framework-ও untrusted input কে strictly handle করতে হবে।

Polyfill.io Supply Chain Attack (2024): Popular CDN compromise হয়ে malicious JavaScript serve করছিল। শিক্ষা: External script integrity check (SRI) ব্যবহার করুন।

Code Review এর Soft Skills

Technical দক্ষতার পাশাপাশি কিছু soft skill-ও জরুরি।

Constructive Feedback: Code নিয়ে comment করুন, developer নিয়ে নয়। "এই code খারাপ" নয়, "এই অংশে SQL injection-এর ঝুঁকি আছে, parameterized query ব্যবহার করুন" বলুন।

Ask Questions: Direct accusation না করে প্রশ্ন করুন। "এই input কি validate করা হয়েছে কোথাও?" এর মতো প্রশ্ন reviewer ও developer উভয়ের জন্য learning opportunity।

Prioritize Issues: সব issue সমান গুরুত্বপূর্ণ নয়। Critical security flaw, major bug, code style—এগুলো আলাদা করে চিহ্নিত করুন।

Time Box: একটানা ৬০-৯০ মিনিটের বেশি review করলে concentration কমে যায়। ছোট ছোট session-এ ভাগ করুন।

প্রতিরোধ ও সর্বোত্তম অনুশীলন

কার্যকর code review program গড়ে তুলতে নিচের অনুশীলনগুলো অনুসরণ করুন।

Shift Left Security: Production-এর পরিবর্তে development phase-এ security check করুন। CI/CD pipeline-এ SAST integrate করুন।

Pull Request Size Limit: ৪০০ line-এর বেশি PR review করা কঠিন। Small, focused PR-এর সংস্কৃতি গড়ে তুলুন।

Security Champions Program: প্রতিটি team-এ একজন security champion নির্ধারণ করুন যিনি security knowledge অন্যদের সাথে share করবেন।

Secure Coding Training: Developer-দের নিয়মিত OWASP, secure coding-এর training দিন।

Checklist ব্যবহার: Reviewer-দের জন্য standardized checklist তৈরি করুন।

Threat Modeling: Design phase-এই threat modeling করুন। STRIDE, PASTA-এর মতো methodology ব্যবহার করুন।

Continuous Improvement: Production-এ পাওয়া security incident-এর postmortem করুন এবং সেই learning code review process-এ feedback দিন।

Bug Bounty Program: External researcher-দের সাহায্য নিন যারা আপনার team-এর miss করা bug খুঁজে দিতে পারে।

Key Takeaways

Code Review সাইবার নিরাপত্তার সবচেয়ে cost-effective defense mechanism-এর একটি। Software-এর জটিলতা যেহেতু দিন দিন বাড়ছে, একক developer-এর পক্ষে সব security pitfall এড়ানো প্রায় অসম্ভব। একাধিক চোখের চাহনি, automated tool-এর সহায়তা, এবং structured process-এর মাধ্যমেই hidden vulnerability শনাক্ত করা সম্ভব। মনে রাখবেন, একটি ভালো code reviewer শুধু error খুঁজে না, বরং অন্যদের শেখায়, code quality উন্নত করে, এবং একটি healthy engineering culture গড়ে তোলে। SAST, DAST, SCA-এর মতো automated tool যতই উন্নত হোক, human reviewer-এর intuition ও context understanding-এর কোনো বিকল্প নেই। আজই আপনার team-এ structured security code review চালু করুন এবং দেখুন কীভাবে আপনার application-এর security posture দ্রুত উন্নত হয়।

আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Code Review MCQ Quiz-টি দিন!

Related articles

back to all articles