ನಾನು ಒಂದು ಸೆಕ್ಯೂರಿಟಿ ಟೂಲ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಅದು ತನ್ನಲ್ಲೇ ಒಂದು ಗಂಭೀರವಾದ ಲೋಪವನ್ನು ಪತ್ತೆಹಚ್ಚಿತು.

ನಾನು ಒಂದು ಕೋಡ್ ಸೆಕ್ಯೂರಿಟಿ ಅನಲೈಜರ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದೇನೆ. ನಾನು ಅದಕ್ಕೆ vibeanalyzer ಎಂದು ಹೆಸರಿಸಿದ್ದೇನೆ.

ಇದರ ಗುರಿ ಸರಳವಾಗಿದೆ. ಈಗ ಅನೇಕ ಜನರು "vibe-code" ಮಾಡುತ್ತಿದ್ದಾರೆ. ಅವರು AI ಏಜೆಂಟ್‌ಗಳನ್ನು ಕೋಡ್ ಬರೆಯಲು ಬಿಡುತ್ತಾರೆ. ಕೋಡ್ ನೋಡಲು ಸ್ವಚ್ಛವಾಗಿ ಕಾಣುತ್ತದೆ. ಟೆಸ್ಟ್‌ಗಳು ಪಾಸಾಗುತ್ತವೆ. ಆದರೆ ಪ್ರಾಜೆಕ್ಟ್‌ನ ಒಳಗೆ ವಾಸ್ತವವಾಗಿ ಏನಿದೆ ಎಂಬ ಬಗ್ಗೆ ಡೆವಲಪರ್‌ಗೆ ಯಾವುದೇ idea ಇರುವುದಿಲ್ಲ.

ನಾನು ಪೂರ್ಣ ಪ್ರಮಾಣದಲ್ಲಿ ಕೆಲಸ ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಬಹಳ ಹಿಂದೆಯೇ ಮಾಡಬೇಕಾಗಿದ್ದ ಒಂದು ಕೆಲಸವನ್ನು ಮಾಡಿದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಟೂಲ್‌ಗಳು ಈಗಾಗಲೇ ಇದನ್ನು ಪರಿಹರಿಸಿವೆಯೇ ಎಂದು ನಾನು ಪರಿಶೀಲಿಸಿದೆ. ಅವು ಪರಿಹರಿಸಿದ್ದವು. 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 ನಂತಹ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಟೂಲ್‌ಗಳು ಅಪಾಯದ ಮಾದರಿಗಳನ್ನು (patterns) ಪತ್ತೆಹಚ್ಚುತ್ತವೆ. ಅವು ತಿಳಿದಿರುವ vulnerabilities ಅನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತವೆ. ಆದರೆ ಅವು ಉದ್ದೇಶವನ್ನು (intent) ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದಿಲ್ಲ. ನಿಮ್ಮ ಕೋಡ್ ವಾಸ್ತವವಾಗಿ ಏನು ಮಾಡಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸಲಾಗಿತ್ತು ಎಂಬುದು ಅವುಗಳಿಗೆ ತಿಳಿದಿರುವುದಿಲ್ಲ.

ಒಂದು ಫಂಕ್ಷನ್ ಸುರಕ್ಷಿತವಾಗಿದ್ದರೂ ಸಹ, ಅದು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿ ಇರಬಾರದು ಎನ್ನುವ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತಿದ್ದರೆ ಅದನ್ನು ಅವು ಗುರುತಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

ನಾನು ಇದನ್ನು 'intent gap' ಎಂದು ಕರೆಯುತ್ತೇನೆ. ಇದು ಕೋಡ್ ಮತ್ತು ಅದರ ಉದ್ದೇಶದ ನಡುವಿನ ಅಂತರವಾಗಿದೆ.

Vibeanalyzer ಈ ಅಂತರದ ಮೇಲೆ ಗಮನ ಹರಿಸುತ್ತದೆ. ಈ ಟೂಲ್ ನಿಮ್ಮ ಬಳಿ ಪ್ರಾಜೆಕ್ಟ್‌ನ ಉದ್ದೇಶ (intent) ಮತ್ತು ಅದರ ಗುರಿ కాని ವಿಷಯಗಳ (non-goals) ಬಗ್ಗೆ ಕೇಳುತ್ತದೆ. ಇದು guardrails ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ. AI ಕೋಡ್ ಅನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿದಾಗ, ಅದಕ್ಕೆ ಗುರಿ ತಿಳಿದಿರುತ್ತದೆ. ಯಾವುದು ಮಿತಿಯ ಹೊರಗಿದೆ ಎಂಬುದು ಅದಕ್ಕೆ ತಿಳಿದಿರುತ್ತದೆ.

ನಾನು intent loading ಭಾಗವನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೇನೆ. ನನ್ನ ಬಳಿ ಮೂಲಭೂತ TypeScript analysis ಮತ್ತು folder structure graphs ಇವೆ. ಮುಂದೆ, ನಾನು AI layer ಅನ್ನು ನಿರ್ಮಿಸಬೇಕು. ಉದ್ದೇಶಕ್ಕೆ (intent) ವಿರುದ್ಧವಾಗಿ AI ನಿಜವಾಗಿಯೂ ಕೋಡ್ ಅನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಲ್ಲದೇ ಎಂಬುದು ನನಗೆ ತಿಳಿದಿಲ್ಲ. ಇದು ಕೇವಲ ತಪ್ಪು ಎಚ್ಚರಿಕೆಗಳನ್ನು (false alarms) ನೀಡಬಹುದು. ಅದನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಾನು ಇದನ್ನು ಬಹಿರಂಗವಾಗಿ (in the open) ನಿರ್ಮಿಸುತ್ತೇನೆ.

ನಾನು ನನ್ನ dependencies ಅನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಿದೆ ಮತ್ತು ತಿಳಿದಿರುವ ಬಗ್‌ಗಳನ್ನು ಸರಿಪಡಿಸಿದೆ. ಆದರೆ ತಿಳಿಯದ ಲೋಪಗಳು ಮತ್ತು logic errors ಇಂದಿಗೂ ಉಳಿದಿವೆ. ಅದಕ್ಕಾಗಿಯೇ ಕೆಲಸ ಮುಂದುವರಿಯುತ್ತಿದೆ.

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

ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi