ट्विटर द्वारा टेक्स्ट संदेश दो-कारक प्रमाणीकरण को अक्षम करने के साथ, मैंने सोचा कि एसएमएस धोखाधड़ी कैसे काम करती है और ऐप डेवलपर्स इससे कैसे बच सकते हैं, इस पर गहराई से विचार करना मजेदार होगा।
यह विकृत प्रोत्साहनों, अदूरदर्शी विनियमन और तकनीकी सरलता की एक आकर्षक कहानी है।
चलो खोदो! 👇
आरंभ करने के लिए, आइए ट्विटर की हालिया घोषणा को दोबारा याद करें:
सरल अंग्रेजी में, इसका सीधा सा अर्थ यह है कि केवल ट्विटर के भुगतान किए गए संस्करण के उपयोगकर्ताओं को लॉगिन के दौरान उनके फोन पर एक कोड भेजा जाएगा।
एसएमएस धोखाधड़ी को समझने की कुंजी यह समझना है कि कुछ नंबर प्रीमियम हैं। यदि आप इस नंबर पर कॉल करना या एसएमएस भेजना चाहते हैं, तो इसके लिए आपको कुछ पैसे खर्च करने होंगे - आम तौर पर दसियों सेंट - और नंबर के मालिक को उन दसियों सेंट का एक हिस्सा अपने लिए मिलता है।
इन फोन नंबरों के मालिक आम तौर पर वैध सेवाएं प्रदान करते हैं जिनकी आपूर्ति करने और अपने उपयोगकर्ताओं को मूल्य प्रदान करने के लिए पैसे खर्च होते हैं, जैसे टेली-वोटिंग, डेटिंग और तकनीकी सहायता।
हालाँकि, आसान लाभ के लिए इन नंबरों का उपयोग किया जा सकता है
एक बुरा अभिनेता, हम उसे बॉब कह सकते हैं, कई प्रीमियम फोन नंबर हासिल कर लेता है[1]। बॉब एक हैकर हो सकता है, या एक ख़राब मोबाइल फ़ोन नेटवर्क ऑपरेटर हो सकता है।
बॉब को एक वेब सेवा मिलती है जो उसके प्रीमियम फोन नंबरों पर टेक्स्ट संदेश भेजेगी। ये संदेश दो-कारक प्रमाणीकरण कोड, एक बार पासवर्ड, या सेवा के हिस्से के रूप में उपयोगकर्ता को भेजा गया कोई अन्य टेक्स्ट संदेश हो सकता है (उदाहरण के लिए पार्टिफुल.कॉम एसएमएस के माध्यम से ईवेंट अनुस्मारक भेजता है)।
बॉब ने सेवा द्वारा उसके प्रीमियम फोन नंबरों पर हजारों एसएमएस भेजने का एक तरीका ढूंढ लिया। यह बहुत आसान हो सकता है. फ्रंट एंड सर्विस में हेरफेर करना आसान हो सकता है, और बैकएंड एंडपॉइंट असुरक्षित हो सकते हैं और रिवर्स-इंजीनियर करना आसान हो सकता है।
इससे भी बदतर, कई सेवाएँ एसएमएस भेजने के लिए एक मानकीकृत समापन बिंदु का उपयोग करती हैं। इससे बॉब के लिए हमला करने के लिए साइट ढूंढना काफी आसान हो जाता है। उदाहरण के लिए, यदि सेवा उपयोगकर्ताओं को प्रमाणित करने और Auth0 जैसे 2FA या OTP कोड भेजने के लिए किसी तीसरे पक्ष का उपयोग करती है, तो एसएमएस भेजने का समापन बिंदु ज्यादातर ज्ञात होता है: बॉब को केवल Auth0 की खोज करने का एक तरीका खोजने की आवश्यकता होती है एक वेब सेवा के लिए आईडी (काफी आसान है, क्योंकि वेब सेवा का फ्रंट-एंड इस आईडी से युक्त एक अनुरोध करता है), और फिर वे उस तृतीय पक्ष सेवा का उपयोग करने वाली सभी साइटों पर हमला कर सकते हैं।
अंततः, बॉब इस सेवा से अपने प्रीमियम फोन नंबरों पर हजारों एसएमएस भेजता है। वेब सेवा 💵💵💵 खोती है, और बॉब लाभ कमाता है।
एसएमएस धोखाधड़ी को रोकने के लिए कोई एक उपाय नहीं है। लेकिन यहां कुछ विचार हैं जो काम कर सकते हैं:
यदि उपयोगकर्ताओं को प्रमाणित करने के लिए Auth0 जैसी तृतीय-पक्ष सेवा का उपयोग किया जाता है, तो आप एसएमएस भेजने के लिए उपयोग किए जाने वाले समापन बिंदु को अस्पष्ट कर सकते हैं। हालाँकि यह किसी हमले को पूरी तरह से नहीं रोक पाएगा, लेकिन इससे यह पता लगाना बहुत कठिन हो जाता है कि कोई हमला संभव है।
जिस तरह एक बाइक चोर बाइक चुराने के लिए सबसे आसान लक्ष्य को निशाना बनाता है, उसी तरह एक अच्छा हैकर उन वेब सेवाओं की ओर रुख करेगा जिन्हें हैक करना आसान है। मेरा अनुमान है कि यह दृष्टिकोण ऐप्स की लंबी श्रृंखला के लिए काफी अच्छा काम करेगा।
आईपी से आने वाले सभी अनुरोधों को ब्लॉक करें जो क्लाउड प्रदाताओं, धोखाधड़ी वाले आईएसपी से उत्पन्न होते हैं, या अन्यथा अधूरे हैं। इसे लागू करना काफी सरल होना चाहिए - कई सेवाएँ मौजूद हैं जो आपको आईपी पते की गुणवत्ता को रेट करने की अनुमति देती हैं - और संभवतः बहुत प्रभावी होंगी।
अंतिम बिंदु पर आईपी-आधारित दर-सीमित जोड़ें जो बॉब के हमले को रोकने के लिए एसएमएस भेजता है। यदि सही तरीके से सेट किया गया है, तो यह वैध उपयोगकर्ताओं को प्रभावित नहीं करेगा। हालाँकि, यह केवल एक साधारण हमले के विरुद्ध ही काम करता है। यदि बॉब अपने हमले को विभिन्न आईपी पतों से अनुरोध भेजने के लिए तैयार करता है - एक वितरित हमला - तो यह काम नहीं करेगा।
किसी विशिष्ट फ़ोन नंबर को कूल-ऑफ़ अवधि के लिए ब्लॉक करने से पहले केवल कुछ ही बार एसएमएस भेजें। हम इसे फ्रंट-एंड पर कर सकते हैं, लेकिन यदि बॉब दृढ़ संकल्पित है, तो वह इसके बजाय हमला करने के लिए बैकएंड एंडपॉइंट का पता लगा सकता है। बैकएंड पर फ़ोन नंबर को ब्लॉक करना कठिन है: इसके लिए फ़ोन नंबरों और उनके हाल के लॉगिन प्रयासों का रिकॉर्ड रखना आवश्यक है[2]।
उपयोगकर्ता को एसएमएस भेजने से पहले कैप्चा हल करने के लिए बाध्य करें। हालाँकि यह दृष्टिकोण हमलावरों को रोकने में अच्छा काम करता है - कैप्चा को बड़े पैमाने पर हल करना कठिन और महंगा है - यह सेवा के उपयोगकर्ता के अनुभव को ख़राब करता है।
libphonenumber का उपयोग करके प्रीमियम दर फ़ोन नंबरों को पहचानें और ब्लॉक करें। हालाँकि यह आशाजनक लगता है, मुझे नहीं पता कि डेटा कितना विश्वसनीय है और यह दृष्टिकोण कितना प्रभावी है।
केवल भुगतान किए गए खातों पर टेक्स्ट संदेश भेजें। ट्विटर इसी दृष्टिकोण के साथ आगे बढ़ा है। यह कोई बुरा विकल्प नहीं है, लेकिन जैसा कि आप ऊपर दी गई सूची से देख सकते हैं, ऐसे कई अन्य तरीके हैं जिन्हें आप अपना सकते हैं।
अधिक संख्या में धोखाधड़ी करने वाले उपयोगकर्ताओं वाले मोबाइल फ़ोन नेटवर्क ऑपरेटरों को ब्लॉक करें। यह स्पष्ट रूप से खराब नेटवर्क ऑपरेटरों को ब्लॉक कर देगा, लेकिन यदि नेटवर्क में कई वैध उपयोगकर्ता हैं तो यह अच्छी तरह से काम नहीं करेगा।
इसके बजाय संदेश भेजने के लिए व्हाट्सएप का उपयोग करें। एसएमएस के विपरीत व्हाट्सएप मुफ़्त है, लेकिन दुनिया भर में सभी उपयोगकर्ता व्हाट्सएप का उपयोग नहीं करते हैं[3]।
एक अच्छा समाधान उपरोक्त दृष्टिकोणों का पर्याप्त उपयोग करना होगा, समय निवेश और प्रभावशीलता को प्राथमिकता देना, जब तक कि हमलावर आसान लक्ष्य पर न पहुंच जाएं।
मेरे पास उपरोक्त उपायों को लागू करने का कुछ व्यक्तिगत अनुभव है, और मेरे पास साझा करने के लिए एक या दो कहानियाँ हैं कि मेरी टीम ने कैसे नतीजों को संभाला। लेकिन वह कहानी फिर कभी... 👨💻
यह मुझे मेरे अंतिम बिंदु पर लाता है:
आईएमओ, ट्विलियो - एक प्रमुख एसएमएस एपीआई - के पास अपने मानक एपीआई में (मुफ़्त? 🙏) ऐड-ऑन के रूप में एसएमएस धोखाधड़ी सुरक्षा प्रदान करने का एक बड़ा अवसर है।
चूंकि ट्विलियो के पास अपने सभी खातों में धोखाधड़ी वाले फोन नंबरों और वाहकों का डेटा है, इसलिए ट्विलियो खराब नंबरों और वाहकों को तेजी से ब्लॉक करने की अद्वितीय स्थिति में है - इससे पहले कि वे कई वेब सेवाओं के लिए एक बड़ा मुद्दा बन जाएं।
ट्विलियो अगली पीढ़ी के प्रमाणीकरण तंत्र - साइलेंट नेटवर्क ऑथ का उपयोग करके अमान्य फोन नंबरों का भी पता लगा सकता है - और ऐसा लगता है कि इस उपयोगिता को उनके उपयोगकर्ताओं के बीच साझा किया जाना चाहिए।
मुझे लोगों द्वारा उपयोग किए गए किसी भी अन्य विचार, विचार और दृष्टिकोण को सुनना अच्छा लगेगा - कृपया नीचे एक टिप्पणी लिखकर साझा करें, और हम सभी सीख सकते हैं।
अभी के लिए बस इतना ही - उन अंतिम बिंदुओं की रक्षा करें, और एक अच्छा सप्ताह बिताएं!
HackerNews पर एक उत्कृष्ट चर्चा है।
[1] ध्यान दें कि इन प्रीमियम फोन नंबरों को काम करने की भी आवश्यकता नहीं है: उन्हें किसी ऐसे सिम कार्ड से कनेक्ट होने की आवश्यकता नहीं है जो काम कर रहा हो और फोन पर पंजीकृत हो। जब तक उन्हें रूट किया जा सकता है, तब तक उनका इस्तेमाल इस हमले में किया जा सकता है।
[2] मैं उत्सुक हूं कि क्या इसे कुशल बनाने और बड़े पैमाने पर काम करने के लिए कोई अच्छी डेटा संरचना और एल्गोरिदम है। यदि आप किसी के बारे में जानते हैं तो कृपया साझा करें!
[3] उनके सुझाव के लिए एचएन पर @csharpminor को श्रेय।
मैं अपू , कूडोस का सीटीओ और एक इंजीनियर हूं।
यह पोस्ट मूल रूप से मेरे निजी ब्लॉग पर दिखाई दी - इसे और अधिक पसंद करने के लिए सदस्यता लें!