
जूनियर बैकएंड उम्मीदवार अभ्यास: Melange के साथ dasel CLI (v3.3.1) को पैकेज करना, CVE-2026-33320 को ठीक करना, और Apko का उपयोग करके एक न्यूनतम कंटेनर इमेज बनाना।
Melange के साथ पैकेज dasel v3.3.1, apko के साथ एक कंटेनर इमेज बनाएँ, और CVE-2026-33320 को ठीक करें।
पूर्वापेक्षाएँ: Docker। सभी बिल्ड चरण कंटेनरों के अंदर चलते हैं — स्थानीय melange/apko इंस्टॉल की आवश्यकता नहीं है। सभी कमांड linux/amd64 पर रिपो रूट से चलाएँ (या linux/amd64 इम्यूलेशन के साथ Docker Desktop)।
चरण 0 — साइनिंग कुंजी जनरेट करें (एक-बार)
docker run --rm -v "/${PWD}":/work cgr.dev/chainguard/melange keygen
चरण 1 — पैकेज बिल्ड करें
docker run --privileged --rm -v "/${PWD}":/work cgr.dev/chainguard/melange build melange/dasel.yaml --arch amd64 --signing-key melange.rsa
आउटपुट: packages/x86_64/dasel-3.3.1-r1.apk
चरण 2 — पैकेज का परीक्षण करें
docker run --privileged --rm -v "/${PWD}":/work cgr.dev/chainguard/melange test melange/dasel.yaml --arch amd64 --repository-append //work/packages --keyring-append //work/melange.rsa.pub
चरण 3 — इमेज बिल्ड करें
docker run --rm -v "/${PWD}":/work cgr.dev/chainguard/apko build apko/dasel.yaml dasel-image:latest dasel-image.tar --arch amd64 -k melange.rsa.pub
आउटपुट: dasel-image.tar। apko/dasel.yaml में @local ./packages रिपॉज़िटरी apko को Step 1 में बनाया गया APK इंस्टॉल कराती है। -k apko को Melange साइनिंग कुंजी पर भरोसा करने देता है। apko टैग में आर्किटेक्चर जोड़ता है, इसलिए लोड की गई इमेज dasel-image:latest-amd64 है।
चरण 4 — इमेज लोड करें
docker load --input dasel-image.tar
चरण 5 — इमेज टेस्ट चलाएँ
bash tests/test.sh
दस टेस्ट: बाइनरी मौजूद है और चलाने योग्य है, JSON फ्लैट कुंजी क्वेरी, आर्किटेक्चर amd64 है, CVE बजट सीमा YAML alias बम को अस्वीकार करती है, सामान्य YAML ग्रीन-पाथ रीड, नेस्टेड JSON पाथ, ऐरे इंडेक्स एक्सेस, TOML फ़ॉर्मेट, CVE गहराई सीमा 33-स्तरीय alias श्रृंखला को अस्वीकार करती है, malformed JSON अस्वीकृत।
melange/CVE-2026-33320.patch parsing/yaml/yaml_reader.go में दो गार्ड जोड़ता है:
maxExpansionDepth = 32 — 32 स्तरों से गहरी alias श्रृंखलाओं को अस्वीकार करता हैmaxExpansionBudget = 100 — कुल 100 से अधिक alias समाधानों वाले दस्तावेज़ों को अस्वीकार करता हैदोनों yaml expansion युक्त संदेश के साथ एक गैर-शून्य exit कोड लौटाते हैं। tests/test.sh में टेस्ट 4 इसकी पुष्टि करता है।
चलाए गए कमांड: melange keygen → melange build → melange test → apko build → docker load → tests/test.sh
सभी चरण linux/amd64 पर पास हुए।
अधिक समय मिले तो मैं क्या सुधारता:
test.sh में इमेज टैग और tarball नाम को पैरामीटराइज़ करना