flawopen.com/Incidents/bricksforge-pro-forms-upload-metadata-october-2026
CVE-2026-85097: Bricksforge Pro Forms अपलोड दोष
CVE-2026-85097 में Bricksforge Pro Forms के अस्थायी फ़ाइल के सत्यापित कंटेंट और क्लाइंट-नियंत्रित गंतव्य मेटाडेटा के बीच की असंगति का बिना प्रमाणीकरण वाले अनुरोधों से दुरुपयोग संभव था। Patchstack ने शोषण के प्रयासों की सूचना दी है; प्लगइन अपडेट करें और उजागर साइटों की जाँच करें।[1], [2], [3], [4], [5]
एक डाकघर की कल्पना करें जो पैकेट में सुरक्षित तस्वीर की जाँच करता है, फिर भेजने वाले को लेबल बदलने देता है, जबकि आगे का कार्यालय कुछ लेबल को प्रोग्राम की तरह खोलता है। Bricksforge ने अस्थायी अपलोड की जाँच की, लेकिन बाद में फ़ॉर्म जमा करते समय दूसरा गंतव्य नाम दिया जा सकता था। बचाव यह है कि फ़ाइल की पहचान और उसका संग्रह-स्थान पूरी प्रक्रिया में सर्वर तय करे।[3], [2]
इस पेज के मुख्य शब्द
अस्थायी अपलोड- फ़ॉर्म सबमिशन पूरा होने से पहले कुछ समय के लिए रखी गई फ़ाइल। इस चरण की जाँच बाद में क्लाइंट द्वारा भेजे गए मेटाडेटा को भरोसेमंद नहीं बनाती।[2], [3]
CWE-434- खतरनाक प्रकार की फ़ाइल का अप्रतिबंधित अपलोड: सिस्टम ऐसी फ़ाइल स्वीकार करता है जिसकी खतरनाक व्याख्या या निष्पादन हो सकता है।[1], [2]
मेटाडेटा विश्वास सीमा- वह बिंदु जहाँ एप्लिकेशन तय करता है कि नाम, URL, MIME प्रकार या पथ सर्वर के भरोसेमंद रिकॉर्ड से आया है या अविश्वसनीय क्लाइंट से।[2], [3]
CVE स्कोर और शोषण स्थिति- Wordfence CNA का CVE रिकॉर्ड CVSS 3.1 को 9.8 बताता है और CISA enrichment में शोषण नहीं दर्शाया गया। Patchstack 10.0 बताता है और 7 अक्टूबर 2026 को पहली बार देखी गई टेलीमेट्री की रिपोर्ट करता है। ये अलग-अलग स्रोतों के दावे हैं; कोई भी CISA KEV में शामिल होने की पुष्टि नहीं करता।[1], [2], [3], [4]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-434
रिपोर्ट की गई संस्करण स्थिति और संचालक की कार्रवाई
| साक्ष्य स्रोत | इसमें क्या बताया गया है | रक्षा संबंधी कार्रवाई |
|---|---|---|
| Wordfence CNA / CVE रिकॉर्ड | बिना प्रमाणीकरण मनमानी फ़ाइल अपलोड होने का वर्णन करता है; दर्ज प्रभावित सीमा 3.1.8.9 तक है। | इसे CNA द्वारा दर्ज दायरे के रूप में लें, किसी तैनात साइट के सुरक्षित होने का प्रमाण न मानें। |
| Patchstack (8 अक्तूबर 2026) | 7 अक्तूबर को पहली बार देखे गए शोषण प्रयासों की रिपोर्ट करता है और 3.1.8.10 को सुधरा हुआ संस्करण बताता है। | इसे Patchstack द्वारा बताई गई सुधार सीमा मानें; हर साइट पर वास्तव में इंस्टॉल प्लगइन संस्करण जाँचें। |
| Bricksforge का सार्वजनिक बदलाव लॉग | संस्करण 4.0.1 में Pro Forms अपलोड का सुरक्षा सुधार सूचीबद्ध है, लेकिन 3.1.8.10 की सीमा नहीं बताई गई। | केवल बदलाव लॉग से यह न मानें कि 4.0.1 पहला सुधरा संस्करण है या कोई खास 3.x संस्करण सुरक्षित है। |
| सार्वजनिक रूप से पहुँच योग्य या संदिग्ध रूप से प्रभावित साइट | स्रोत शोषण के प्रयास बताते हैं; वे यह साबित नहीं करते कि हर लक्षित साइट प्रभावित हुई। | वर्तमान में समर्थित संस्करण पर अपडेट करें; रिकवरी पूरी घोषित करने से पहले अपलोड और वेब-सर्वर लॉग देखें तथा अनपेक्षित फ़ाइलों की जाँच करें। |
घटना का समयक्रम (Timeline)
हमले का चरण-दर-चरण प्रवाह
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
यह सामान्य उदाहरण सर्वर-नियंत्रित अपलोड पहचान, उपयोगकर्ता के अनुसार खोज, कंटेंट प्रकार की दोबारा जाँच, बनाए गए फ़ाइल नाम और निजी संग्रह दिखाता है। यह Bricksforge का कोड या उसका वास्तविक पैच नहीं है। उत्पादन कोड में आकार सीमा, सुरक्षित अनुमतियाँ, परमाणु स्थिति-परिवर्तन और संदर्भ के अनुसार फ़ाइल प्रदान करना भी अनिवार्य है; प्रभावित साइटें Bricksforge के समर्थित पैच संस्करण पर अपडेट करें।[2], [3]
function finalize_upload( array $item, string $stagedPath, string $uploadDir ): string {
// पहले MIME जाँच होने के बाद अंतिम नाम client metadata तय करता है।
$name = basename( (string) parse_url( $item['file']['url'], PHP_URL_PATH ) );
$destination = $uploadDir . DIRECTORY_SEPARATOR . $name;
if ( ! rename( $stagedPath, $destination ) ) {
throw new RuntimeException( 'Could not finalize upload' );
}
return $destination;
}
function finalize_upload( string $uploadId, UploadRegistry $registry, string $privateDir ): string {
// स्वामी और path को server-side record से लें, client URL से कभी नहीं।
$upload = $registry->findPendingForCurrentUser( $uploadId );
if ( $upload === null || ! is_file( $upload->path ) ) {
throw new RuntimeException( 'Unknown pending upload' );
}
$types = [ 'image/jpeg' => 'jpg', 'image/png' => 'png' ];
$mime = ( new finfo( FILEINFO_MIME_TYPE ) )->file( $upload->path );
if ( ! isset( $types[ $mime ] ) ) {
throw new RuntimeException( 'Unsupported file type' );
}
$destination = $privateDir . DIRECTORY_SEPARATOR . bin2hex( random_bytes( 16 ) ) . '.' . $types[ $mime ];
if ( ! rename( $upload->path, $destination ) ) {
throw new RuntimeException( 'Could not finalize upload' );
}
$registry->markConsumed( $uploadId );
return $destination;
}
इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓उत्पादन, स्टेजिंग और प्रबंधित ग्राहक साइटों पर Bricksforge संस्करणों की सूची बनाएँ; प्रभावित इंस्टॉलेशन को विक्रेता के नवीनतम समर्थित संस्करण पर अपडेट करें। Patchstack 3.1.8.10 को पैच बताता है, जबकि विक्रेता changelog 4.0.1 में सुधार दर्ज करता है पर 3.x की सटीक सीमा नहीं बताता।[1], [2], [3], [4], [5]
- ✓FlawOpen की परिचालन सलाह: अपलोड पूरा करते समय क्लाइंट से मिले हर नाम, URL, पथ और MIME लेबल को अविश्वसनीय मानें; संग्रहीत नाम और पथ सर्वर रिकॉर्ड तथा जाँचे गए कंटेंट की अनुमति-सूची से बनाएँ।
- ✓FlawOpen की परिचालन सलाह: अपलोड को जहाँ संभव हो निष्पादन योग्य वेब रूट के बाहर रखें; अन्यथा वेब सर्वर पर सभी अपलोड और अस्थायी अपलोड निर्देशिकाओं में स्क्रिप्ट निष्पादन रोकें।
- ✓FlawOpen की परिचालन सलाह: हर लंबित अपलोड को उसे बनाने वाले फ़ॉर्म सत्र से बाँधें, केवल एक बार उपयोग करें और अनुपस्थित, समाप्त, दोहराए गए या मेल न खाने वाले पहचानकर्ता अस्वीकार करें।
- ✓FlawOpen की परिचालन सलाह: यदि असुरक्षित साइट सार्वजनिक रूप से उपलब्ध थी, तो असामान्य फ़ॉर्म अपलोड और अपलोड स्थानों में नई फ़ाइलों के लिए वेब तथा एप्लिकेशन लॉग जाँचें; सफ़ाई से पहले प्रमाण सुरक्षित रखें और होस्ट की घटना-प्रतिक्रिया प्रक्रिया अपनाएँ।
- ✓FlawOpen की परिचालन सलाह: असंगत मेटाडेटा, निषिद्ध कंटेंट, दूसरे सत्र के ID, समाप्त ID और दोबारा उपयोग किए गए ID के लिए रिग्रेशन परीक्षण जोड़ें; अस्वीकृति और निष्पादन योग्य स्थान पर फ़ाइल न लिखे जाने की पुष्टि करें।