flawopen.com/Incidents/moveit-transfer-sql-injection-may-2023
MOVEit Transfer: SQL इंजेक्शन और बड़े पैमाने पर डेटा चोरी
CVE-2023-34362, MOVEit Transfer में बिना प्रमाणीकरण SQL injection की कमज़ोरी थी। Mandiant ने 27 मई 2023 से इसका दुरुपयोग देखा, जिसके बाद LEMURLOOT web shell लगाए गए और डेटा चुराया गया।[4], [3]
एक फ़ॉर्म में “फ़ोल्डर नंबर” का फ़ील्ड सोचिए, जिसे कर्मचारी फ़ाइलिंग सिस्टम को भेजे जाने वाले निर्देश में सीधे कॉपी कर देता है। अगर यह फ़ील्ड केवल फ़ोल्डर बताने के बजाय निर्देश बदल सकता है, तो फ़ॉर्म भरने वाला सिस्टम से अपेक्षा से अधिक काम करा सकता है। SQL injection भी यही सीमा पार करता है: अविश्वसनीय इनपुट को मान के बजाय SQL syntax समझा जाता है।[5]
इस पेज के मुख्य शब्द
SQL इंजेक्शन (CWE-89)- डेटाबेस क्वेरी में जोड़ा गया इनपुट मान की तरह बरते जाने के बजाय क्वेरी का काम ही बदल देता है।[5]
मैनेज्ड फ़ाइल ट्रांसफ़र (MFT)- वह सॉफ़्टवेयर जिससे संगठन साझेदारों के साथ बड़ी या संवेदनशील फ़ाइलें बदलते हैं। एक ही सर्वर पर कई संगठनों का डेटा हो सकता है।[3]
वेब शेल- एक स्क्रिप्ट जिसे हमलावर पहुँच बनाए रखने के लिए वेब सर्वर पर रख देता है। Mandiant ने यहाँ इस्तेमाल हुई स्क्रिप्ट को LEMURLOOT नाम दिया।[3]
पैरामीटराइज़्ड क्वेरी- ऐसी क्वेरी जिसके मान उसके टेक्स्ट से अलग भेजे जाते हैं, ताकि डेटाबेस कभी डेटा को SQL की तरह न पढ़े।[5]
प्रभावित और सुधारे गए संस्करण- Progress के अनुसार संबंधित शाखाओं में 2021.0.6, 2021.1.4, 2022.0.4, 2022.1.5 और 2023.0.1 से पुराने संस्करण प्रभावित हैं; सूचीबद्ध संस्करणों में सुधार शामिल है। अपनी शाखा और वर्तमान अपग्रेड पथ Progress की सलाह में जाँचें।[1]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-89
- CISA KEV — जोड़ा गया 2023-06-02 — CVE-2023-34362
घटना का समयक्रम (Timeline)
Mandiant ने MOVEit Transfer के दुरुपयोग का सबसे पुराना देखा गया प्रमाण 27 मई 2023 का बताया।[3]
Progress कमज़ोरी का खुलासा करता है और ग्राहकों से पैच लगने तक HTTP और HTTPS ट्रैफ़िक बंद करने को कहता है।[1]
CISA, CVE-2023-34362 को Known Exploited Vulnerabilities सूची में जोड़ता है।[9]
हमले का चरण-दर-चरण प्रवाह
बिना प्रमाणीकरण का अनुरोध
Mandiant ने LEMURLOOT दिखने से पहले MOVEit Transfer के guestaccess.aspx को भेजे गए गढ़े हुए POST अनुरोध देखे; इसके लिए सामान्य उपयोगकर्ता लॉगिन आवश्यक नहीं था।[3]
वेब शेल लगाया जाता है
दुरुपयोग के बाद Mandiant ने LEMURLOOT web shell देखा। यह फ़ाइलें सूचीबद्ध और प्राप्त कर सकता था तथा एक नामित एप्लिकेशन उपयोगकर्ता को बदल सकता था; स्रोत सामान्य प्रशासनिक नियंत्रण मिलने की पुष्टि नहीं करते।[3]
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
यह उदाहरण के लिए C# कोड है, MOVEit का सोर्स कोड नहीं। मज़बूत मेथड पहचानकर्ता को कॉलम में मौजूद वास्तविक प्रकार में बदलता है और बाक़ी सब अस्वीकार करता है, फिर उसे टाइप वाले पैरामीटर के रूप में भेजता है, ताकि मान SQL टेक्स्ट का हिस्सा न बने। दोनों में से कोई भी नियंत्रण अकेले यह इंजेक्शन रोकता है; साथ में वे क्वेरी चलने से पहले ग़लत पहचानकर्ताओं को भी अस्वीकार करते हैं।[5]
using System.Data.SqlClient;
public static class FolderLookup
{
public static SqlDataReader Find(SqlConnection conn, string folderId)
{
// query text और request data को जोड़ दिया जाता है, इसलिए database
// यह नहीं पहचान पाता कि developer किस हिस्से को data मानना चाहता था।
string sql = "SELECT id, name FROM folders WHERE id = '" + folderId + "'";
var cmd = new SqlCommand(sql, conn);
return cmd.ExecuteReader();
}
}using System;
using System.Data;
using System.Data.SqlClient;
public static class FolderLookup
{
public static SqlDataReader Find(SqlConnection conn, string folderId)
{
if (!long.TryParse(folderId, out long id) || id <= 0)
throw new ArgumentException("folderId must be a positive integer");
// मान को query text से अलग, typed parameter के रूप में भेजा जाता है।
var cmd = new SqlCommand("SELECT id, name FROM folders WHERE id = @id", conn);
cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = id;
return cmd.ExecuteReader();
}
}इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓हर SQL मान को पैरामीटर के रूप में भेजें और अविश्वसनीय स्ट्रिंग को SQL कमांड API में जोड़ने पर CI विफल करें; MITRE
CWE-89पैरामीटरयुक्त क्वेरी को रोकथाम का उपाय बताता है।[5] - ✓FlawOpen सुझाव: एक injection मिलने पर क्वेरी बनाने वाले सभी रास्तों में डेटा और SQL के बीच वही असुरक्षित सीमा खोजें। बाद की CVE को अलग समस्या मानें, जब तक उनके advisories साझा मूल कारण साबित न करें।
- ✓हर तैनात MOVEit Transfer इंस्टेंस पर Progress के पैच निर्देश लागू करें; सामान्य सार्वजनिक पहुँच बहाल करने से पहले सभी इंस्टेंस की सूची बनाएं और सुधारा गया संस्करण दर्ज करें।[1]
- ✓दुरुपयोग का संदेह हो तो सेवा बहाल करने से पहले होस्ट की जाँच करें: LEMURLOOT और प्रभावित खातों को खोजें, फिर संभावित रूप से उजागर क्रेडेंशियल या सीक्रेट बदलें।[3]
- ✓FlawOpen सुझाव: फ़ाइल-ट्रांसफ़र प्रदाताओं से पूछें कि किन सिस्टमों में आपका डेटा था और सूचना तथा घटना-प्रतिक्रिया का दायरा तय करने के लिए इस सूची का उपयोग करें।
- ✓FlawOpen सुझाव: डेटा की संवेदनशीलता और अनुबंध की ज़रूरत के अनुसार रखे जाने की अवधि तय करें और हटाने की पुष्टि करें; इससे MOVEit पीड़ितों के इतिहास के बारे में अनुमान लगाए बिना जोखिम घटता है।
स्रोत
- Progress — MOVEit Transfer में गंभीर कमज़ोरी (31 मई 2023)
- CISA और FBI — चेतावनी AA23-158A: CL0P रैनसमवेयर गिरोह CVE-2023-34362 का दुरुपयोग करता है
- Mandiant — डेटा चोरी के लिए MOVEit Transfer की ज़ीरो-डे कमज़ोरी का दुरुपयोग
- CVE-2023-34362 — CVE रिकॉर्ड
- MITRE CWE-89
- SQL इंजेक्शन — 11 भाषाओं में पूरी श्रेणी का संदर्भ
- क्या स्टोर्ड प्रोसीजर SQL इंजेक्शन रोकते हैं?
- CVE-2025-1094: जब एस्केप फ़ंक्शन ख़ुद ही कमज़ोरी था
- CISA KEV सूची — CVE-2023-34362