Bỏ qua điều hướng tới nội dung chính
Tin tức AI

Git trên Mac vẫn tin chứng chỉ eMudhra đã lộ khóa, kiểm tra máy bằng 1 lệnh

📑 Mục lục chi tiết bài viết (30 mục)
Git trên Mac vẫn tin chứng chỉ eMudhra đã lộ khóa, kiểm tra máy bằng 1 lệnh

Git trên Mac vẫn tin chứng chỉ eMudhra đã lộ khóa

Trên một chiếc Mac chạy git 2.54.0 của Apple, một lệnh clone tới github.com giả chạy xong không một cảnh báo. File README mở đầu bằng chữ INTERCEPTED. Lúc đó mình hiểu trình duyệt an toàn thì Terminal vẫn chưa an toàn. Safari chặn chứng chỉ eMudhra đã lộ khóa từ 19 tháng 10, còn git trên Mac thì vẫn tin chuỗi chứng chỉ đó.

Chạy git ls-remote https://git-emudhra.we-have-a-problem.com/, nếu báo lỗi thì máy an toàn, nếu trả về một commit thì máy đang tin chứng chỉ eMudhra đã lộ khóa.

Khóa riêng của 8 chứng chỉ eMudhra chỉ là số nguyên nhỏ dưới 256

Trước khi sửa, mình muốn anh em thấy lỗi này nhỏ cỡ nào.

Sơ đồ khóa riêng P-384 của eMudhra với 376 bit đầu toàn số 0

376 bit đầu toàn số 0 khiến khóa P-384 của eMudhra chỉ còn số nguyên nhỏ

Một khóa P-384 đúng chuẩn là số ngẫu nhiên 384 bit, tức khoảng 2 mũ 384 khả năng. Vậy mà 8 khóa eMudhra có 376 bit đầu toàn số 0, nên kẻ tấn công đếm từ 1 là ra. Lỗi nằm ở khâu sinh khóa, không nằm ở thuật toán P-384.

Theo eMudhra, khóa sinh trên HSM chuẩn FIPS 140-2 Level 3. Rồi một bước wrap và unwrap sinh thêm bộ khóa yếu cạnh bộ khóa mạnh gốc. Bộ yếu đó mới là bộ công bố lên root store.

Lãnh đạo hãng ngày 26/10/2026 gọi đây là lỗi script tạo CA khóa yếu. Hai lần kiểm toán độc lập đã trôi qua mà không phát hiện ra khóa yếu.

8 khóa eMudhra 156, 230, 115, 56, 155, 4, 66 và 237 được khôi phục trong chưa tới một giây mỗi khóa

Scott Helme tự khôi phục cả 8 giá trị từ chứng chỉ công khai, mỗi khóa mất chưa tới một giây. EM DV TLS CA – G3B là 156, EM DV TLS CA – G3C là 230, EM EV TLS CA – G3B là 115, EM EV TLS CA – G3C là 56. EM OV TLS CA – G3B là 155, EM OV TLS CA – G3C là 4, EM OV CS CA – G3B là 66 và EM OV CS CA – G3C là 237.

Mỗi khóa gồm 47 byte toàn số 0 rồi một byte cuối, nên tối đa chỉ cần thử 255 bước là ra. DEV act one chạy lại khóa EM OV TLS CA – G3C chỉ với 4 lần đoán trong 2 mili giây, từ file chứng chỉ công khai dài 1.240 byte. Ian Carroll nhận xét các khóa yếu ngay từ lúc sinh ra và không thể khoanh lại được, vì khóa đã công khai từ ngày chứng chỉ tồn tại. Helme cũng xác nhận Claude khôi phục được các khóa chỉ với một prompt duy nhất.

Con số 30.800 có hai cách đếm. Mosaic Singularity ghi 30.800 chứng chỉ G3 trong một hệ sinh thái khách hàng bị ảnh hưởng, theo cập nhật số 6 ngày 28/10/2026 của eMudhra. OffSec ghi phân tích CT của Mozilla đếm được khoảng 30.800 precertificate chưa hết hạn nối về họ emSign ECC Root CA – G3. Trong đó 30.791 cái thuộc về 2 CA cấp dưới của InCommon.

