ম্যানুয়ালি কোড পড়া একটি সময়সাপেক্ষ প্রক্রিয়া। এটি ত্রুটি-প্রবণ, কারণ এটি গুরুত্বপূর্ণ বিবরণ মিস করা সহজ। বিকাশকারী এবং অনুপ্রবেশ পরীক্ষক হিসাবে, আমাদের এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করার একটি উপায় খুঁজে বের করতে হবে। SAST হল একটি কৌশল যা আমাদের এই কাজে সাহায্য করতে পারে।
SAST একটি রূপালী বুলেট নয়। ওপেন-সোর্স প্রোজেক্ট বা হোয়াইট-বক্স পেনিট্রেশন টেস্টিংয়ের জন্য সোর্স কোডে অ্যাক্সেস সহ ব্যবহারের ক্ষেত্রে এটি ব্যবহারযোগ্য। যাইহোক, এটি আপনাকে কিছু কম ঝুলন্ত ফল খুঁজে পেতে এবং সময় বাঁচাতে সাহায্য করতে পারে।
স্ট্যাটিক অ্যাপ্লিকেশন সিকিউরিটি টেস্টিং (SAST) হল স্ট্যাটিক কোড বিশ্লেষণের একটি উপসেট যা কোডের নিরাপত্তা এবং নির্ভরযোগ্যতা বাড়াতে ব্যবহৃত হয়। SAST পুরানো নির্ভরতা, গোপন সনাক্তকরণ, যৌক্তিক ত্রুটি যা দুর্বলতার দিকে পরিচালিত করে এবং আরও অনেক কিছু সনাক্ত করে। SAST-এর মধ্যে এমন পরীক্ষা অন্তর্ভুক্ত রয়েছে যা সাইবার নিরাপত্তাকে গৌণভাবে প্রভাবিত করে, যেমন ভিজ্যুয়াল কোড জটিলতা, কোড অস্পষ্টতা এবং অ-স্বজ্ঞাত অনুশীলন যা দুর্বলতার দিকে নিয়ে যেতে পারে।
SAST সরঞ্জামগুলি সাধারণত স্টেরয়েডগুলিতে রেজেক্স প্যাটার্ন ম্যাচার যা কোডে পরিচিত দুর্বলতাগুলি সন্ধান করে৷ উদাহরণস্বরূপ, একটি SAST টুল পাইথন কোডে eval
, exec
, বা pickle
এর ব্যবহার খুঁজতে পারে, এই ফাংশনগুলি ইচ্ছামত কোড চালানোর জন্য ব্যবহার করা যেতে পারে।
আমি SAST-এ আমার পদ্ধতিকে তিনটি বিভাগে ভাগ করব:
দুর্বলতা সনাক্তকরণ : আমি কোডে আক্রমণ ভেক্টর খুঁজে পেতে Semgrep , Bandit , Nodejsscan- এর মতো টুল ব্যবহার করি। আপনি সাধারণত কম ঝুলন্ত ফলগুলি খুঁজে পেতে পারেন যেমন অস্বাস্থ্যকর ইনপুট, খারাপ ক্রিপ্টোগ্রাফি বা দুর্বল লাইব্রেরি। যাইহোক, Semgrep PRO সংস্করণে আরও নিয়ম রয়েছে; প্রকল্পে 10 জনের বেশি বিকাশকারী না থাকলে এটি বিনামূল্যে।
গোপন সনাক্তকরণ : Gitleaks , Trufflehog , বা Grep আপনাকে কোডের গোপনীয়তা খুঁজে পেতে সাহায্য করতে পারে। এটি গুরুত্বপূর্ণ কারণ গোপনীয়তাগুলি বিশেষাধিকার বাড়াতে বা সংবেদনশীল ডেটা অ্যাক্সেস করতে ব্যবহার করা যেতে পারে। সাধারণত, ডাটাবেস সংযোগ স্ট্রিং, API কী, বা পাসওয়ার্ড কোডে সংরক্ষণ করা হয়।
মিসকনফিগারেশন : চেকভ বা ট্রিভির মতো টুল আপনাকে ভুল কনফিগারেশন খুঁজে পেতে সাহায্য করতে পারে। ভুল কনফিগারেশনগুলি সাধারণত "কোড হিসাবে অবকাঠামো" (IaC) ফাইলগুলিতে থাকে তবে কোডের মধ্যেও হতে পারে। একটি উদাহরণ হল একটি ভুল কনফিগার করা ডকার-কম্পোজ ফাইল যা ইন্টারনেটে একটি ডাটাবেস প্রকাশ করে। ডকারফাইলস স্ক্যান করার জন্য, আমি হ্যাডোলিন্ট এবং গ্রাইপের সংমিশ্রণের পরামর্শ দিই
SAST টুল নিখুঁত নয়। তারা আপনাকে মিথ্যা ইতিবাচক এবং মিথ্যা নেতিবাচক দেবে। **তবে, এলোমেলোভাবে কিছু অ্যাপ্লিকেশন ব্যবহার করার তুলনায় এটি অনেক সময় সাশ্রয় করে। আমি আমার অনুপ্রবেশ পরীক্ষার ব্যস্ততা এবং প্রতিযোগিতায় SAST টুল ব্যবহার করেছি। এটি আমাকে কোডবেস দিয়ে শুরু করতে সাহায্য করেছে এবং দুর্বলতাগুলি কোথায় দেখতে হবে সে সম্পর্কে আমাকে কিছু ইঙ্গিত দিয়েছে।
আমি আপনাকে হ্যাক দ্য বক্স দিয়ে শুরু করার পরামর্শ দিচ্ছি। এই প্ল্যাটফর্মটি চ্যালেঞ্জ অফার করে, যেমন সোর্স কোড পাওয়া এবং দুর্বলতা খুঁজে বের করা। তারপর, একটি বাস্তব মেশিনে তাদের শোষণ. অনুশীলনে SAST সরঞ্জামগুলি কীভাবে ব্যবহার করতে হয় তা শেখার এটি একটি দুর্দান্ত উপায়।
অথবা, আপনি যদি একজন ডেভেলপার হন, আপনি আপনার CI/CD পাইপলাইনে SAST টুল ব্যবহার করতে পারেন। এইভাবে, আপনি সরঞ্জাম এবং তাদের আউটপুট ব্যবহার করতে পারেন. একই সাথে, আপনি আপনার অ্যাপ্লিকেশনের নিরাপত্তা উন্নত করবেন।
আমি আপনাকে SAST এবং গোপন সনাক্তকরণের সাথে শুরু করতে সহায়তা করার জন্য গাইডের একটি তালিকা প্রস্তুত করেছি। এই নির্দেশিকাগুলি আমার থিসিসের অংশ হিসাবে লেখা হয়েছে এবং SAST সরঞ্জামগুলিতে আগ্রহী যে কারও জন্য এটি একটি দুর্দান্ত সূচনা পয়েন্ট।
গোপনীয়তা সনাক্ত করার সময়, মনে রাখবেন: হ্যাকাররা এটি জানলে এটি কোনও গোপন বিষয় নয়। এমনকি পাকা ডেভেলপাররাও দূরবর্তী উৎস নিয়ন্ত্রণে ভুলবশত পাসওয়ার্ড বা সংযোগ স্ট্রিং পুশ করতে পারে। বিভিন্ন সরঞ্জাম ব্যবহার করে, এই নির্দেশিকা এই ঝুঁকি কমানোর জন্য দ্রুত এবং সহজ পদ্ধতিগুলি অফার করে৷
এই নির্দেশিকা প্রি-কমিট হুক এবং CI/CD পাইপলাইন ব্যবহার করে গোপন সনাক্তকরণ বোঝার উপর ফোকাস করে। যদিও কোডটি প্রাথমিকভাবে গিটল্যাবের উপর ফোকাস করে, শেষ বিভাগটিও গিটহাবকে কভার করবে।
এই নির্দেশিকাটি দক্ষতার সাথে গিটল্যাবে স্ট্যাটিক অ্যাপ্লিকেশন সিকিউরিটি টেস্টিং (SAST) শুরু করার পদক্ষেপগুলির রূপরেখা দেয়। SAST হল একটি প্রক্রিয়া যা সম্ভাব্য দুর্বলতা সনাক্ত করতে স্ট্যাটিক কোড বিশ্লেষণ ব্যবহার করে।
এই চিটশিট কোড (IaC) আর্টিফ্যাক্ট হিসাবে পরিকাঠামো স্ক্যান করার জন্য সহায়ক সরঞ্জামগুলি উপস্থাপন করে এবং কীভাবে সেগুলিকে আপনার CI/CD পাইপলাইনে একীভূত করতে হয় তার উদাহরণ প্রদান করে৷
আমি গোলং-এ একটি কাস্টম টুল তৈরি করেছি যা আমাকে বিশাল কোডবেসের বিরুদ্ধে দ্রুত রেজেক্স মেলতে সাহায্য করে।
নির্ভুলতা এবং প্রকরণের মধ্যে একটি অসীম ট্রেডঅফ রয়েছে।
ধরুন আপনার আরও বৈচিত্র্যের প্রয়োজন এবং আরও ম্যানুয়াল পর্যালোচনাতে কিছু মনে করবেন না। সেক্ষেত্রে, আপনি RegFinder চেষ্টা করতে পারেন, যা grep
মতো কিন্তু গোপন সনাক্তকরণের জন্য আরও উপযুক্ত (বড় রিপোতে দ্রুত, পরিষ্কার আউটপুট, কিছু ফাইল এক্সটেনশন উপেক্ষা করে)। অথবা আপনি সরাসরি grep ব্যবহার করতে পারেন। রেপোতে রেজেক্সগুলি সবচেয়ে মূল্যবান , আপনি যে টুলটি ব্যবহার করবেন তা নয়।
grep -n -r your_app/ -Ef regex_dir/general.txt
চালানবা
./regfinder.elf -d your_app/ -f regex_dir/general.txt
চালানবিদ্যমান রেজেক্স প্যাটার্নগুলি প্রসারিত করা সহজ। এই টুলটি স্বয়ংক্রিয় পাইপলাইনের জন্য সম্ভব নয়। যাইহোক, যদি আপনাকে একটি অ-মানক গোপন বা অন্যান্য মূল্যায়ন যেমন নিরাপত্তা পর্যালোচনা, যেখানে আরও ম্যানুয়াল কাজ প্রত্যাশিত হয় তা খুঁজে বের করার প্রয়োজন হলে এটি কার্যকর হয়৷
আপনার যদি অন্যান্য সরঞ্জামগুলির সাথে দুর্দান্ত অভিজ্ঞতা থাকে তবে মন্তব্য করুন । পড়ার জন্য আপনাকে ধন্যবাদ.