আমি একটি সিকিউরিটি টুল তৈরি করেছি। এটি নিজের মধ্যেই একটি মারাত্মক ত্রুটি খুঁজে পেয়েছে।
আমি একটি কোড সিকিউরিটি অ্যানালাইজার তৈরি করছি। আমি এর নাম দিয়েছি vibeanalyzer।
লক্ষ্যটি সহজ। বর্তমানে অনেকেই "vibe-code" করেন। তারা AI এজেন্টদের দিয়ে কোড লেখান। কোডটি দেখতে পরিষ্কার মনে হয়। টেস্টগুলোও পাস করে। কিন্তু প্রজেক্টের ভেতরে আসলে কী আছে সে সম্পর্কে ডেভেলপারের কোনো ধারণা থাকে না।
আমি পুরোপুরি কাজে ঝাঁপিয়ে পড়ার আগে এমন একটি কাজ করলাম যা অনেক আগেই করা উচিত ছিল। আমি যাচাই করে দেখলাম বিদ্যমান টুলগুলো ইতিমধ্যে এই সমস্যার সমাধান করেছে কি না। তারা করেছে। Semgrep, CodeQL এবং Snyk-এর মতো টুলগুলো আমার চেয়ে অনেক উন্নত।
আমি আমার নিজের প্রজেক্টে Semgrep চালিয়েছিলাম। ফলাফলটি ছিল একটি বাস্তবমুখী শিক্ষা (reality check)।
Semgrep আমার ডিপেন্ডেন্সিগুলোতে ছয়টি সমস্যা খুঁজে পেয়েছে:
• একটি হ্যাশ চয়েস সংক্রান্ত সামান্য (cosmetic) সমস্যা। • esbuild এবং vite-এ দুটি High severity সমস্যা। • path traversal সংক্রান্ত তিনটি Medium severity সমস্যা। • vitest-এ একটি Critical সমস্যা।
vitest-এর সমস্যাটি ছিল একটি path traversal ভালনারেবিলিটি (vulnerability)। এটি কাউকে প্রজেক্টের বাইরের ফাইল পড়তে বা এক্সিকিউট করতে সাহায্য করতে পারত। আমি নিজেই সেই ডিপেন্ডেন্সিটি যুক্ত করেছিলাম।
একটি সিকিউরিটি টুলের কীভাবে একটি মারাত্মক (critical) ভালনারেবিলিটি থাকতে পারে?
উত্তরটি হলো সাপ্লাই চেইন (supply chain)। আমার কোড হয়তো নির্ভুল হতে পারে। কিন্তু আমি যে টুলগুলোর ওপর ভিত্তি করে কাজ করছি সেগুলো সবসময় নিরাপদ নয়। আমি যদি একটি সিকিউরিটি টুল তৈরির সময় এটি মিস করে ফেলি, তবে একজন সাধারণ ডেভেলপারের পক্ষে এটি ধরা প্রায় অসম্ভব।
এই কারণেই আমি এখনও কাজ চালিয়ে যাচ্ছি।
Semgrep-এর মতো বিদ্যমান টুলগুলো বিপদের প্যাটার্ন খুঁজে পায়। তারা পরিচিত ভালনারেবিলিটিগুলো খুঁজে পায়। কিন্তু তারা 'উদ্দেশ্য' (intent) বুঝতে পারে না। আপনার কোডটি আসলে কী করার কথা ছিল, তা তারা জানে না।
একটি ফাংশন নিরাপদ হলেও সেটি আপনার প্রজেক্টে থাকা উচিত নয় এমন কোনো সমস্যার সমাধান করছে কি না, তা তারা বলতে পারে না।
আমি একে বলি 'intent gap'। এটি হলো কোড এবং এর উদ্দেশ্যের মধ্যকার ব্যবধান।
Vibeanalyzer এই ব্যবধানের ওপর গুরুত্ব দেয়। টুলটি আপনার কাছে প্রজেক্টের উদ্দেশ্য এবং এর 'non-goals' সম্পর্কে জানতে চায়। এটি গার্ডরেল (guardrails) সেট করে। যখন AI কোডটি মূল্যায়ন করে, তখন সে লক্ষ্যটি সম্পর্কে জানে। সে জানে কোনটি সীমার বাইরে।
আমি 'intent loading' অংশটি শেষ করেছি। আমার কাছে বেসিক TypeScript অ্যানালাইসিস এবং ফোল্ডার স্ট্রাকচার গ্রাফ রয়েছে। এরপর আমাকে AI লেয়ার তৈরি করতে হবে। আমি জানি না AI সত্যিই উদ্দেশ্যের ভিত্তিতে কোড মূল্যায়ন করতে পারবে কি না। এটি হয়তো শুধু ভুল অ্যালার্ম (false alarms) তৈরি করতে পারে। আমি এটি সবার সামনে (in the open) তৈরি করব দেখার জন্য।
আমি আমার ডিপেন্ডেন্সিগুলো আপডেট করেছি এবং পরিচিত বাগগুলো দূর করেছি। কিন্তু অজানা ত্রুটি এবং লজিক এরর (logic errors) রয়ে গেছে। এই কারণেই কাজ চলতেই থাকবে।
Optional learning community: https://t.me/GyaanSetuAi
