મેં એક સિક્યુરિટી ટૂલ બનાવ્યું. તેણે તેમાં જ એક ગંભીર ખામી શોધી કાઢી.
હું એક કોડ સિક્યુરિટી એનાલાઈઝર બનાવી રહ્યો છું. હું તેને vibeanalyzer કહું છું.
ધ્યેય સરળ છે. ઘણા લોકો હવે "vibe-code" કરે છે. તેઓ AI એજન્ટ્સને કોડ લખવા દે છે. કોડ ચોખ્ખો દેખાય છે. ટેસ્ટ પાસ થાય છે. પરંતુ ડેવલપરને ખબર જ નથી હોતી કે પ્રોજેક્ટની અંદર ખરેખર શું છે.
હું આમાં પૂરેપૂરો ઉતરી પડ્યો તે પહેલાં, મેં કંઈક એવું કર્યું જે મારે ઘણા સમય પહેલા કરી લેવું જોઈતું હતું. મેં તપાસ્યું કે શું હાલના ટૂલ્સ આ સમસ્યાનું સમાધાન કરી દે છે. તેઓ કરી રહ્યા હતા. Semgrep, CodeQL અને Snyk જેવા ટૂલ્સ મારા કરતા ઘણું સારું છે.
મેં મારા પોતાના પ્રોજેક્ટ પર Semgrep ચલાવ્યું. તેના પરિણામોએ વાસ્તવિકતાનો અહેસાસ કરાવ્યો.
Semgrep એ મારી dependencies માં છ સમસ્યાઓ શોધી કાઢી:
• હેશની પસંદગીમાં એક કોસ્મેટિક (દેખાવ સંબંધિત) સમસ્યા. • esbuild અને vite માં બે High severity સમસ્યાઓ. • path traversal સાથે સંકળાયેલી ત્રણ Medium severity સમસ્યાઓ. • vitest માં એક Critical સમસ્યા.
vitest ની સમસ્યા એક path traversal vulnerability હતી. તે કોઈને પ્રોજેક્ટની બહારની ફાઇલો વાંચવા અથવા એક્ઝિક્યુટ કરવા દેઈ શકે છે. મેં પોતે જ તે dependency ઉમેરી હતી.
એક સિક્યુરિટી ટૂલમાં ગંભીર vulnerability કેવી રીતે હોઈ શકે?
જવાબ છે supply chain. મારો કોડ કદાચ પ્રમાણિક હોઈ શકે છે. પરંતુ જે ટૂલ્સ પર હું નિર્માણ કરું છું તે હંમેશા સુરક્ષિત હોતા નથી. જો સિક્યુરિટી ટૂલ બનાવતી વખતે મારાથી આ ચૂકી ગયું હોય, તો એક સામાન્ય ડેવલપર માટે તેને પકડવાની શક્યતા શૂન્ય છે.
આ જ કારણ છે કે હું હજુ પણ નિર્માણ કરી રહ્યો છું.
Semgrep જેવા હાલના ટૂલ્સ જોખમના પેટર્ન શોધી કાઢે છે. તેઓ જાણીતી vulnerabilities શોધી કાઢે છે. પરંતુ તેઓ intent (હેતુ) ને સમજતા નથી. તેઓ જાણતા નથી કે તમારો કોડ ખરેખર શું કરવા માટે હતો.
તેઓ એ નથી કહી શકતા કે કોઈ ફંક્શન સુરક્ષિત છે પરંતુ તે એવી સમસ્યાનું સમાધાન કરે છે જે તમારા પ્રોજેક્ટમાં હોવી જ ન જોઈએ.
હું આને intent gap કહું છું. તે કોડ અને તેના હેતુ વચ્ચેનું અંતર છે.
Vibeanalyzer આ અંતર પર ધ્યાન કેન્દ્રિત કરે છે. આ ટૂલ તમને પ્રોજેક્ટનો intent અને તેના non-goals વિશે પૂછે છે. તે guardrails સેટ કરે છે. જ્યારે AI કોડનું મૂલ્યાંકન કરે છે, ત્યારે તેને ધ્યેય ખબર હોય છે. તેને ખબર હોય છે કે શું મર્યાદાની બહાર છે.
મેં intent loading નો ભાગ પૂર્ણ કરી લીધો છે. મારી પાસે મૂળભૂત TypeScript analysis અને folder structure graphs છે. હવે, મારે AI layer બનાવવી પડશે. મને ખબર નથી કે AI ખરેખર intent સામે કોડનું મૂલ્યાંકન કરી શકશે કે નહીં. તે કદાચ માત્ર false alarms જ આપશે. આ જાણવા માટે હું તેને ઓપનલી બનાવીશ.
મેં મારી dependencies અપડેટ કરી અને જાણીતી બગ્સ દૂર કરી. પરંતુ અજાણી ખામીઓ અને લોજિકલ ભૂલો હજુ પણ બાકી છે. એટલા માટે જ કામ ચાલુ છે.
Optional learning community: https://t.me/GyaanSetuAi
