.env ಫೈಲ್ಗಳು ಮತ್ತು ಡಿಬಗ್ ಲಾಗ್ಗಳು ಸಾರ್ವಜನಿಕ ಇಂಟರ್ನೆಟ್ನಲ್ಲಿ ಲಭ್ಯವಿರುವಂತೆ ಬಿಡಿದ್ದರಿಂದ 669 ಮಾರಾಟಗಾರರಿಂದ 1,033 ಲೈವ್ Stripe ಸೀಕ್ರೆಟ್ ಕೀಗಳು ಬಹಿರಂಗಗೊಂಡಿವೆ. ಈ ಕೀಗಳು ಯಾರೇ ಆಗಿದ್ದರೂ ಚಾರ್ಜ್ಗಳನ್ನು ರಚಿಸಲು, ಇನ್ವಾಯ್ಸ್ಗಳನ್ನು ಪಡೆಯಲು ಮತ್ತು ಗ್ರಾಹಕರ ವಿವರಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತವೆ – ಇದು ಕೆಲವೇ ನಿಮಿಷಗಳಲ್ಲಿ ಹಣವನ್ನು ಖಾಲಿ ಮಾಡಬಹುದು ಮತ್ತು ಪ್ರತಿಷ್ಠೆಯನ್ನು ಹಾಳುಮಾಡಬಹುದು.
ಸೋರಿಕೆಗೆ ಕಾರಣವೇನು
ಡೆವಲಪರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಾನ್ಫಿಗರೇಶನ್ ಡೇಟಾ – ಡೇಟಾಬೇಸ್ ಪಾಸ್ವರ್ಡ್ಗಳು, API ಟೋಕನ್ಗಳು ಮತ್ತು Stripe ಸೀಕ್ರೆಟ್ ಕೀಗಳನ್ನು – .env ಎಂಬ ಹೆಸರಿನ ಫೈಲ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುತ್ತಾರೆ. ಈ ಫೈಲ್ ಸೋರ್ಸ್ ಕೋಡ್ನ ಜೊತೆಗೆ ಇರುತ್ತದೆ ಮತ್ತು ಸೀಕ್ರೆಟ್ಗಳನ್ನು ಕೋಡ್ಬೇಸ್ನಿಂದ ಹೊರಗಿಡಲು ರನ್ಟೈಮ್ನಲ್ಲಿ ಇದನ್ನು ಓದಲಾಗುತ್ತದೆ. ಸರ್ವರ್ ಎಂದಿಗೂ ಡಾಟ್ (.) ಇಂದ ಪ್ರಾರಂಭವಾಗುವ ಫೈಲ್ಗಳನ್ನು ನೀಡದಿದ್ದರೆ ಮಾತ್ರ ಈ ಪದ್ಧತಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ವೆಬ್ ಸರ್ವರ್ಗಳು (Nginx ಮತ್ತು Apache ಎರಡೂ) “/.env”, “/.env.example”, “/.git/HEAD” ಮತ್ತು ಒಂದು ಕಸ್ಟಮ್ “/debug” ಎಂಡ್ಪಾಯಿಂಟ್ಗಾಗಿ ಮಾಡಿದ ವಿನಂತಿಗಳಿಗೆ (requests) 200 OK ಸ್ಟೇಟಸ್ನೊಂದಿಗೆ ರಾವ್ ಫೈಲ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿದವು.
ಈ ಸೋರಿಕೆಯು Stripe ಪ್ಲಾಟ್ಫಾರ್ಮ್ನಲ್ಲಿನ ದೌರ್ಬಲ್ಯದಿಂದ ಅಥವಾ ಯಾವುದೇ ನಿರ್ದಿಷ್ಟ ಇ-ಕಾಮರ್ಸ್ ಪ್ಲಗಿನ್ನ ದೋಷದಿಂದ ಉಂಟಾಗಿಲ್ಲ. ಇದು ಪ್ರಪಂಚಕ್ಕೆ ಕಾಣಿಸಬಾರದು ಎನ್ನಬೇಕಾದ ಫೈಲ್ಗಳ ನೇರ ಪ್ರದರ್ಶನವಾಗಿತ್ತು.
ಈ ಸೋರಿಕೆ ಏಕೆ ಗಂಭೀರವಾಗಿದೆ
Stripe ಸೀಕ್ರೆಟ್ ಕೀ ಎಂಬುದು ವ್ಯಾಪಾರಿಯ ಪಾವತಿ ವ್ಯವಸ್ಥೆಯ (payment rail) ಮಾಸ್ಟರ್ ಪಾಸ್ವರ್ಡ್ ಇದ್ದಂತೆ. ಅದನ್ನು ಹೊಂದಿರುವ ಯಾರೇ ಆಗಿದ್ದರೂ:
- ಸಂಗ್ರಹಿಸಲಾದ ಕಾರ್ಡ್ಗಳ ಮೇಲೆ ಯಾವುದೇ ಚಾರ್ಜ್ಗಳನ್ನು ರಚಿಸಬಹುದು
- ಇನ್ವಾಯ್ಸ್ಗಳು ಮತ್ತು ಪಾವತಿ ಇತಿಹಾಸವನ್ನು (payout histories) ಪಡೆಯಬಹುದು
- ವೈಯಕ್ತಿಕ ಡೇಟಾ – ಹೆಸರುಗಳು, ಇಮೇಲ್ಗಳು, ಫೋನ್ ಸಂಖ್ಯೆಗಳು, ಮನೆ ವಿಳಾಸಗಳು, IP ವಿಳಾಸಗಳನ್ನು ಪಡೆಯಬಹುದು
- ಉಚಿತ ಅಥವಾ ರಿಯಾಯಿತಿ ದರದಲ್ಲಿ ಖರೀದಿಸಲು ಪ್ರೊಮೋಷನಲ್ ಕೋಡ್ಗಳನ್ನು ಬಳಸಬಹುದು
ಸೋರಿಕೆಯಾದ ಡೇಟಾ ಸೆಟ್ನಲ್ಲಿ ಮೇಲಿನ ಎಲ್ಲವೂ ಸೇರಿದಂತೆ, ಪ್ರತಿ ಮಾರಾಟಗಾರನು ಎಷ್ಟು ಗಳಿಸಿದ್ದಾನೆ ಎಂಬುದನ್ನು ಬಹಿರಂಗಪಡಿಸುವ ಪಾವತಿ ವಿವರಗಳು (payout details) ಕೂಡ ಸೇರಿವೆ. ವ್ಯವಹಾರಕ್ಕೆ, ತಕ್ಷಣದ ಅಪಾಯವೆಂದರೆ ಚಾರ್ಜ್ಬ್ಯಾಕ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುವ ವಂಚನೆಯ ವಹಿವಾಟುಗಳು, ಗ್ರಾಹಕರ ನಂಬಿಕೆಯ ನಷ್ಟ ಮತ್ತು 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 ಪ್ರತಿಕ್ರಿಯೆಯು ಫೈಲ್ ಸಾರ್ವಜನಿಕವಾಗಿ ಓದಬಹುದಾಗಿದೆ ಎಂದು ಅರ್ಥ – ಇದು ತಕ್ಷಣದ ಗಮನದ ಅಗತ್ಯವಿರುವ ಗಂಭೀರ ಭದ್ರತಾ ಘಟನೆಯಾಗಿದೆ.
ತಕ್ಷಣದ ಪರಿಹಾರ ಕ್ರಮಗಳು
1. ವೆಬ್ ಸರ್ವರ್ನಲ್ಲಿ ಡಾಟ್ಫೈಲ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ
- Nginx – ಡಾಟ್ನಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಯಾವುದೇ ಫೈಲ್ಗಳ ವಿನಂತಿಯನ್ನು ನಿರಾಕರಿಸುವ ಲೊಕೇಶನ್ ಬ್ಲಾಕ್ ಅನ್ನು ಸೇರಿಸಿ.
- Apache – ಡಾಟ್-ಪ್ರಿಫಿಕ್ಸ್ಡ್ ಫೈಲ್ಗಳಿಗಾಗಿ 403 ಅನ್ನು ಹಿಂತಿರುಗಿಸಲು
.htaccessನಲ್ಲಿFilesMatchಡೈರೆಕ್ಟಿವ್ ಬಳಸಿ.
2. ನಿಮ್ಮ Docker ವರ್ಕ್ಫ್ಲೋವನ್ನು ಬಲಪಡಿಸಿ
.envಅನ್ನು.dockerignoreಗೆ ಸೇರಿಸಿ ಇದರಿಂದ ಫೈಲ್ ಇಮೇಜ್ಗೆ ಎಂದಿಗೂ ಕಾಪಿ ಆಗುವುದಿಲ್ಲ.- ಸೀಕ್ರೆಟ್ಗಳನ್ನು ಹೊಂದಿರುವ ಯಾವುದೇ ಫೈಲ್ಗೆ
COPYಸೂಚನೆಯನ್ನು ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಿ.
3. ಪ್ರತಿಯೊಂದು ಕಳಂಕಿತ ಕೀಯನ್ನು ಬದಲಾಯಿಸಿ (Rotate)
- Stripe Dashboard → Developers → API keys ಗೆ ಲಾಗಿನ್ ಮಾಡಿ.
- ಹೊಸ ಸೀಕ್ರೆಟ್ ಕೀಯನ್ನು ರಚಿಸಿ ಮತ್ತು ಹಳೆಯದನ್ನು ತಕ್ಷಣವೇ ರದ್ದುಗೊಳಿಸಿ.
4. ಕನಿಷ್ಠ-ಅಧಿಕಾರ ಹೊಂದಿರುವ (least-privilege) ಕೀಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಿ
- ಎಲ್ಲಾ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ ಒಂದೇ ಸೀಕ್ರೆಟ್ ಕೀಯನ್ನು ಬಳಸುವುದು ನಿಲ್ಲಿಸಿ.
- ಅಗತ್ಯವಿರುವ ಕ್ರಮಗಳಿಗೆ ಮಾತ್ರ ಅನುಮತಿ ನೀಡುವ ನಿರ್ಬಂಧಿತ ಕೀಗಳನ್ನು (restricted keys) ರಚಿಸಿ – ಉದಾಹರಣೆಗೆ, ಚೆಕ್ಔಟ್ ಸೇವೆಗೆ ಪಾವತಿ ಉದ್ದೇಶಗಳನ್ನು (payment intents) ರಚಿಸಲು ಅನುಮತಿ ಬೇಕಾಗಬಹುದು ಆದರೆ ರಿಫಂಡ್ ನೀಡಲು ಅಥವಾ ಪಾವತಿಗಳನ್ನು ನೋಡಲು ಅನುಮತಿ ಬೇಕಾಗಿಲ್ಲ.
5. ಹಳೆಯ ಕೀಯಿನ ಪ್ರತಿಯೊಂದು ಪ್ರತಿಯನ್ನು ಅಳಿಸಿಹಾಕಿ
- CI/CD ಲಾಗ್ಗಳು, ಬಿಲ್ಡ್ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗಳು ಮತ್ತು ಬ್ಯಾಕಪ್ ಆರ್ಕೈವ್ಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ.
- ನಿಮ್ಮ Git ಇತಿಹಾಸದ ವಿರುದ್ಧ Gitleaks ಅಥವಾ TruffleHog ನಂತಹ ಸೀಕ್ರೆಟ್-ಸ್ಕ್ಯಾನಿಂಗ್ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ.
ಸರ್ವರ್ನಿಂದ ಫೈಲ್ ಅನ್ನು ನೀವು ಡಿಲೀಟ್ ಮಾಡಿದಾಗ ಸೋರಿಕೆಯಾದ ಕೀ ಮಾಯವಾಗುವುದಿಲ್ಲ; ಅದನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿದವರ ಕೈಯಲ್ಲಿ ಅದು ಶಾಶ್ವತವಾಗಿ ಇರುತ್ತದೆ. ಕಳಂಕಿತ ಡೇಟಾವನ್ನು ನಿಷ್ಪ್ರಯೋಜಕಗೊಳಿಸಲು ಕೀಗಳನ್ನು ಬದಲಾಯಿಸುವುದು (Rotation) ಒಂದೇ ದಾರಿ.
ಪರಿಹಾರದ ಆಚೆಗೆ: ಸುರಕ್ಷಿತ ಪೈಪ್ಲೈನ್ ನಿರ್ಮಿಸುವುದು
- Automated scanning – ಪ್ರತಿಯೊಂದು ಪುಲ್ ರಿಕ್ವೆಸ್ಟ್ (pull request) ಮತ್ತು CI ಕೆಲಸದಲ್ಲಿ ಸೀಕ್ರೆಟ್-ಡಿಟೆಕ್ಷನ್ ಅನ್ನು ಸಂಯೋಜಿಸಿ.
- Configuration management – ಸೀಕ್ರೆಟ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕ ವೋಲ್ಟ್ನಲ್ಲಿ (ಉದಾಹರಣೆಗೆ, HashiCorp Vault, AWS Secrets Manager) ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ಸ್ಟ್ಯಾಟಿಕ್ ಫೈಲ್ಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗುವ ಬದಲು ರನ್ಟೈಮ್ನಲ್ಲಿ ಅವುಗಳನ್ನು ಇಂಜೆಕ್ಟ್ ಮಾಡಿ.
- Access reviews – ಯಾವ Stripe ಕೀಗಳು ಸಕ್ರಿಯವಾಗಿವೆ ಮತ್ತು ಅವು ಯಾವ ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿವೆ ಎಂಬುದನ್ನು ನಿಯಮಿತವಾಗಿ ಆಡಿಟ್ ಮಾಡಿ.
ಈ ಪದ್ಧತಿಗಳು ಕೇವಲ ಒಂದು ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಸರ್ವರ್ ಇಡೀ ಪಾವತಿ ಮೂಲಸೌಕರ್ಯವನ್ನು ಬಹಿರಂಗಪಡಿಸುವ ಸಾಧ್ಯತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತವೆ.
ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು
ಭದ್ರತಾ ಸಮುದಾಯವು ಈಗಾಗಲೇ ಇದೇ ವಿಧಾನವನ್ನು ಬಳಸಿ ಹೆಚ್ಚಿನ ಬಹಿರಂಗಗೊಂಡ ಕೀಗಳನ್ನು ಹುಡುಕುತ್ತಿದೆ. Stripe ಟೋಕನ್ಗಳನ್ನು ಹೊಂದಿರುವ “/.env” ಫೈಲ್ಗಳಿಗಾಗಿ ಸ್ವಯಂಚಾಲಿತ ಸ್ಕ್ಯಾನರ್ಗಳು ವೆಬ್ ಅನ್ನು ಹುಡುಕುತ್ತಿರುವಾಗ ಹೆಚ್ಚಿನ ಮಾಹಿತಿ ಹೊರಬರಬಹುದು. Stripe ಕೀ ರೊಟೇಶನ್ ಅವಧಿ ಮತ್ತು ಹೆಚ್ಚಿನ ಅಪಾಯದ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ನಿರ್ಬಂಧಿತ ಕೀಗಳನ್ನು ಶಿಫಾರಸು ಮಾಡುವ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾರ್ಗದರ್ಶನವನ್ನು ನೀಡಬಹುದು.
ಸಾರಾಂಶ
ಒಂದು ಡಾಟ್ಫೈಲ್ ಅನ್ನು ಬ್ರೌಸರ್ ಮೂಲಕ ಪಡೆಯಲು ಸಾಧ್ಯವಾದರೆ, ನಿಮ್ಮ ಪಾವತಿ ವ್ಯವಸ್ಥೆಯು ಈಗಾಗಲೇ ಅಸುರಕ್ಷಿತವಾಗಿದೆ – ವಂಚನೆಯು ನಿಮ್ಮ ಲೆಡ್ಜರ್ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುವ ಮೊದಲೇ, ಆ ಫೈಲ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಿ, ಕೀಯನ್ನು ಬದಲಾಯಿಸಿ (rotate), ಮತ್ತು ನಿಮ್ಮ ಸೀಕ್ರೆಟ್-ಹ್ಯಾಂಡ್ಲಿಂಗ್ ವರ್ಕ್ಫ್ಲೋ ಅನ್ನು ಮರುರೂಪಿಸಿ.
