Интернэтийн итгэмжлэгдсэн нууц түлхүүр нь ердөө "4" байжээ: eMudhra CA-ийн түүхэн алдаа ба хөгжүүлэгчдийн аюулгүй байдал
Дэлхийн нийт интернэт сүлжээ, тэр дундаа HTTPS протокол ганцхан суурь зарчим дээр тогтдог: Сертификэт олгогч байгууллагын (Certificate Authority - CA) хувийн түлхүүрийг (private key) хэн ч тааж эсвэл урвуулан тооцоолж чадахгүй.
Гэтэл энэ долоо хоногт кибер аюулгүй байдлын түүхэнд гарч байгаагүй хачирхалтай бөгөөд ноцтой явдал боллоо. Google, Apple, Microsoft, Mozilla-ийн системүүдэд бүрэн итгэмжлэгдсэн, дэлхий даяар 60 гаруй сая сертификэт олгосон Энэтхэгийн eMudhra байгууллагын 8 ширхэг завсрын CA түлхүүрүүд нь ердөө хэдхэн миллисекундийн дотор тайлагдах өчүүхэн тоо байсан нь илчлэгдэв. Тэдгээрийн нэгнийх нь хувийн түлхүүр бүр үгийн шууд утгаар 4 гэсэн тоо байжээ!
384 битийн оронд ердөө 8 бит: Криптографийн хар дарсан зүүд
Асуудалд өртсөн завсрын сертификэтүүд (Intermediate CAs) нь NIST P-384 эллиптик муруйн (elliptic-curve) криптограф дээр суурилсан байв.
P-384 стандартын дагуу хувийн түлхүүр нь ойролцоогоор 115 оронтой асар том, бүрэн санамсаргүй 384 битийн тоо байх учиртай. Ийм түлхүүрийг орчин үеийн бүх суперкомпьютерийг нийлүүлээд ч таах боломжгүй гэж үздэг.
Гэтэл eMudhra-ийн үүсгэсэн 8 завсрын CA-ийн нууц түлхүүрүүд нь бүгд 256-аас бага (өөрөөр хэлбэл 1 байт буюу 8 бит) утгууд байжээ!
- Түлхүүрүүдийн бодит утга нь:
4,56,66,115,155,237... гэх мэт байв. - 8 бит гэдэг нь ердөө 256 боломжит хувилбартай гэсэн үг. Энгийн зөөврийн компьютер дээр
brute-forceскрипт ажиллуулахад 0.1 секунд ч хүрэхгүй хугацаанд нийтийн түлхүүрээс хувийн түлхүүрийг нь олж авсан байна.
Аюулгүй байдлын судлаач Скотт Хелме (Scott Helme) үүнийг баталгаажуулж, өөрийн зөөврийн компьютер дээрээс хэдхэн миллисекундэд бүх түлхүүрийг бодож гаргаснаа нийтэлжээ.
"Энд асуудал үүслээ – Wayne": Систем хэрхэн илрэв?
Энэхүү сүйрлийг анх "Wayne" хэмээх кибер судлаач Common CA Database (CCADB) буюу дэлхийн бүх CA-уудын нээлттэй бүртгэлд шалгалт хийж байхдаа илрүүлжээ.
Тэрээр тухайн 8 завсрын CA-ийн түлхүүр сул байгааг батлахын тулд түлхүүр бүрээр:
"We have a problem here – Wayne"
гэсэн текстийг дижитал гарын үсгээр баталгаажуулан Google, Apple, Microsoft, Mozilla болон eMudhra руу яаралтай илгээсэн байна. Mozilla-ийн инженерийн баг мэдээллийг хүлээн авснаас хойш нэг цагийн дотор ямар ч нэмэлт мэдээлэлгүйгээр түлхүүрүүдийг өөрсдөө хялбархан гарган авч, аюул бодитой болохыг баталжээ.
Завсрын CA түлхүүр алдагдвал юу болох вэ?
Хэрэв халдагч жирийн нэг веб сайтын SSL түлхүүрийг авбал зөвхөн тэр сайтыг л хуурамчаар үйлдэж чадна. Харин завсрын CA-ийн хувийн түлхүүртэй болсон халдагч дэлхийн дурын домэйнд (банк, төрийн байгууллага, имэйл сервер, тэр байтугай google.com-д ч) хүчинтэй SSL сертификэт шинээр үйлдвэрлэх (mint хийх) эрхтэй болдог.
Түүнчлэн 8 сертификэтийн 2 нь Windows-ийн итгэмжлэгдсэн "Code Signing" буюу програм хангамжид гарын үсэг зурах түлхүүр байсан тул хортой кодыг (malware) Microsoft-ийн шалгалтыг давахуйц "найдвартай хөгжүүлэгчийн програм" болгон хувиргах боломж бүрдсэн байв.
Хэрхэн ийм алдаа гарсан бэ? HSM ба Скриптийн алдаа
eMudhra нь аюулгүй байдлын тусгай техник хангамж болох HSM (Hardware Security Module) ашиглан "Түлхүүр бүтээх ёслол" (Key Ceremony) зохион байгуулдаг.
Тэдний тайлбарласнаар, түлхүүр үүсгэх автоматжуулсан скриптэд алдаа гарснаас болж HSM дотор жинхэнэ 384 битийн найдвартай түлхүүрээс гадна тестийн зориулалттай маш сул хоёрдогч түлхүүр давхар үүссэн байна. Улмаар түлхүүрийн нэршил (label) нь бараг ижил байснаас болж оператор нь үйлдвэрлэлийн (production) орчинд сул түлхүүрийг экспортолж, баталгаажуулчихжээ!
Хамгийн хачирхалтай нь энэ завсрын сертификэтүүд 2025 оны 4-р сард үүсгэгдэж, Sectigo байгууллагаар cross-sign хийлгэн баталгаажсан бөгөөд аюулгүй байдлын 2 ч удаагийн аудит хяналтыг ямар ч асуудалгүй давсан байжээ!
Браузерууд аврагдсан ч Backend хөгжүүлэгчид яагаад аюулд оров?
Chrome, Firefox, Safari зэрэг веб хөтчүүд уг мэдээллийг авмагцаа хэдхэн цагийн дотор өөрсдийн trust store-оос eMudhra-ийн завсрын түлхүүрүүдийг хүчингүй болгож (blocklist-д оруулав). Түүнчлэн хөтчүүд Certificate Transparency (CT) логийг заавал шалгадаг тул нийтийн логт бүртгэгдээгүй хуурамч сертификэтүүд браузер дээр ажиллах боломж бага.
Гэвч хөгжүүлэгчдийн өдөр тутмын backend орчин шал өөр зарчмаар ажилладаг:
Скотт Хелмегийн туршилтаар уг сул түлхүүрээр хуурамчаар үйлдэж хийсэн сертификэтийг:
- cURL: Анхдагч тохиргоотой
curlасуудалгүй зөвшөөрчSSL certificate verify okгэсэн хариу буцаав. - Python:
requestsсан ямар ч алдаа заалгүй TLS холболтыг амжилттай хийсэн. - Node.js:
httpsмодуль тухайн холболтыг "найдвартай" гэж бүртгэв.
Учир нь Linux болон macOS серверүүд, Docker контейнерууд, CLI хэрэгслүүд нь диск дээр хадгалагдсан локал CA bundle файлд (/etc/ssl/cert.pem эсвэл ca-certificates) итгэдэг бөгөөд веб хөтөч шиг онлайн CRL/OCSP болон CT логийг шалгадаггүй. Тэгэхээр таны серверийн CA багц шинэчлэгдэх хүртэл энэ цоорхой Man-in-the-Middle (MitM) халдлагад нээлттэй хэвээр байсан гэсэн үг юм.
Хөгжүүлэгчид юу хийх ёстой вэ?
- Сервер болон контейнерийнхээ CA багцыг шинэчил:
- Ubuntu/Debian:
sudo apt update && sudo apt install --upgrade ca-certificates - RedHat/CentOS:
sudo yum update ca-certificates - Бааз контейнеруудаа (Docker base images: Alpine, Ubuntu гэх мэт) сүүлийн хувилбар руу нь дахин build хийх.
- Ubuntu/Debian:
- Кодын сангаа дахин нягтал:
- Сервис хоорондын (mTLS эсвэл API дуудалтууд) харилцаанд зөвхөн итгэмжлэгдсэн дотоод CA-г ашиглаж, шаардлагатай бол сертификэт pinning ашиглах.
- Automated Key Management-д суралц:
- Түлхүүр үүсгэх процессийг гараар хийх нь ийм инээдэмтэй боловч аюултай хүний хүчин зүйлийн алдаа дагуулдгийг энэ жишээ санууллаа. Бүх криптограф түлхүүрийн хувьд үүсгэхээс эхлээд шалгах хүртэл автоматжуулсан тест (entropy and key-length validation) заавал тавьж байхыг сануулж байна.
Эх сурвалж: CSO Online, Scott Helme Research Blog, Mozilla Dev-Security-Policy Report
Сэтгэгдэл
Ачаалж байна...