ਮੈਂ ਆਪਣੇ ਸਾਈਡ ਪ੍ਰੋਜੈਕਟਾਂ ਦੀ ਸੁਰੱਖਿਆ ਲਈ ਆਡਿਟ ਕੀਤਾ — ਇੱਥੇ ਮੈਨੂੰ ਜੋ ਮਿਲਿਆ ਉਹ ਹੈ

ਮੈਂ ਹਾਲ ਹੀ ਵਿੱਚ ਆਪਣੇ ਸਾਰੇ ਸਾਈਡ ਪ੍ਰੋਜੈਕਟਾਂ ਦਾ ਆਡਿਟ ਕੀਤਾ। ਮੈਂ ਆਪਣੇ FastAPI backends, Telegram bots, ਅਤੇ web apps ਦੀ ਜਾਂਚ ਕੀਤੀ। ਮੈਨੂੰ ਲੱਗਦਾ ਸੀ ਕਿ ਮੈਂ ਸਾਵਧਾਨ ਹਾਂ।

ਮੈਂ ਗਲਤ ਸੀ।

ਮੈਨੂੰ ਅਸਲੀ ਬੱਗ ਮਿਲੇ ਜੋ ਮੈਂ ਅਸਲ ਵਿੱਚ production ਵਿੱਚ ਭੇਜ ਦਿੱਤੇ ਸਨ। ਇਹ ਕੋਈ ਸਿਧਾਂਤਕ ਸਮੱਸਿਆਵਾਂ ਨਹੀਂ ਹਨ। ਇਹ ਉਹ ਗਲਤੀਆਂ ਹਨ ਜੋ ਮੈਂ ਤੇਜ਼ੀ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਕੀਤੀਆਂ ਸਨ।

