ਮੈਂ ਇੱਕ ਸੁਰੱਖਿਆ ਟੂਲ ਬਣਾਇਆ। ਇਸ ਨੇ ਆਪਣੇ ਆਪ ਵਿੱਚ ਹੀ ਇੱਕ ਗੰਭੀਰ ਖਾਮੀ ਲੱਭ ਲਈ।
ਮੈਂ ਇੱਕ code security analyzer ਬਣਾ ਰਿਹਾ ਹਾਂ। ਮੈਂ ਇਸਨੂੰ vibeanalyzer ਕਹਿੰਦਾ ਹਾਂ।
ਮਕਸਦ ਸਾਫ਼ ਹੈ। ਅੱਜਕੱਲ੍ਹ ਬਹੁਤ ਸਾਰੇ ਲੋਕ "vibe-code" ਕਰਦੇ ਹਨ। ਉਹ AI agents ਨੂੰ ਕੋਡ ਲਿਖਣ ਦਿੰਦੇ ਹਨ। ਕੋਡ ਸਾਫ਼-ਸੁਥਰਾ ਲੱਗਦਾ ਹੈ। ਟੈਸਟ ਪਾਸ ਹੋ ਜਾਂਦੇ ਹਨ। ਪਰ ਡਿਵੈਲਪਰ ਨੂੰ ਇਸ ਗੱਲ ਦਾ ਕੋਈ ਅੰਦਾਜ਼ਾ ਨਹੀਂ ਹੁੰਦਾ ਕਿ ਪ੍ਰੋਜੈਕਟ ਦੇ ਅੰਦਰ ਅਸਲ ਵਿੱਚ ਕੀ ਚੱਲ ਰਿਹਾ ਹੈ।
ਪੂਰੀ ਤਰ੍ਹਾਂ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਮੈਂ ਉਹ ਕੰਮ ਕੀਤਾ ਜੋ ਮੈਨੂੰ ਬਹੁਤ ਪਹਿਲਾਂ ਕਰ ਲੈਣਾ ਚਾਹੀਦਾ ਸੀ। ਮੈਂ ਚੈੱਕ ਕੀਤਾ ਕਿ ਕੀ ਮੌਜੂਦਾ ਟੂਲਸ ਨੇ ਪਹਿਲਾਂ ਹੀ ਇਸ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਲੱਭ ਲਿਆ ਹੈ। ਉਹਨਾਂ ਨੇ ਲੱਭ ਲਿਆ ਸੀ। Semgrep, CodeQL, ਅਤੇ Snyk ਵਰਗੇ ਟੂਲਸ ਮੇਰੇ ਨਾਲੋਂ ਕਿਤੇ ਬਿਹਤਰ ਹਨ।
ਮੈਂ ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ 'ਤੇ Semgrep ਚਲਾਇਆ। ਨਤੀਜਿਆਂ ਨੇ ਮੈਨੂੰ ਅਸਲੀਅਤ ਦਾ ਅਹਿਸਾਸ ਕਰਵਾ ਦਿੱਤਾ।
Semgrep ਨੇ ਮੇਰੀਆਂ dependencies ਵਿੱਚ ਛੇ ਸਮੱਸਿਆਵਾਂ ਲੱਭੀਆਂ:
• ਹੈਸ਼ (hash) ਦੀ ਚੋਣ ਨਾਲ ਸਬੰਧਤ ਇੱਕ cosmetic issue। • esbuild ਅਤੇ vite ਵਿੱਚ ਦੋ High severity ਸਮੱਸਿਆਵਾਂ। • path traversal ਨਾਲ ਸਬੰਧਤ ਤਿੰਨ Medium severity ਸਮੱਸਿਆਵਾਂ। • vitest ਵਿੱਚ ਇੱਕ Critical ਸਮੱਸਿਆ।
vitest ਵਾਲੀ ਸਮੱਸਿਆ ਇੱਕ path traversal vulnerability ਸੀ। ਇਹ ਕਿਸੇ ਨੂੰ ਪ੍ਰੋਜੈਕਟ ਤੋਂ ਬਾਹਰ ਦੀਆਂ ਫਾਈਲਾਂ ਪੜ੍ਹਨ ਜਾਂ ਚਲਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੀ ਸੀ। ਮੈਂ ਖੁਦ ਉਹ dependency ਸ਼ਾਮਲ ਕੀਤੀ ਸੀ।
ਇੱਕ ਸੁਰੱਖਿਆ ਟੂਲ ਵਿੱਚ ਗੰਭੀਰ vulnerability ਕਿਵੇਂ ਹੋ ਸਕਦੀ ਹੈ?
ਇਸਦਾ ਜਵਾਬ ਹੈ supply chain। ਮੇਰਾ ਕੋਡ ਸ਼ਾਇਦ ਸਹੀ ਹੋਵੇ। ਪਰ ਜਿਨ੍ਹਾਂ ਟੂਲਸ 'ਤੇ ਮੈਂ ਨਿਰਮਾਣ ਕਰ ਰਿਹਾ ਹਾਂ, ਉਹ ਹਮੇਸ਼ਾ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੁੰਦੇ। ਜੇਕਰ ਮੈਂ ਇੱਕ ਸੁਰੱਖਿਆ ਟੂਲ ਬਣਾ
