Alpine Linux में 8 साल पुराना SSH पासवर्ड बग

मूल शीर्षक: sshole

यह क्यों महत्वपूर्ण है

Docker ecosystem में musl-based images बड़े पैमाने पर इस्तेमाल होती हैं, इसलिए यह supply chain security के लिए गंभीर सवाल है।

2016 से Alpine Linux, OpenWrt और अनगिनत Docker images पर musl libc की एक खामी के कारण root समेत key-only accounts में 256 से लंबा कोई भी पासवर्ड काम करता था।

यह बग तीन अलग-अलग decisions की टकराहट से बना। पहला: 2012 में musl libc ने तय किया कि crypt() अब NULL नहीं लौटाएगी — failure पर वह '*' (star) character लौटाएगी, जो Unix में locked account का पुराना symbol है। दूसरा: उसी साल musl ने SHA-512 crypt में 256-byte की cap लगाई ताकि giant password से server busy न हो। नतीजा — 256 bytes से लंबा पासवर्ड fail होता है, और fail होने पर crypt() '*' देती है। तीसरा: 2016 में CVE-2016-6210 के fix के तहत OpenSSH ने timing attack रोकने के लिए non-existent users के लिए एक fake salt से hashing शुरू की। इस fix ने '*' वाले locked accounts को भी उसी loop में खींच लिया। अब जब कोई 257+ character का पासवर्ड डालता है, तो crypt() '*' देती है — और stored field भी '*' है। दोनों match। दरवाज़ा खुल जाता है। root, deploy users, LDAP users, Alpine के AWS/Azure default images — सब affected। CVE-2019-5021 में Alpine ने root को '!' से lock किया, लेकिन PAM के बिना '!' भी उसी तरह behave करता है। यह fix 2024 तक चुपचाप अधूरा रहा।

स्रोत

sshhole.com — मूल लेख पढ़ें →