ਇੱਥੇ ਉਹ ਮੁੱਖ ਸਮੱਸਿਆਵਾਂ ਹਨ ਜੋ ਮੈਨੂੰ ਮਿਲੀਆਂ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਕਿਵੇਂ ਸੁਧਾਰਨਾ ਹੈ:

  1. ਕੰਡੀਸ਼ਨਲ ਅਥੈਂਟੀਕੇਸ਼ਨ (Conditional Authentication) ਮੈਂ ਅਜਿਹਾ ਕੋਡ ਲਿਖਿਆ ਸੀ ਜੋ ਸਿਰਫ਼ ਉਦੋਂ ਹੀ API keys ਦੀ ਜਾਂਚ ਕਰਦਾ ਸੀ ਜੇਕਰ ਕੋਈ secret ਮੌਜੂਦ ਹੋਵੇ। ਜੇਕਰ ਮੈਂ ਆਪਣੇ environment ਵਿੱਚ secret ਸੈੱਟ ਕਰਨਾ ਭੁੱਲ ਗਿਆ, ਤਾਂ ਜਾਂਚ ਪੂਰੀ ਤਰ੍ਹਾਂ ਛੱਡ ਦਿੱਤੀ ਜਾਂਦੀ ਸੀ। ਇਸ ਨਾਲ ਮੇਰੀ API ਹਰ ਕਿਸੇ ਲਈ ਖੁੱਲ੍ਹੀ ਰਹਿ ਗਈ।
  1. Git History ਵਿੱਚ Keys ਦਾ ਲੀਕ ਹੋਣਾ ਮੈਨੂੰ ਆਪਣੀ Git history ਵਿੱਚ ਪੁਰਾਣੀਆਂ API keys ਮਿਲੀਆਂ। ਮੈਂ ਬਾਅਦ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ .env ਫਾਈਲਾਂ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਸੀ, ਪਰ Git ਤੁਹਾਡੇ ਕੋਡ ਦੇ ਹਰ ਪੁਰਾਣੇ ਵਰਜ਼ਨ ਨੂੰ ਹਮੇਸ਼ਾ ਲਈ ਰੱਖਦਾ ਹੈ।
  1. ਬਚੇ ਹੋਏ Debug Endpoints ਮੈਂ production ਵਿੱਚ ਅਜਿਹੇ endpoints ਛੱਡ ਦਿੱਤੇ ਸਨ ਜੋ ਮੇਰੀ database configuration ਅਤੇ system settings ਦਿਖਾਉਂਦੇ ਸਨ। ਇਹ development ਦੌਰਾਨ ਮਦਦਗਾਰ ਹੁੰਦੇ ਹਨ ਪਰ ਅਸਲ ਵਰਤੋਂ ਵਿੱਚ ਖ਼ਤਰਨਾਕ ਹਨ।
  1. ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਵਾਲੇ Error Messages ਮੈਂ ਯੂਜ਼ਰ ਨੂੰ ਸਿੱਧੇ (raw) system errors ਵਾਪਸ ਭੇਜ ਰਿਹਾ ਸੀ। ਇਹ errors ਤੁਹਾਡੇ file paths, database types, ਅਤੇ library versions ਨੂੰ ਪ੍ਰਗਟ ਕਰਦੇ ਹਨ। ਇੱਕ Attacker ਇਸ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਤੁਹਾਡੇ ਸਿਸਟਮ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬਣਾਉਣ ਲਈ ਕਰ ਸਕਦਾ ਹੈ।
  1. innerHTML ਰਾਹੀਂ XSS ਮੈਂ ਆਪਣੇ frontend ਵਿੱਚ user data ਨੂੰ ਰੈਂਡਰ ਕਰਨ ਲਈ innerHTML ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ। ਇਹ attackers ਨੂੰ ਤੁਹਾਡੀ ਸਾਈਟ ਵਿੱਚ scripts ਇੰਜੈਕਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
  1. Rate Limiting ਦੀ ਘਾਟ ਮੇਰੇ ਕੋਲ ਅਜਿਹੇ endpoints ਸਨ ਜੋ ਬਿਨਾਂ ਕਿਸੇ ਸੀਮਾ ਦੇ ਮਹਿੰਗੇ AI models ਨੂੰ ਕਾਲ ਕਰਦੇ ਸਨ। ਇੱਕ ਯੂਜ਼ਰ ਕੁਝ ਹੀ ਮਿੰਟਾਂ ਵਿੱਚ ਇੱਕ ਬਹੁਤ ਵੱਡਾ ਬਿੱਲ ਬਣਾ ਸਕਦਾ ਸੀ।
  1. Permissive CORS Settings ਮੈਂ ਆਪਣੇ middleware ਵਿੱਚ allow_origins=["*"] ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ। ਇਹ ਕਿਸੇ ਵੀ ਵੈੱਬਸਾਈਟ ਨੂੰ ਤੁਹਾਡੀ API ਨੂੰ ਰਿਕਵੈਸਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
  1. ਫਾਈਲ ਲੀਕੇਜ ਮੈਂ ਅਜਿਹਾ ਕੋਡ ਲਿਖਿਆ ਸੀ ਜੋ ਅਸਥਾਈ ਫਾਈਲਾਂ ਬਣਾਉਂਦਾ ਸੀ ਪਰ ਜੇਕਰ ਪ੍ਰੋਸੈਸ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਸੀ ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਡਿਲੀਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ। ਇਹ ਫਾਈਲਾਂ ਤੁਹਾਡੇ ਸਰਵਰ 'ਤੇ ਹਮੇਸ਼ਾ ਲਈ ਰਹਿ ਜਾਂਦੀਆਂ ਹਨ।

ਸੁਰੱਖਿਆ ਸਮੱਸਿਆਵਾਂ ਬਹੁਤ ਘੱਟ ਹੀ ਜਾਣਬੁੱਝ ਕੇ ਹੁੰਦੀਆਂ ਹਨ। ਇਹ "ਮੈਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਠੀਕ ਕਰ ਲਵਾਂਗਾ" ਕਹਿਣ ਦਾ ਨਤੀਜਾ ਹੁੰਦੀਆਂ ਹਨ। ਉਹ 'ਬਾਅਦ' ਕਦੇ ਨਹੀਂ ਆਉਂਦਾ।

ਪਹਿਲੇ ਦਿਨ ਤੋਂ ਹੀ ਆਪਣੇ ਵਰਕਫਲੋ ਵਿੱਚ ਸੁਰੱਖਿਆ ਨੂੰ ਸ਼ਾਮਲ ਕਰੋ। ਕੋਡ ਨੂੰ ਕਮਿਟ ਕਰਨ ਅਤੇ ਡਿਪਲੋਏ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੀ ਜਾਂਚ ਕਰੋ।

ਸਰੋਤ: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb