
CVE-2020-25860 फिक्स के लिए एकीकरण उदाहरण
यह भंडार RAUC अद्यतन को मौजूदा परियोजनाओं में एकीकृत करने को सरल बनाने के उदाहरण प्रदान करता है। आप इस भंडार के महत्वपूर्ण अद्यतनों और ऊपरी प्रवाह निर्माण प्रणालियों में एकीकरण की सूचनाएँ प्राप्त करने के लिए https://github.com/rauc/rauc-1.5-integration/issues/1 पर सदस्यता ले सकते हैं।
उदाहरण वर्तमान ऊपरी प्रवाह संस्करणों से लिए गए हैं, इसलिए मौजूदा परियोजना की आयु के आधार पर कुछ समायोजन की आवश्यकता हो सकती है।
21 दिसंबर को प्रकाशित होने वाली सलाह https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md पर उपलब्ध है। यह भंडार भी उस समय सार्वजनिक कर दिया जाएगा।
यदि rauc-1.5.tar.xz संग्रह अभी तक डाउनलोड के लिए उपलब्ध नहीं है, तो इस भंडार से संग्रह को अपने DL_DIR (आमतौर पर आपके build/conf/local.conf में परिभाषित) में कॉपी करें।
अद्यतन रेसिपी को oe_yocto/recipes-rauc-1.5/rauc/* से उपयुक्त परियोजना-विशिष्ट लेयर में कॉपी करें, मौजूदा अनुकूलन (जैसे system.conf या ca.cert.pem) को बनाए रखने का ध्यान रखें।
oe_yocto/classes/verity_bundle.bbclass को इस लेयर की classes/ निर्देशिका में कॉपी करें (आपको वह निर्देशिका बनाने की आवश्यकता हो सकती है)। यह वर्ग meta-rauc लेयर से bundle.bbclass का प्रतिस्थापन है, जिसमें verity प्रारूप में बंडल बनाने के लिए अतिरिक्त समर्थन है। वर्ग खोज क्रम में समस्याओं से बचने के लिए भिन्न नाम का उपयोग किया जाता है।
यदि आप verity प्रारूप में बंडल बनाना चाहते हैं, तो अपनी बंडल रेसिपी में inherit bundle के बजाय inherit verity_bundle का उपयोग करें और प्रारूप का चयन करने के लिए RAUC_BUNDLE_FORMAT = "verity" सेट करें। एक उदाहरण oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb के रूप में उपलब्ध है।
यदि rauc-1.5.tar.xz संग्रह अभी तक डाउनलोड के लिए उपलब्ध नहीं है, तो इस भंडार से संग्रह को अपने PTXdist स्रोत निर्देशिका में कॉपी करें।
ptxdist/rules/rauc.* निर्देशिका को अपने BSP में rules/ पर कॉपी करें। इसके परिणामस्वरूप लक्ष्य और होस्ट के लिए एक अद्यतन RAUC बाइनरी प्राप्त होती है।
यदि आप PTXdist से डिफ़ॉल्ट RAUC बंडल नियम का उपयोग करते हैं, तो ptxdist/config/images/rauc.config को अपने BSP में config/images/ पर कॉपी करें। शामिल मैनिफेस्ट टेम्पलेट plain बंडल प्रारूप को कॉन्फ़िगर करता है, इसलिए आवश्यकतानुसार इसे बदलें।
यदि आप कस्टम बंडल का उपयोग करते हैं और verity प्रारूप में बदलना चाहते हैं, तो आपको इसके लिए स्वयं मैनिफेस्ट को अद्यतन करना होगा।
यदि rauc-1.5.tar.xz संग्रह अभी तक डाउनलोड के लिए उपलब्ध नहीं है, तो इस भंडार से संग्रह को अपनी dl/rauc/ निर्देशिका में कॉपी करें।
buildroot/package/rauc/rauc.* को अपने Buildroot चेकआउट में package/rauc/ पर कॉपी करें। इसके परिणामस्वरूप लक्ष्य और होस्ट के लिए एक अद्यतन RAUC बाइनरी प्राप्त होती है।
चूंकि Buildroot अद्यतन बंडलों के निर्माण को स्वचालित नहीं करता है, यदि आप verity बंडल प्रारूप का उपयोग करना चाहते हैं, तो आपको अपने मैनिफेस्ट को मैन्युअल रूप से अद्यतन करना होगा।
RAUC v1.3 (2020-04-23 को जारी) ने OpenSSL संस्करण 1.1.1 से पहले के संस्करणों के लिए समर्थन हटा दिया, क्योंकि वे अब OpenSSL परियोजना द्वारा समर्थित नहीं थे:
यदि आपका सिस्टम अभी भी OpenSSL के असमर्थित संस्करण का उपयोग करता है और RAUC 1.5 के साथ 1.1.1 में अद्यतन करना संभव नहीं है, तो एक बैकपोर्ट पैच (0001-backport-to-OpenSSL-1.0.2.patch) उपलब्ध है। ध्यान दें कि इस पैच का परीक्षण का दायरा 1.5 रिलीज़ जितना व्यापक नहीं है।
RAUC 1.5 में, लूप डिवाइस ioctl LOOP_SET_BLOCK_SIZE का उपयोग प्रदर्शन अनुकूलन के लिए लॉजिकल ब्लॉक आकार को 4096 पर सेट करने के लिए किया जाता है। इसे सेट न कर पाना महत्वपूर्ण नहीं है और केवल डीबग स्तर के संदेश द्वारा नोट किया जाता है।
लेकिन चूंकि LOOP_SET_BLOCK_SIZE प्रतीक कर्नेल संस्करण 4.14 से पहले मौजूद नहीं है, इन पुराने कर्नेल हेडर के खिलाफ संकलन विफल हो जाएगा। इसे हल करने के लिए, प्रतीक को वैकल्पिक रूप से RAUC में ही परिभाषित किया जाना चाहिए। इसके लिए एक पैच (0001-src-mount.c-fix-build-with-kernel-4.14.patch) उपलब्ध है (https://github.com/rauc/rauc/pull/673 से)।
यह सुधार RAUC 1.5.1 का भी हिस्सा होगा।