Wayne báo cáo vụ lộ khóa eMudhra ngày 17 tháng 10 bằng thông điệp ký bằng cả 8 khóa

Ngày 17/10/2026, một nhà nghiên cứu chỉ biết với tên Wayne báo cáo vụ việc cho các chương trình root của Apple, Google, Microsoft và Mozilla. Bằng chứng là thông điệp đã ký bằng cả 8 khóa riêng, với nội dung “We have a problem here – Wayne”. Chrome đẩy bản chặn CRLSet lúc 19:45 UTC, Mozilla ghi nhận báo cáo lúc 20:06 UTC. Firefox chặn qua OneCRL và tới 22:59 UTC thì bản cập nhật đã tới mọi người dùng Firefox dùng cấu hình chuẩn.

eMudhra thu hồi cả 8 chứng chỉ trung gian vào ngày 18/10/2026, từ 09:24 tới 09:38 UTC. 8 chứng chỉ này được tạo ra ngày 30/4/2025 trong một lễ sinh khóa. Tức khóa yếu đã nằm công khai hơn một năm rưỡi trước khi có người báo cáo.

8 chứng chỉ trung gian gồm 6 cái cấp chứng chỉ TLS cho website (DV, OV, EV) cộng 2 cái cấp chứng chỉ ký code. Đó là EM OV CS CA – G3B và EM OV CS CA – G3C.

Mỗi chứng chỉ trung gian TLS có 2 chứng chỉ, một nối về root emSign ECC Root CA – G3, một do Sectigo cross-sign và nối về root AAA Certificate Services. Tổng cộng 12 chứng chỉ TLS bị chặn. Hạn dùng kéo dài tới cuối thập kỷ 2030.

CVE-2026-111943 và quyết định rút khỏi mảng TLS của eMudhra ngày 22 tháng 10

CVE-2026-111943 được cấp số vào buổi sáng ngày 22/10/2026. Cùng ngày hội đồng eMudhra quyết định tự nguyện rút khỏi mảng kinh doanh chứng chỉ SSL/TLS toàn cầu. Lý do hãng nêu là chi phí tăng và nhiều tổ chức lớn cấp SSL/TLS miễn phí, mảng này chỉ chiếm khoảng 1% doanh thu hợp nhất. Hãng cam kết hoàn thành báo cáo nguyên nhân gốc qua quy trình CCADB, nhưng báo cáo vẫn chưa công bố. eMudhra nói chưa xác nhận được nguyên nhân gốc chính xác. KPMG được chỉ định làm đơn vị rà soát độc lập ngày 30/10/2026, theo Mosaic Singularity.

eMudhra khẳng định không có chứng chỉ end-entity nào được cấp từ 8 chứng chỉ trung gian bị ảnh hưởng, chỉ 1 trong 8 từng được đưa vào production. Hạ tầng không bị xâm nhập, không mất dữ liệu. OffSec ghi nhận từ 20 tới 21/10/2026, có 107.107 chứng chỉ được ký bằng 6 khóa đã lộ và ghi vào log CT. Trong đó 106.050 cái là chứng chỉ proof-of-concept cho google.com, do người ngoài ký sau khi khóa đã lộ.

Safari đã chặn chứng chỉ eMudhra từ 19 tháng 10, git và curl trên Mac thì chưa

Cùng một bộ chứng chỉ, nửa macOS đã chặn, nửa còn lại vẫn tin.

So sánh Safari an toàn từ 19 tháng 10 và git curl python3 trên Mac vẫn bị ảnh hưởng

Safari, Mail và app dùng framework Apple đã chặn chứng chỉ eMudhra từ 19 tháng 10

Apple bắt đầu chặn 12 chứng chỉ TLS bị ảnh hưởng trên thiết bị Apple từ 19/10/2026, qua cập nhật cấu hình chứng chỉ tự động. Không cần cài bản cập nhật phần mềm. Apple Support 149555 ghi người không dùng Terminal thì không cần làm gì. Trang công bố ghi Apple chặn từ 22/10, theo Apple Support 149555 thì 12 chứng chỉ bị chặn từ 19/10 và root từ 23/10. Firefox, Chrome và Edge đã chặn từ 17/10/2026.

