.env ફાઇલો અને ડિબગ લોગ્સ પબ્લિક ઇન્ટરનેટ પર ખુલ્લા રહી જવાથી 669 વેન્ડર્સ પાસેથી 1,033 લાઈવ Stripe સિક્રેટ કીઝ (secret keys) એક્સપોઝ થઈ ગઈ છે. આ કીઝ દ્વારા કોઈપણ વ્યક્તિ ચાર્જ કરી શકે છે, ઇન્વોઇસ મેળવી શકે છે અને ગ્રાહકોની વિગતો ચોરી શકે છે – આ એક એવી સુરક્ષા ખામી છે જે મિનિટોમાં ખિસ્સા ખાલી કરી શકે છે અને પ્રતિષ્ઠાને નુકસાન પહોંચાડી શકે છે.
લીકનું કારણ શું હતું
ડેવલપર્સ નિયમિતપણે કન્ફિગરેશન ડેટા – જેમ કે ડેટાબેઝ પાસવર્ડ, API ટોકન્સ અને Stripe સિક્રેટ કીઝ – .env નામની ફાઇલમાં સ્ટોર કરે છે. આ ફાઇલ સોર્સ કોડની સાથે રહે છે અને સિક્રેટ્સને કોડબેઝથી દૂર રાખવા માટે રનટાઇમ (runtime) પર તેને વાંચવામાં આવે છે. આ પદ્ધતિ ત્યારે જ કામ કરે છે જો સર્વર ક્યારેય ડોટ (.) થી શરૂ થતી ફાઇલો સર્વ ન કરે. આ કિસ્સામાં, ખોટી રીતે કન્ફિગર થયેલા વેબ સર્વર્સ (Nginx અને Apache બંને) એ “/.env”, “/.env.example”, “/.git/HEAD” અને કસ્ટમ “/debug” એન્ડપોઇન્ટ માટેની વિનંતીઓને 200 OK સ્ટેટસ સાથે રો ફાઇલ (raw file) રિટર્ન કરવાની મંજૂરી આપી દીધી હતી.
આ લીક Stripe ના પ્લેટફોર્મમાં રહેલી કોઈ નબળાઈને કારણે અથવા કોઈ ચોક્કસ ઈ-કોમર્સ પ્લગઇનમાં રહેલી ખામીને કારણે નહોતું થયું. તે માત્ર એવી ફાઇલોનું એક્સપોઝર હતું જે દુનિયા માટે અદ્રશ્ય હોવી જોઈતી હતી.
આ એક્સપોઝર કેમ મહત્વનું છે
Stripe સિક્રેટ કી એ અસરકારક રીતે મર્ચન્ટના પેમેન્ટ રેલ (payment rail) માટે માસ્ટર પાસવર્ડ સમાન છે. જેની પાસે તે હોય તે કોઈપણ વ્યક્તિ આ કરી શકે છે:
- સ્ટોર કરેલા કાર્ડ્સ પર મનસ્વી ચાર્જ કરી શકે છે
- ઇન્વોઇસ અને પેઆઉટ હિસ્ટ્રી મેળવી શકે છે
- વ્યક્તિગત ડેટા – નામ, ઈમેલ, ફોન નંબર, ઘરનું સરનામું, IP એડ્રેસ મેળવી શકે છે
- મફત અથવા ડિસ્કાઉન્ટવાળી ખરીદી માટે પ્રમોશનલ કોડનો ઉપયોગ કરી શકે છે
લીક થયેલા ડેટા સેટમાં ઉપરના તમામ મુદ્દાઓ ઉપરાંત પેઆઉટની વિગતો પણ સામેલ હતી, જે દર્શાવે છે કે દરેક વેન્ડરે કેટલું કમાવ્યું છે. વ્યવસાય માટે, તાત્કાલિક જોખમ છે છેતરપિંડીથી થતા વ્યવહારો (fraudulent transactions) જે ચાર્જબેક પેદા કરે છે, ગ્રાહકોના વિશ્વાસમાં ઘટાડો થાય છે, અને PCI-DSS, GDPR અથવા અન્ય ડેટા-પ્રાઇવસી નિયમો હેઠળ સંભવિત દંડ થઈ શકે છે. લાંબા ગાળાનો ખર્ચ ઘણો વધારે હોઈ શકે છે: કાનૂની ફી, સુધારાના ખર્ચ (remediation expenses), અને બ્રાન્ડને થયેલું નુકસાન જે કદાચ ક્યારેય સુધરી ન શકે.
ઝડપી ટેસ્ટ: શું તમારી .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. વેબ સર્વર પર ડોટફાઇલ્સ (dotfiles) બ્લોક કરો
- Nginx – એક લોકેશન બ્લોક ઉમેરો જે ડોટ (.) થી શરૂ થતી કોઈપણ ફાઇલ માટેની વિનંતીને નકાર (deny) કરે.
- Apache – ડોટ-પ્રીફિક્સ વાળી ફાઇલો માટે 403 રિટર્ન કરવા માટે
.htaccessમાંFilesMatchડાયરેક્ટિવનો ઉપયોગ કરો.
2. તમારા Docker વર્કફ્લોને મજબૂત (Harden) બનાવો
.envને.dockerignoreમાં ઉમેરો જેથી ફાઇલ ક્યારેય ઈમેજમાં કોપી ન થાય.- જે ફાઇલમાં સિક્રેટ્સ હોય તેના માટે
COPYઇન્સ્ટ્રક્શનનો ઉપયોગ કરવાનું ટાળો.
3. દરેક જોખમમાં મુકાયેલી (compromised) કી રોટેટ કરો
- Stripe Dashboard → Developers → API keys માં લોગ ઇન કરો.
- નવી સિક્રેટ કી જનરેટ કરો અને જૂની કીને તરત જ રિવોક (revoke) કરો.
4. લિસ્ટ-પ્રિવિલેજ (least-privilege) કી અપનાવો
- તમામ કામગીરી માટે એક જ સિક્રેટ કીનો ઉપયોગ કરવાનું બંધ કરો.
- પ્રતિબંધિત (restricted) કી બનાવો જે ફક્ત જરૂરી ક્રિયાઓની જ મંજૂરી આપે – દા.ત., ચેકઆઉટ સર્વિસને પેમેન્ટ ઇન્ટેન્ટ્સ (payment intents) બનાવવા માટે પરવાનગીની જરૂર છે પરંતુ રિફંડ આપવા અથવા પેઆઉટ જોવા માટે નહીં.
5. જૂની કીની દરેક કોપી દૂર કરો
- CI/CD લોગ્સ, બિલ્ડ આર્ટિફેક્ટ્સ અને બેકઅપ આર્કાઇવ્સ સ્કેન કરો.
- તમારા Git હિસ્ટ્રી સામે Gitleaks અથવા TruffleHog જેવા સિક્રેટ-સ્કેનિંગ ટૂલ્સ ચલાવો.
જ્યારે તમે સર્વર પરથી ફાઇલ ડિલીટ કરો છો ત્યારે લીક થયેલી કી ગાયબ થઈ જતી નથી; જેણે પણ તેને ડાઉનલોડ કરી હોય તેના હાથમાં તે કાયમ માટે રહે છે. ચોરાયેલા ડેટાને નકામો બનાવવા માટે રોટેશન (Rotation) એ એકમાત્ર રસ્તો છે.
ફિક્સથી આગળ: વધુ સુરક્ષિત પાઇપલાઇન બનાવવી
- Automated scanning – દરેક પુલ રિક્વેસ્ટ (pull request) અને CI જોબમાં સિક્રેટ-ડિટેક્શનને ઇન્ટિગ્રેટ કરો.
- Configuration management – સિક્રેટ્સને સમર્પિત વોલ્ટ (દા.ત., HashiCorp Vault, AWS Secrets Manager) માં સ્ટોર કરો અને સ્ટેટિક ફાઇલો પર આધાર રાખવાને બદલે તેને રનટાઇમ પર ઇન્જેક્ટ કરો.
- Access reviews – કઈ Stripe કી એક્ટિવ છે અને તેમની પાસે કઈ પરવાનગીઓ છે તેનું સમયાંતરે ઓડિટ કરો.
આ પદ્ધતિઓથી એ શક્યતા ઘટી જાય છે કે એક ખોટી રીતે કન્ફિગર થયેલ સર્વર આખી પેમેન્ટ ઇન્ફ્રાસ્ટ્રક્ચરને એક્સપોઝ કરી શકે.
આગળ શું ધ્યાન રાખવું
સુરક્ષા સમુદાય (security community) સમાન પદ્ધતિનો ઉપયોગ કરીને વધારાની એક્સપોઝ થયેલી કીઝ શોધી રહ્યો છે. જેમ જેમ ઓટોમેટેડ સ્કેનર્સ Stripe ટોકન્સ ધરાવતી “/.env” ફાઇલો માટે વેબ પર સર્ચ કરશે, તેમ વધુ ખુલાસાઓની અપેક્ષા રાખવી. Stripe કી રોટેશનના સમયગાળા (cadence) પર વધારાનું માર્ગદર્શન આપી શકે છે અને ઉચ્ચ જોખમ ધરાવતી કામગીરી માટે પ્રતિબંધિત (restricted) કીની ભલામણ કરી શકે છે.
મુખ્ય વાત (Takeaway)
જો બ્રાઉઝર દ્વારા કોઈ ડૉટફાઇલ (dotfile) મેળવી શકાતી હોય, તો તમારી પેમેન્ટ સિસ્ટમ પહેલેથી જ જોખમમાં છે – છેતરપિંડી તમારા લેજર (ledger) સુધી પહોંચે તે પહેલાં, તે ફાઇલને બ્લોક કરો, કી (key) બદલો અને તમારા સિક્રેટ-હેન્ડલિંગ વર્કફ્લોને ફરીથી ડિઝાઇન કરો.
