
CVE-2025-53367 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, DjVuLibre लाइब्रेरी में एक कमजोरी। DjVu दस्तावेज़ प्रसंस्करण में मेमोरी भ्रष्टाचार बग के शोषण का प्रदर्शन करता है।
DjVu ("déjà vu" उच्चारित) संपीड़न प्रौद्योगिकियों, एक फ़ाइल प्रारूप, और वेब पर डिजिटल दस्तावेज़ों, स्कैन किए गए दस्तावेज़ों, और उच्च-रिज़ॉल्यूशन छवियों की डिलीवरी के लिए एक सॉफ्टवेयर प्लेटफ़ॉर्म का एक सेट है।
DjVu दस्तावेज़ अत्यधिक तेज़ी से डाउनलोड और प्रदर्शित होते हैं, और सभी प्लेटफार्मों पर बिल्कुल समान दिखते हैं। DjVu को डिजिटल दस्तावेज़ों के लिए PDF और Postscript, स्कैन किए गए दस्तावेज़ों के लिए TIFF (और PDF), फ़ोटो और चित्रों के लिए JPEG, और बड़े पैलेटीकृत छवियों के लिए GIF से बेहतर विकल्प के रूप में देखा जा सकता है। DjVu एकमात्र वेब प्रारूप है जो रंग में उच्च-रिज़ॉल्यूशन स्कैन किए गए दस्तावेज़ों को वितरित करने के लिए व्यावहारिक है। कोई अन्य प्रारूप इसके करीब नहीं है।
विशिष्ट DjVu फ़ाइल आकार इस प्रकार हैं:
बिटोनल स्कैन किए गए दस्तावेज़: 5 से 30KB प्रति पृष्ठ 300dpi पर, PDF या TIFF से 3 से 10 गुना छोटा।
रंग स्कैन किए गए दस्तावेज़: 30 से 100KB प्रति पृष्ठ 300dpi पर, JPEG से 5 से 10 गुना छोटा।
फ़ोटो: JPEG से 2 गुना छोटा, JPEG-2000 के लगभग समान।
पैलेटीकृत छवियाँ: GIF से 2 गुना छोटा, यदि पाठ है तो 10 गुना तक।
DjVu का उपयोग दुनिया भर में सैकड़ों वाणिज्यिक, सरकारी और गैर-वाणिज्यिक वेब साइटों द्वारा स्कैन किए गए दस्तावेज़ों, डिजिटल दस्तावेज़ों और उच्च-रिज़ॉल्यूशन फ़ोटो वितरित करने के लिए किया जाता है।
DjVu के बारे में डेमो और सामान्य जानकारी http://www.djvuzone.org, या http://www.lizardtech.com पर पाई जा सकती है।
DjVu मूल रूप से AT&T Labs-Research में विकसित किया गया था। AT&T ने मार्च 2000 में DjVu को LizardTech Inc. को बेच दिया।
DjVu को एक वेब मानक के रूप में बढ़ावा देने के प्रयास में, LizardTech का प्रबंधन अक्टूबर 2000 में GNU GPL के तहत DjVu के संदर्भ कार्यान्वयन को जारी करने के लिए पर्याप्त रूप से प्रबुद्ध था। DjVuLibre ("déjà vu libre" फ्रेंच की तरह उच्चारित), उस कोड का एक उन्नत संस्करण है जो DjVu के मूल आविष्कारकों द्वारा बनाए रखा गया है। यह LizardTech के DjVu सॉफ्टवेयर v3.5 के साथ संगत है।
इस पैकेज में शामिल हैं:
पूर्ण-विकसित DjVu फ़ाइल दर्शक और ब्राउज़र प्लगइन DjView4 एक अलग पैकेज के रूप में उपलब्ध है।
DjVuLibre-3.5 वेब से उपलब्ध विभिन्न घटकों पर निर्भर करता है।
अधिकांश नवीनतम लिनक्स वितरण पहले से ही इनके साथ आते हैं।
आप चाहें तो उन्हें डाउनलोड और संकलित भी कर सकते हैं।
इस फ़ाइल के अंत में सिस्टम-विशिष्ट नोट्स पढ़ना सुनिश्चित करें।
संकलक -- विकास GCC g++ संकलक के साथ किया जाता है, जो इसलिए सभी प्लेटफार्मों के लिए अनुशंसित है। CLANG संकलक का प्रयास किया गया है और यह काम करता प्रतीत होता है, लेकिन इसके आउटपुट का गंभीरता से परीक्षण नहीं किया गया है।
LIBJPEG/LIBTIFF --
DjVu फ़ाइलों की एक छोटी संख्या आंतरिक रूप से IW44 तरंगिका एन्कोडिंग के बजाय JPEG एन्कोडिंग का उपयोग करती है। इन फ़ाइलों को IJG libjpeg लाइब्रेरी http://www.ijg.org के संस्करण 6a या 6b का उपयोग करके संसाधित किया जाता है।
कुछ उपयोगिता प्रोग्राम TIFF फ़ाइलों को पढ़ने में सक्षम हैं। ये प्रोग्राम LIBTIFF लाइब्रेरी http://libtiff.org पर निर्भर करते हैं।
आप DjVuLibre को JPEG या TIFF समर्थन के बिना भी संकलित कर सकते हैं।
आपको शायद कभी अंतर न दिखे।
संभावना है कि केवल कमांड "./configure", "make" और "make install" चलाने से सब कुछ काम करेगा।
ध्यान दें कि यदि आप git clone का उपयोग करके djvulibre स्रोत प्राप्त करते हैं तो कोई configure फ़ाइल नहीं होगी। इसके बजाय एक स्क्रिप्ट 'autogen.sh' है जो automake का उपयोग करके वास्तविक configure स्क्रिप्ट उत्पन्न और कॉल करती है। चूंकि सभी autogen.sh तर्क configure को पास किए जाएंगे, आप autogen.sh को configure के प्रतिस्थापन के रूप में मान सकते हैं।
विभिन्न विकल्प और पर्यावरण चर कॉन्फ़िगरेशन स्क्रिप्ट के निष्पादन को प्रभावित करते हैं। "configure --help" टाइप करके एक पूरी सूची प्राप्त की जा सकती है। आगे के विवरण के लिए INSTALL फ़ाइल भी देखें। यहाँ सबसे महत्वपूर्ण हैं।
विकल्प "--prefix=PREFIXDIR" यह विकल्प निर्दिष्ट करता है कि DjVuLibre सॉफ्टवेयर कहाँ स्थापित किया जाएगा। डिफ़ॉल्ट प्रीफ़िक्स /usr/local है।
विकल्प "--enable-desktopfiles[=(yes|no)]" प्रथागत xdg निर्देशिकाओं में आइकन और mime प्रकार फ़ाइलें स्थापित करता है। डिफ़ॉल्ट "yes" है।
विकल्प "--with-jpeg=JPEGDIR" यह विकल्प एक निर्देशिका निर्दिष्ट करता है जहाँ JPEG लाइब्रेरी संकलित की गई है। इस निर्देशिका में इन्क्लूड फ़ाइलें और लाइब्रेरी दोनों शामिल हैं। इस विकल्प के बिना, कॉन्फ़िगरेशन स्क्रिप्ट JPEG लाइब्रेरी को मानक स्थानों में खोजेगी। जब सब कुछ विफल हो जाता है, तो आप बस पर्यावरण चर JPEG_CFLAGS और JPEG_LIBS को परिभाषित कर सकते हैं।
विकल्प "--with-tiff=TIFFDIR" यह विकल्प एक निर्देशिका निर्दिष्ट करता है जहाँ LIBTIFF लाइब्रेरी संकलित की गई है। इस निर्देशिका में इन्क्लूड फ़ाइलें और लाइब्रेरी दोनों शामिल हैं। इस विकल्प के बिना, कॉन्फ़िगरेशन स्क्रिप्ट LIBTIFF लाइब्रेरी को मानक स्थानों में खोजेगी। जब सब कुछ विफल हो जाता है, तो आप बस पर्यावरण चर TIFF_CFLAGS और TIFF_LIBS को परिभाषित कर सकते हैं।
चेतावनियों और त्रुटियों के लिए कॉन्फ़िगरेशन स्क्रिप्ट के आउटपुट की हमेशा जाँच करें। विशेष रूप से, कॉन्फ़िगरेशन स्क्रिप्ट djview के संकलन को अक्षम कर सकती है यदि वह आवश्यक लाइब्रेरी और उपयोगिताओं का पता नहीं लगा सकती। चेतावनी संदेश जानने का एकमात्र तरीका हैं।
आप टाइप करके संकलन कर सकते हैं
$ make
संकलन में कुछ मिनट लग सकते हैं। चेतावनियों और त्रुटियों के लिए फिर से आउटपुट की जाँच करें। अंत में एक संक्षिप्त संदेश आपको बताता है कि संकलन सफल रहा। आप फिर स्थापना के साथ आगे बढ़ सकते हैं।
टाइप करें:
$ make install
या यदि आवश्यक हो:
$ sudo make install
चाहिए:
जहाँ ${prefix} कॉन्फ़िगरेशन स्क्रिप्ट के prefix विकल्प द्वारा निर्दिष्ट निर्देशिका को संदर्भित करता है, जो डिफ़ॉल्ट रूप से "/usr/local" है, और उपरोक्त पथों को ./configure और make के उपयुक्त तर्कों का उपयोग करके ठीक-ठाक किया जा सकता है।
हम अनुशंसा करते हैं कि आप पहले homebrew स्थापित करें और निम्नलिखित पैकेज प्राप्त करने के लिए कमांड "brew install" का उपयोग करें: $ brew install autoconf automake libtool pkg-config $ brew install jpeg libtiff
ध्यान दें कि homebrew पहले से ही एक djvulibre पैकेज के साथ आता है। निम्नलिखित निर्देश बताते हैं कि djvulibre को स्टैंडअलोन तरीके से कैसे संकलित किया जाए। आप ऐसा करना चाह सकते हैं यदि आप djvulibre का नवीनतम संस्करण चाहते हैं। अन्यथा, संभावना है कि आपको केवल djvulibre homebrew पैकेज स्थापित करना चाहिए। $ brew install djvulibre
लेकिन अधिकांश लोगों को homebrew पैकेज स्थापित करना ही पर्याप्त लगना चाहिए।
तब आप configure चला सकते हैं $ ./configure --disable-desktopfiles
तब आप संकलित कर सकते हैं $ make
"make install" चलाने से djvulibre /usr/local निर्देशिका में स्थापित हो जाएगा। यह एक अच्छा विचार नहीं हो सकता है क्योंकि वे homebrew के साथ हस्तक्षेप करेंगे। आप इसके बजाय DESTDIR=... के साथ एक वैकल्पिक निर्देशिका निर्दिष्ट कर सकते हैं: $ make install DESTDIR=/usr/local/djvulibre-install
निर्देशिका win32 देखें। zlib, jpeg और tiff निर्देशिकाओं को README फ़ाइलों में सुझाए गए ओपन सोर्स कोड से भरें। निर्देशिकाओं का नाम कैसे रखें, यह देखने के लिए win32/djvulibre/dirs.props जाँचें। फिर win32/djvulibre/djvulibre.sln खोलें और संकलित करें।
अगला कदम djview पैकेज में दिए गए निर्देशों का पालन करना होगा ताकि एक djview प्रोजेक्ट बनाया जा सके और इसे इस समाधान में जोड़ा जा सके। अंत में आप djvulibre+djview इंस्टॉलर तैयार करने के लिए स्क्रिप्ट djvulibre-install.sh और djvulibre.nsi का उपयोग कर सकते हैं।
आपको पहले mingw कंपाइलर और msys वातावरण स्थापित करना होगा। अधिक जानकारी के लिए www.mingw.org देखें। msys शेल से, सामान्य कमांड चलाएँ $ configure $ make फिर निर्देशिका libdjvu/.libs से djvulibre dll और निर्देशिका tools/.libs से निष्पादन योग्य फ़ाइलें एकत्र करें। कृपया स्क्रिप्ट 'configure' के तर्कों के बारे में जानकारी के लिए फ़ाइल INSTALL देखें।
बस सामान्य कमांड चलाएँ $ configure $ make $ make install कृपया स्क्रिप्ट 'configure' के तर्कों के बारे में जानकारी के लिए फ़ाइल INSTALL देखें।