git, curl, python3, ruby, perl và openssl trên Mac vẫn đọc file cert.pem

Tool dòng lệnh trên macOS, gồm git, curl, python3, ruby, perl và openssl, cùng bất kỳ tool nào đọc file /etc/ssl/cert.pem, vẫn chấp nhận các chứng chỉ đã lộ. Trình duyệt chặn qua kênh thu hồi nhanh và bắt buộc ghi log Certificate Transparency, trong khi 8 chứng chỉ trung gian này có 0 bản ghi CT. Client bắt CT đã loại chúng từ đầu, còn tool dòng lệnh chỉ đối chiếu chuỗi chứng chỉ với file /etc/ssl/cert.pem và không đọc thông tin thu hồi.

Ai Trạng thái
Safari, Mail, app dùng framework Apple An toàn từ 19 tháng 10 năm 2026
Firefox, Chrome, Edge An toàn từ 17 tháng 10 năm 2026
git, curl, python3, ruby, perl, openssl trên macOS đọc /etc/ssl/cert.pem Bị ảnh hưởng
Homebrew git Tùy phiên bản, xem mục dưới
Linux đã cập nhật gói ca-certificates An toàn
Máy CI và máy build chạy macOS Rủi ro cao nhất

Homebrew git 2.56.0 từ chối chứng chỉ eMudhra, Homebrew git 2.49.0 vẫn chấp nhận

Với Homebrew git 2.56.0, lệnh kiểm tra trả về lỗi fatal: unable to access: SSL certificate OpenSSL verify result: unable to get local issuer certificate (20), tức nó từ chối chứng chỉ.

Nhưng thử nghiệm của The AI News Report với Homebrew git 2.49.0 vẫn bị dính. Git Homebrew trên máy đó link tới /usr/lib/libcurl.4.dylib của Apple, tức vẫn dùng thư viện curl của hệ thống. Kết quả phụ thuộc phiên bản git và thư viện curl nó link tới, nên anh em tự kiểm chứng bằng lệnh kiểm tra trên máy mình.

Máy CI và máy build chạy macOS là nhóm rủi ro cao nhất trong vụ eMudhra

Máy CI và máy build chạy macOS là nhóm rủi ro cao nhất, vì chúng tự động clone và cài đặt mà không ai xem cảnh báo. Một lệnh clone hay pull bị can thiệp có thể đưa code do kẻ tấn công chọn vào cây làm việc. Một lệnh push có thể bị chặn hoặc sửa trên đường đi kèm credential và token. Mọi cuộc gọi HTTPS khác trong toolchain đều dính cùng một lỗ hổng tin cậy.

Một lệnh git ls-remote cho biết máy Mac có tin chứng chỉ eMudhra đã lộ khóa hay không

Ranh giới an toàn đã rõ, bước tiếp theo là chạy thử một lệnh.

Terminal hiển thị lệnh git ls-remote và hai kết quả có thể xảy ra

Lệnh git ls-remote tới máy chủ kiểm tra eMudhra và cách đọc kết quả trả về

git ls-remote https://git-emudhra.we-have-a-problem.com/

Trên máy thử nghiệm, lệnh này trả về commit 2975b9930644b321e18ecae09e29c15b955e6103 ở HEAD và refs/heads/main, exit 0, tức chứng chỉ đã lộ được chấp nhận. Cách mình đọc kết quả: báo lỗi là an toàn, trả về commit là đang dính. Máy thử nghiệm chạy Apple git 2.54.0 (Apple Git-157) trên macOS đã vá đầy đủ.

Demo clone github.com giả về README bắt đầu bằng INTERCEPTED

Bằng chứng rõ nhất là demo clone đầu cuối:

git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://[email protected]/galadran/emudhra-git-test

Lệnh này clone thành công, file README bắt đầu bằng chữ INTERCEPTED, tiền tố fake-user@ để không gửi credential thật tới máy chủ thử nghiệm. Scott Helme thử chứng chỉ giả cho api.stripe.com trên máy chủ local, curl báo SSL certificate verify ok, Python hoàn tất handshake, Node báo authorized: true. Clone lặng lẽ như vậy, mình thấy mới đáng sợ.

