నేను ఒక సెక్యూరిటీ టూల్‌ను రూపొందించాను. అది తనలోనే ఒక క్లిష్టమైన లోపాన్ని కనుగొంది.

నేను ఒక కోడ్ సెక్యూరిటీ అనలైజర్‌ను రూపొందిస్తున్నాను. దీనికి vibeanalyzer అని పేరు పెట్టాను.

దీని లక్ష్యం చాలా సరళమైనది. ప్రస్తుతం చాలా మంది "vibe-code" చేస్తున్నారు. వారు AI ఏజెంట్లను కోడ్ రాయనిస్తున్నారు. కోడ్ చూడటానికి శుభ్రంగా ఉంటుంది. టెస్ట్‌లు కూడా పాస్ అవుతాయి. కానీ ప్రాజెక్ట్‌లో అసలు లోపల ఏముందో డెవలపర్‌కు తెలియదు.

నేను దీనిపై పూర్తి స్థాయిలో దృష్టి పెట్టకముందే, నేను చాలా కాలం క్రితమే చేయాల్సింది ఒకటి చేశాను. ఇప్పటికే ఉన్న టూల్స్ ఈ సమస్యను పరిష్కరించాయా అని పరిశీలించాను. అవి పరిష్కరించాయి. Semgrep, CodeQL, మరియు Snyk వంటి టూల్స్ నాకంటే చాలా మెరుగ్గా ఉన్నాయి.

నేను నా స్వంత ప్రాజెక్ట్‌పై Semgrep రన్ చేశాను. ఫలితాలు వాస్తవ పరిస్థితులను నాకు స్పష్టంగా చూపించాయి.

Semgrep నా డిపెండెన్సీలలో ఆరు సమస్యలను కనుగొంది:

• హ్యాష్ ఎంపికలో ఒక కాస్మెటిక్ సమస్య. • esbuild మరియు vite లలో రెండు High severity సమస్యలు. • path traversal కి సంబంధించిన మూడు Medium severity సమస్యలు. • vitest లో ఒక Critical సమస్య.

vitest సమస్య ఒక path traversal వల్నరబిలిటీ. ఇది ప్రాజెక్ట్ వెలుపల ఉన్న ఫైళ్లను ఎవరైనా చదవడానికి లేదా ఎగ్జిక్యూట్ చేయడానికి అవకాశం కల్పిస్తుంది. ఆ డిపెండెన్సీని నేనే స్వయంగా తీసుకున్నాను.

ఒక సెక్యూరిటీ టూల్‌లో క్లిష్టమైన లోపం (critical vulnerability) ఎలా ఉండగలదు?

దీనికి సమాధానం సప్లై చైన్ (supply chain). నా కోడ్ నిజాయితీగా ఉండవచ్చు. కానీ నేను నిర్మించే టూల్స్ ఎప్పుడూ సురక్షితంగా ఉండకపోవచ్చు. ఒక సెక్యూరిటీ టూల్‌ను నిర్మిస్తున్నప్పుడు కూడా నేను దీనిని గమనించలేకపోతే, ఒక సాధారణ డెవలపర్ దీనిని గుర్తించే అవకాశం అస్సలు ఉండదు.

అందుకే నేను ఇంకా దీనిని నిర్మిస్తూనే ఉన్నాను.

Semgrep వంటి ప్రస్తుతం ఉన్న టూల్స్ ప్రమాదకరమైన ప్యాటర్న్‌లను గుర్తిస్తాయి. అవి తెలిసిన వల్నరబిలిటీలను కనుగొంటాయి. కానీ అవి ఉద్దేశాన్ని (intent) అర్థం చేసుకోలేవు. మీ కోడ్ అసలు ఏం చేయాలనుకుంటుందో వాటికి తెలియదు.

ఒక ఫంక్షన్ సురక్షితంగా ఉన్నప్పటికీ, అది మీ ప్రాజెక్ట్‌లో ఉండకూడదు అనుకున్న సమస్యను పరిష్కరిస్తుంటే, వాటికి తెలియదు.

దీనిని నేను 'intent gap' అని పిలుస్తాను. ఇది కోడ్ మరియు దాని ఉద్దేశ్యం మధ్య ఉన్న దూరం.

Vibeanalyzer ఈ గ్యాప్‌పై దృష్టి పెడుతుంది. ఈ టూల్ ప్రాజెక్ట్ యొక్క ఉద్దేశ్యం (intent) మరియు దాని లక్ష్యం కాని అంశాల (non-goals) గురించి మిమ్మల్ని అడుగుతుంది. ఇది గార్డ్‌రైల్స్‌ను (guardrails) ఏర్పాటు చేస్తుంది. AI కోడ్‌ను విశ్లేషించినప్పుడు, దానికి లక్ష్యం ఏమిటో తెలుస్తుంది. ఏది పరిధి దాటిందో దానికి తెలుస్తుంది.

నేను intent loading భాగాన్ని పూర్తి చేశాను. నా వద్ద ప్రాథమిక TypeScript అనాలిసిస్ మరియు ఫోల్డర్ స్ట్రక్చర్ గ్రాఫ్‌లు ఉన్నాయి. తదుపరి, నేను AI లేయర్‌ను నిర్మించాలి. ఉద్దేశ్యానికి (intent) అనుగుణంగా AI నిజంగా కోడ్‌ను విశ్లేషించగలదో లేదో నాకు తెలియదు. అది కేవలం తప్పుడు అలారమ్‌లను (false alarms) సృష్టించవచ్చు. తెలుసుకోవడానికి నేను దీనిని బహిరంగంగా (in the open) నిర్మిస్తాను.

నేను నా డిపెండెన్సీలను అప్‌డేట్ చేశాను మరియు తెలిసిన బగ్‌లను తొలగించాను. కానీ తెలియని లోపాలు మరియు లాజిక్ ఎర్రర్స్ ఇంకా ఉన్నాయి. అందుకే ఈ పని కొనసాగుతోంది.

Source: https://dev.to/stkremen/im-building-a-code-security-analyzer-a-security-tool-found-a-critical-in-it-4b77

Optional learning community: https://t.me/GyaanSetuAi