.env ਫਾਈਲਾਂ ਅਤੇ ਡਿਬੱਗ ਲੌਗਸ (debug logs) ਜਨਤਕ ਇੰਟਰਨੈੱਟ 'ਤੇ ਉਪਲਬਧ ਰਹਿਣ ਕਾਰਨ 669 ਵੈਂਡਰਾਂ ਦੀਆਂ 1,033 ਲਾਈਵ Stripe ਸੀਕਰੇਟ ਕੀਜ਼ (secret keys) ਉਜਾਗਰ ਹੋ ਗਈਆਂ। ਇਹ ਕੀਜ਼ ਕਿਸੇ ਨੂੰ ਵੀ ਚਾਰਜਿਸ ਕਰਨ, ਇਨਵੌਇਸ ਕੱਢਣ ਅਤੇ ਗਾਹਕਾਂ ਦੇ ਵੇਰਵੇ ਇਕੱਠੇ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀਆਂ ਹਨ - ਇੱਕ ਅਜਿਹੀ ਉਲੰਘਣਾ ਜੋ ਕੁਝ ਹੀ ਮਿੰਟਾਂ ਵਿੱਚ ਬਟੂਏ ਖਾਲੀ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਨਾਮ ਨੂੰ ਬਰਬਾਦ ਕਰ ਸਕਦੀ ਹੈ।
ਲੀਕ ਦਾ ਕਾਰਨ ਕੀ ਸੀ
ਡਿਵੈਲਪਰ ਰੋਜ਼ਾਨਾ ਕੰਮ ਵਿੱਚ ਕੌਂਫਿਗਰੇਸ਼ਨ ਡੇਟਾ - ਜਿਵੇਂ ਕਿ ਡੇਟਾਬੇਸ ਪਾਸਵਰਡ, API ਟੋਕਨ ਅਤੇ Stripe ਸੀਕਰੇਟ ਕੀਜ਼ - ਨੂੰ .env ਨਾਮਕ ਫਾਈਲ ਵਿੱਚ ਸਟੋਰ ਕਰਦੇ ਹਨ। ਇਹ ਫਾਈਲ ਸੋਰਸ ਕੋਡ ਦੇ ਨਾਲ ਹੁੰਦੀ ਹੈ ਅਤੇ ਕੋਡਬੇਸ ਤੋਂ ਸੀਕਰੇਟਸ ਨੂੰ ਦੂਰ ਰੱਖਣ ਲਈ ਰਨ-ਟਾਈਮ (runtime) 'ਤੇ ਪੜ੍ਹੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਤਰੀਕਾ ਉਦੋਂ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ ਜੇਕਰ ਸਰਵਰ ਕਦੇ ਵੀ ਅਜਿਹੀਆਂ ਫਾਈਲਾਂ ਨਾ ਦੇਵੇ ਜੋ ਡੌਟ (.) ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀਆਂ ਹਨ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਗਲਤ ਤਰੀਕੇ ਨਾਲ ਕੌਂਫਿਗਰ ਕੀਤੇ ਗਏ ਵੈੱਬ ਸਰਵਰਾਂ (Nginx ਅਤੇ Apache ਦੋਵੇਂ) ਨੇ “/.env”, “/.env.example”, “/.git/HEAD” ਅਤੇ ਇੱਕ ਕਸਟਮ “/debug” ਐਂਡਪੁਆਇੰਟ ਲਈ ਬੇਨਤੀਆਂ (requests) ਨੂੰ 200 OK ਸਟੇਟਸ ਦੇ ਨਾਲ ਰੂਅ ਫਾਈਲ ਵਾਪਸ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ।
ਇਹ ਲੀਕ Stripe ਦੇ ਪਲੇਟਫਾਰਮ ਵਿੱਚ ਕਿਸੇ ਕਮਜ਼ੋਰੀ ਕਾਰਨ ਨਹੀਂ ਸੀ, ਅਤੇ ਨਾ ਹੀ ਕਿਸੇ ਖਾਸ ਈ-ਕਾਮਰਸ ਪਲੱਗਇਨ ਵਿੱਚ ਕਿਸੇ ਖਾਮੀ ਕਾਰਨ ਸੀ। ਇਹ ਸਿਰਫ਼ ਉਨ੍ਹਾਂ ਫਾਈਲਾਂ ਦਾ ਉਜਾਗਰ ਹੋਣਾ ਸੀ ਜੋ ਦੁਨੀਆ ਲਈ ਅਦਿੱਖ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਸਨ।
ਇਹ ਉਜਾਗਰ ਹੋਣਾ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ
Stripe ਸੀਕਰੇਟ ਕੀ ਅਸਲ ਵਿੱਚ ਇੱਕ ਮਰਚੈਂਟ ਦੇ ਭੁਗਤਾਨ ਪ੍ਰਣਾਲੀ ਲਈ ਮਾਸਟਰ ਪਾਸਵਰਡ ਵਾਂਗ ਹੁੰਦੀ ਹੈ। ਜਿਸ ਕੋਲ ਵੀ ਇਹ ਹੈ, ਉਹ ਕਰ ਸਕਦਾ ਹੈ:
- ਸਟੋਰ ਕੀਤੇ ਕਾਰਡਾਂ 'ਤੇ ਮਨਮਾਨੇ ਚਾਰਜਿਸ ਕਰਨਾ
- ਇਨਵੌਇਸ ਅਤੇ ਪੇਆਉਟ ਇਤਿਹਾਸ ਪ੍ਰਾਪਤ ਕਰਨਾ
- ਨਿੱਜੀ ਡੇਟਾ ਕੱਢਣਾ – ਨਾਮ, ਈਮੇਲ, ਫ਼ੋਨ ਨੰਬਰ, ਘਰ ਦੇ ਪਤੇ, IP ਪਤੇ
- ਮੁਫ਼ਤ ਜਾਂ ਛੋਟ ਵਾਲੀਆਂ ਖਰੀਦਾਂ ਲਈ ਪ੍ਰੋਮੋਸ਼ਨਲ ਕੋਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਲੀਕ ਹੋਏ ਡੇਟਾ ਸੈੱਟ ਵਿੱਚ ਉਪਰੋਕਤ ਸਾਰੀਆਂ ਚੀਜ਼ਾਂ ਦੇ ਨਾਲ-ਨਾਲ ਪੇਆਉਟ ਵੇਰਵੇ ਵੀ ਸ਼ਾਮਲ ਸਨ, ਜੋ ਇਹ ਦੱਸਦੇ ਹਨ ਕਿ ਹਰੇਕ ਵੈਂਡਰ ਨੇ ਕਿੰਨੀ ਕਮਾਈ ਕੀਤੀ। ਇੱਕ ਕਾਰੋਬਾਰ ਲਈ, ਤੁਰੰਤ ਖ਼ਤਰਾ ਧੋਖਾਧੜੀ ਵਾਲੇ ਲੈਣ-ਦੇਣ ਹਨ ਜੋ ਚਾਰਜਬੈਕ (chargebacks) ਪੈਦਾ ਕਰਦੇ ਹਨ, ਗਾਹਕਾਂ ਦੇ ਭਰੋਸੇ ਦੀ ਕਮੀ, ਅਤੇ PCI-DSS, GDPR ਜਾਂ ਹੋਰ ਡੇਟਾ-ਪ੍ਰਾਈਵੇਸੀ ਨਿਯਮਾਂ ਦੇ ਤਹਿਤ ਸੰਭਾਵੀ ਜੁਰਮਾਨੇ ਹਨ। ਲੰਬੇ ਸਮੇਂ ਦਾ ਖਰਚਾ ਕਿਤੇ ਜ਼ਿਆਦਾ ਹੋ ਸਕਦਾ ਹੈ: ਕਾਨੂੰਨੀ ਫੀਸਾਂ, ਸੁਧਾਰ ਖਰਚੇ, ਅਤੇ ਇੱਕ ਖ਼ਰਾਬ ਹੋਇਆ ਬ੍ਰਾਂਡ ਜੋ ਸ਼ਾਇਦ ਕਦੇ ਵੀ ਸੁਧਰ ਨਾ ਸਕੇ।
ਤੇਜ਼ ਟੈਸਟ: ਕੀ ਤੁਹਾਡੀ .env ਉਜਾਗਰ ਹੈ?
ਇੱਕ ਟਰਮੀਨਲ ਖੋਲ੍ਹੋ ਅਤੇ yourdomain.com ਨੂੰ ਆਪਣੇ ਹੋਸਟ ਨਾਮ ਨਾਲ ਬਦਲੋ:
for p in "/.env" "/.env.example" "/.git/HEAD" "/debug"; do
echo -n "$p -> "
curl -s -o /dev/null -w "%{http_code}\n" "https://yourdomain.com$p"
done
ਹਰ ਲਾਈਨ ਨੂੰ 403 (forbidden) ਜਾਂ 404 (not found) ਰਿਟਰਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। 200 ਰਿਸਪਾਂਸ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਫਾਈਲ ਜਨਤਕ ਤੌਰ 'ਤੇ ਪੜ੍ਹੀ ਜਾ ਸਕਦੀ ਹੈ – ਇਹ ਇੱਕ ਗੰਭੀਰ ਸੁਰੱਖਿਆ ਘਟਨਾ ਹੈ ਜਿਸ ਵੱਲ ਤੁਰੰਤ ਧਿਆਨ
ਜੇਕਰ ਕੋਈ ਡੌਟਫਾਈਲ ਬ੍ਰਾਊਜ਼ਰ ਰਾਹੀਂ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਤਾਂ ਤੁਹਾਡਾ ਭੁਗਤਾਨ ਸਿਸਟਮ ਪਹਿਲਾਂ ਹੀ ਕੰਪ੍ਰੋਮਾਈਜ਼ ਹੋ ਚੁੱਕਾ ਹੈ – ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਧੋਖਾਧੜੀ ਤੁਹਾਡੇ ਲੈਜਰ ਤੱਕ ਪਹੁੰਚੇ, ਫਾਈਲ ਨੂੰ ਬਲੌਕ ਕਰੋ, ਕੀ (key) ਨੂੰ ਰੋਟੇਟ ਕਰੋ, ਅਤੇ ਆਪਣੇ ਸੀਕਰੇਟ-ਹੈਂਡਲਿੰਗ ਵਰਕਫਲੋ ਨੂੰ ਮੁੜ ਡਿਜ਼ਾਈਨ ਕਰੋ।