Kẻ tấn công thật không cần tham số curloptResolve để chuyển hướng traffic git

Kẻ tấn công thật không cần tham số curloptResolve, vì họ tự chuyển hướng traffic trên đường mạng. Tham số trong demo chỉ mô phỏng việc chuyển hướng trên máy thử nghiệm. Khai thác được thì kẻ tấn công phải đứng được trên đường mạng giữa nạn nhân và GitHub. Ví dụ Wi-Fi công cộng không cách ly client, hoặc điểm phát sóng giả mạo dùng SSID quen thuộc.

Dọn 2 root eMudhra khỏi cert.pem trên Mac rồi kiểm chứng bằng bundle sạch trước khi áp dụng thật

Đã biết máy mình dính hay không, tới lúc sửa.

Terminal hiển thị lệnh awk dọn bundle, 128 chứng chỉ vào và 126 ra

Sao lưu cert.pem trên Mac trước khi gỡ root eMudhra

Sao lưu trước, vì các bước sau sửa file bundle tin cậy hệ thống.

[ -e /etc/ssl/cert.pem.orig ] || sudo cp -p /etc/ssl/cert.pem /etc/ssl/cert.pem.orig

Lệnh awk dọn bundle cert.pem từ 128 chứng chỉ xuống 126 chứng chỉ

Lệnh awk dưới đây dọn bundle thử mà không chạm hệ thống. 128 chứng chỉ vào, 126 chứng chỉ ra, mình thấy đúng hai root cần gỡ.

awk '/^(###|===) /{skip=0} /^=== .*\/CN=(AAA Certificate Services|emSign ECC Root CA - G3)$/{skip=1} !skip' /etc/ssl/cert.pem > /tmp/clean-bundle.pem

Kiểm chứng bằng bundle sạch trước khi áp dụng thật, mình chạy git -c http.sslCAInfo=/tmp/clean-bundle.pem ls-remote https://git-emudhra.we-have-a-problem.com/.

Cần gỡ cả 2 root, vì chỉ gỡ emSign ECC Root CA – G3 thì chặn được 6 trong 12 chứng chỉ. 6 chứng chỉ còn lại vẫn xác thực được qua đường cross-sign Sectigo về root AAA Certificate Services. Cảnh báo nhỏ: gỡ thêm AAA Certificate Services thì chặn hết 12, nhưng JetBrains cho biết việc này có thể làm gián đoạn cả dịch vụ lành khác. Cách sửa này cũng có cái giá của nó.

Kiểm tra lại sau khi sửa, đã gỡ cả 2 thì lệnh không in gì, báo lỗi thì khôi phục từ bản sao lưu.

openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

Trỏ git sang bundle Mozilla qua Homebrew thay vì sửa file hệ thống

Cách khác không sửa file hệ thống là trỏ git sang bundle Mozilla qua Homebrew, hoặc dùng biến môi trường GIT_SSL_CAINFO. Cách này chỉ sửa git, không sửa curl, python3 hay các tool khác đọc /etc/ssl/cert.pem.

brew install ca-certificates
git config --global http.sslCAInfo "$(brew --prefix ca-certificates)/share/ca-certificates/cacert.pem"

pip dùng bản copy root riêng nên cần trỏ PIP_CERT về cert.pem đã dọn

Cách sửa git ở trên không chạm tới pip. Pip3 đi kèm máy và pip trong venv đều dùng một bản copy root cũ của riêng nó. Anh em tự trỏ PIP_CERT về /etc/ssl/cert.pem qua file sitecustomize.py.

Cái bẫy macOS 27.2 ngày 26 tháng 10 hoàn tác workaround gỡ root eMudhra

macOS 27.2 phát hành ngày 26/10/2026 không sửa lỗi cho tool dòng lệnh. Cái bẫy nằm ở chỗ bản này ghi đè file /etc/ssl/cert.pem bằng bản của Apple, lặng lẽ trả lại 2 root người dùng đã gỡ trước đó. Apple dặn chạy lại lệnh kiểm tra sau mỗi cập nhật phần mềm. Nếu thấy root đã gỡ xuất hiện lại thì xóa bản sao lưu cũ rồi lặp lại các bước.

Apple chặn 12 chứng chỉ eMudhra từ 19 tháng 10 và hẹn bản sửa tool dòng lệnh trong bản cập nhật tương lai

Giờ tới chuyện Apple đã làm gì, và còn nợ bản sửa nào.

Dòng thời gian từ báo cáo ngày 17 tháng 10 tới public beta ngày 5 tháng 11

Ngày Diễn biến
30/4/2025 Lễ sinh khóa tạo 8 chứng chỉ trung gian eMudhra
17/10/2026 Wayne báo cáo vụ lộ khóa, trình duyệt chặn trong ngày
19/10/2026 Apple chặn 12 chứng chỉ TLS bị ảnh hưởng
22/10/2026 CVE-2026-111943 được cấp số, eMudhra rút khỏi mảng TLS
26/10/2026 macOS 27.2 phát hành, hoàn tác workaround gỡ root
29/10/2026 Apple đăng tài liệu hỗ trợ 149555
3/11/2026 Bản beta dev đầu tiên của macOS 27.3, build 26C5035r
5/11/2026 Public beta macOS 27.3 phát hành

Apple chặn 12 chứng chỉ eMudhra ngày 19 tháng 10 và root emSign ECC Root CA – G3 ngày 23 tháng 10

Apple chặn 12 chứng chỉ TLS bị ảnh hưởng từ 19/10/2026 và chặn thêm root emSign ECC Root CA – G3 từ 23/10/2026. Cả hai qua cập nhật tự động. Microsoft và Mozilla chặn ngày 20/10/2026.

Apple Support 149555 thừa nhận tool dòng lệnh vẫn chấp nhận chứng chỉ eMudhra

Apple đăng tài liệu hỗ trợ 149555 ngày 29/10/2026, thừa nhận tool dòng lệnh vẫn chấp nhận các chứng chỉ này cho tới một bản cập nhật trong tương lai. Tài liệu hướng dẫn tự gỡ root khỏi /etc/ssl/cert.pem, nhưng không đưa ngày cụ thể. Trang công bố cập nhật ngày 28/10/2026 với phát hiện là tool dev của Apple trên macOS vẫn tin các chứng chỉ đã lộ.

Beta macOS 27.3 build 26C5035r gỡ chứng chỉ eMudhra khỏi cert.pem

Bản beta dev đầu tiên của macOS 27.3, build 26C5035r, tới dev đăng ký ngày 03/11/2026, public beta theo sau ngày 05/11/2026. Bản này gỡ các chứng chỉ bị ảnh hưởng khỏi /etc/ssl/cert.pem, nên curl, git và các tool Terminal khác không còn chấp nhận chúng. MacRumors nhận định bản ổn định 27.3 có thể phải tới tháng 12 mới tới công chúng, và bản 27.2.1 có thể ra sớm hơn.

Hacker News chia hai phe về rủi ro thật của chứng chỉ eMudhra trên Mac

Sự việc đã rõ, cộng đồng chia hai phe.

Hai phe tranh luận trên Hacker News về rủi ro thật

Phe rủi ro thấp trên Hacker News cho rằng kẻ tấn công phải đứng trên đường mạng

Nhiều bình luận trên Hacker News cho rằng tiêu đề bài gốc gây hiểu lầm. Lỗi nằm ở macOS khi vẫn ship chứng chỉ cũ trong /etc/ssl/cert.pem. Git chỉ là nạn nhân như mọi app khác dùng CA hệ thống. Bình luận của Zambyte viết đại ý rằng tiêu đề đóng khung sai, git đang tin đúng CA hệ thống.

Để khai thác được thì kẻ tấn công phải đứng được trên đường mạng giữa nạn nhân và GitHub, ví dụ Wi-Fi công cộng không cách ly client. Thread git của Apple có 1.202 điểm và 413 bình luận. Thread công bố chính có 1.281 điểm và 504 bình luận, thread Scott Helme có 957 điểm và 461 bình luận.

Mình đồng tình với phe rủi ro thấp, người chỉ dùng Safari thì không cần làm gì, nhưng ở Wi-Fi công cộng, rào cản đó không cao.

Phe chuỗi cung ứng trên Hacker News chỉ ra máy build tự động clone mà không ai xem cảnh báo

Phe còn lại cho rằng file /etc/ssl/cert.pem được cả loạt tool dòng lệnh dùng, nên Apple bỏ bê khâu này là lỗi nghiêm trọng. Bình luận của aaomidi viết đại ý rằng Apple đang làm rơi trách nhiệm bảo mật. Nhiều người so sánh với Homebrew, dự án do tình nguyện viên vận hành, vẫn ship bản sửa trong vài ngày, Apple thì không.

Máy CI và máy build là chỗ đáng lo nhất, vì chúng tự động clone và cài đặt mà không ai xem cảnh báo. Bài viết trên DEV gọi đây là cửa trước cho tấn công chuỗi cung ứng. Mình đồng tình với phe này, trách nhiệm của Apple và rủi ro cho máy build cần được gọi tên.

Chưa có bằng chứng khai thác thực tế vụ chứng chỉ eMudhra

Trang công bố ghi không biết liệu kẻ tấn công có khai thác lỗi sinh khóa yếu để nhắm vào các client ngoài trình duyệt hay không. eMudhra nói không biết bằng chứng nào cho thấy khóa yếu đã bị khai thác trước khi công bố. MacRumors ngày 04/11/2026 viết chưa có bằng chứng khóa đã bị dùng với mục đích xấu.

Cũng còn chưa biết ngày phát hành bản ổn định 27.3, có bản 27.2.1 hay không, nguyên nhân gốc chính xác của lỗi sinh khóa. Phạm vi chính xác ngoài macOS cũng chưa rõ.

Ai cần sửa máy Mac ngay và ai chỉ cần chờ bản macOS 27.3 ổn định

Anh em dùng git, curl, python3 hay tool Terminal khác trên Mac, và ai vận hành máy CI hay máy build macOS, thì chạy lệnh kiểm tra một dòng. Sau đó dọn bundle hoặc trỏ git sang bundle Mozilla. Nhớ kiểm tra lại sau mỗi lần cập nhật macOS. Anh em chỉ dùng Safari, Mail và app dùng framework Apple thì không cần làm gì. Apple đã chặn các chứng chỉ này từ 19/10/2026. Lệnh kiểm tra mới là thứ đáng tiền nhất trong bài này, anh em chạy rồi chia sẻ kết quả kèm phiên bản git.

Nguồn tham khảo

Bài viết này có hữu ích cho công việc của bạn?
Báo thông số cũ / Góp ý
Ảnh đại diện tác giả Tuấn Prompt tại ThuThuatAI.net

Tuấn Prompt

Biên tập viên AI Thực chiến

Thợ săn AI thực chiến của ThuThuatAI.net. Chuyên bóc tách tool, prompt và model AI mới — cái nào có lệnh cài, có giá, có số liệu kiểm chứng được thì mới lên bài. Viết như nói chuyện với anh em: có chuyên môn, có hài hước, và nói thẳng chỗ nào chưa kiểm chứng.

ĐỌC TIẾP CÙNG CHUYÊN MỤC

Bài viết Chuyên sâu Cùng Chuyên mục Tin tức AI

TÀI LIỆU NỀN TẢNG ĐỀ XUẤT

Cẩm nang Nền tảng Đề xuất Đọc tiếp

Bình luận & Trao đổi

Để lại câu hỏi hoặc chia sẻ kinh nghiệm thực tế của bạn

Email của bạn được bảo mật tuyệt đối theo Nghị định 13/2023/NĐ-CP và không hiển thị công khai. Vui lòng ẩn danh API Key trước khi dán log lỗi.

BẢN TIN HÀNG TUẦN

Nhận điểm tin & thủ thuật AI chọn lọc mỗi tuần

Tổng hợp ngắn gọn các công cụ AI mới đáng thử, mẫu prompt dùng được ngay và kinh nghiệm tự động hóa thực tế. Chỉ 1 email mỗi tuần, không spam.

Không gửi thư rác quảng cáo. Xem chi tiết tại Chính sách bảo mật.