
अक्टूबर 2026 eMudhra/emSign CA कुंजी समझौते के लिए ऑफ़लाइन स्कैनर, OS ट्रस्ट स्टोर, CA बंडल, Java cacerts, NSS और कंटेनर इमेज में प्रभावित प्रमाणपत्रों को ढूंढता है।
अक्टूबर 2026 eMudhra / emSign इंटरमीडिएट CA निजी-कुंजी समझौते के लिए डिटेक्शन टूलिंग। आठ इंटरमीडिएट CAs को P-384 कुंजियों के साथ जारी किया गया था जिनके निजी स्केलर छोटे पूर्णांक थे (पुनर्प्राप्त मान 4, 56, 66, 115, 155, 156, 230, 237), इसलिए कोई भी उनसे श्रृंखलाबद्ध प्रमाणपत्रों को तुच्छता से जाली बना सकता है। ब्राउज़र और OS ट्रस्ट स्टोर्स ने जल्दी से अविश्वास को आगे बढ़ाया - लेकिन अधिकांश गैर-ब्राउज़र ट्रस्ट स्टोर्स स्वचालित रूप से अपडेट नहीं होते, जिसे यह टूल खोजता है।
स्थिति: घटना सक्रिय है, इसलिए बंडल किए गए IOCs को एक स्नैपशॉट मानें (प्रत्येक रन उनकी
generatedतिथि प्रिंट करता है)। उन्हें अपडेट करने के लिए, अपस्ट्रीम ट्रैकर सेtools/sources/*.jsonको रीफ्रेश करें और जनरेटर को फिर से चलाएं (नीचे)।
trustscan (Python) और trustscan.ps1 (Windows/PowerShell) होस्ट पर ट्रस्ट स्टोर्स और CA बंडलों की सूची बनाते हैं और प्रभावित प्रमाणपत्रों से मेल खाने वाले किसी भी चीज़ को फ़्लैग करते हैं। शुद्ध-stdlib + cryptography; कोई अन्य निर्भरता नहीं।
Python 3 और cryptography की आवश्यकता है (एकमात्र निर्भरता):
pip install -r requirements.txt
# scan this host's trust stores and CA bundles
python trustscan.py
# machine-readable for ticketing
python trustscan.py --format csv > findings.csv
# Windows-native: cert stores (both scopes) + GPO roots + env bundles
pwsh -File trustscan.ps1
एग्ज़िट कोड: 0 = साफ़, 1 = निष्कर्ष, 2 = त्रुटि। केवल-INFO परिणाम (नीचे
--flag-aaa देखें) एग्ज़िट 0 के साथ समाप्त होते हैं।
हर रन AAA क्रॉस-साइन पथ के बारे में एक पंक्ति की चेतावनी के साथ समाप्त होता है (देखें
दायरा और सीमाएँ)। text मोड में यह रिपोर्ट का
हिस्सा होता है; json/csv मोड में यह stderr पर जाता है ताकि मशीन-पठनीय
आउटपुट साफ़ रहे।
नीचे किसी भी स्थान पर मिले हर प्रमाणपत्र का फ़िंगरप्रिंट लिया जाता है और चार तरीकों से जाँचा जाता है:
| मिलान | गंभीरता | अर्थ |
|---|---|---|
compromised_ca_cert | CRITICAL | सटीक समझौता-ग्रस्त इंटरमीडिएट (प्रमाणपत्र SHA-256) |
compromised_key_reuse | CRITICAL | एक भिन्न प्रमाणपत्र जो समझौता-ग्रस्त कुंजी (SPKI SHA-256) रखता है - Sectigo क्रॉस-साइन और किसी भी पुनः-जारी को पकड़ता है |
issued_by_compromised_ca | HIGH | एक लीफ़/सब-CA जिसका AuthorityKeyIdentifier किसी समझौता-ग्रस्त इंटरमीडिएट की ओर इंगित करता है - जाली बनाने योग्य |
distrust_root_present | CRITICAL | एक अविश्वसनीय emSign रूट अभी भी यहाँ विश्वसनीय है। इसकी अपनी कुंजी अक्षुण्ण है - लेकिन इंटरमीडिएट कुंजियाँ सार्वजनिक हैं, इसलिए जब तक यह रूट विश्वसनीय है, किसी भी डोमेन के लिए एक जाली प्रमाणपत्र हर उस क्लाइंट के लिए मान्य होता है जो निरसन (revocation) की जाँच नहीं करता (अधिकांश गैर-ब्राउज़र क्लाइंट)। इसे हटाएँ / बंडल अपडेट करें। अपने आप में यह AAA क्रॉस-साइन पथ (नीचे) को बंद नहीं करता |
एक और जाँच ऑप्ट-इन है (--flag-aaa / -FlagAaa):
| मिलान | गंभीरता | अर्थ |
|---|---|---|
cross_sign_root_present | INFO | वैध Sectigo रूट AAA Certificate Services मौजूद है। इसने आठ इंटरमीडिएट्स को क्रॉस-साइन किया, इसलिए यह उनके दूसरे विश्वास पथ को एंकर करता है; इसकी अपनी कुंजी अक्षुण्ण है। Mozilla और Chrome ने इसे अप्रैल 2025 में हटा दिया, लेकिन Windows, Apple, पुराने Linux बंडल और कई Java कीस्टोर अभी भी इसे विश्वास करते हैं। केवल अनुरोध पर रिपोर्ट किया जाता है, उन टीमों के लिए जो यह तय कर रही हैं कि इसे हटाना है या नहीं (इस घटना के लिए Debian का अपडेट इसे हटाता है); एग्ज़िट कोड को कभी प्रभावित नहीं करता |
डिफ़ॉल्ट रूप से AAA Certificate Services को फ़्लैग नहीं किया जाता: इसकी अपनी कुंजी अक्षुण्ण है और इसे हटाना एक जानबूझकर किया गया चुनाव है, न कि डिफ़ॉल्ट उपचार। यह क्यों मायने रखता है, इसके लिए नीचे दी गई सीमाएँ देखें।
trustscan कहाँ देखता है| स्रोत | यह क्या है | जाँचे गए स्थान |
|---|---|---|
certifi | Python CA बंडल | certifi.where() (रनटाइम पर हल किया गया) |
bundles → distro | OS ca-certificates एग्रीगेट | Debian/Arch/Alpine /etc/ssl/certs/ca-certificates.crt · RHEL /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem, समेकित Java cacerts, एडमिन anchors/ डिर · SUSE /etc/ssl/ca-bundle.pem, /var/lib/ca-certificates/ca-bundle.pem · Debian स्रोत डिर /usr/share/ca-certificates/ · /etc/ssl/cert.pem |
bundles → FreeBSD | ca_root_nss | /usr/local/share/certs/ca-root-nss.crt · /usr/local/etc/ssl/cert.pem |
bundles → Homebrew / MacPorts | brew / port ca-certificates, openssl | /opt/homebrew/etc/ca-certificates/cert.pem · /opt/homebrew/etc/openssl*/cert.pem · /usr/local/etc/... (Intel) · /opt/local/etc/{openssl,ssl}/cert.pem |
bundles → curl | स्टैंडअलोन curl बंडल | /usr/local/share/curl/curl-ca-bundle.crt · /opt/local/share/curl/curl-ca-bundle.crt · C:\Program Files\Git\...\ca-bundle.crt |
bundles → conda | प्रत्येक env का ssl/cacert.pem | $CONDA_PREFIX · /opt/conda · ~/anaconda3, ~/miniconda3, ~/miniforge3 (envs/* सहित) |
bundles → AWS CLI v2 | बंडल किया गया botocore | /usr/local/aws-cli/.../botocore/cacert.pem · C:\Program Files\Amazon\AWSCLIV2\... |
bundles → cloud SDKs / registry / ecosystem | अधिक वेंडर किए गए बंडल | gcloud / Azure CLI third_party/certifi · container-registry /etc/{docker,containers}/certs.d/*/ · Perl Mozilla::CA · Erlang/Elixir certifi |
bundles → pip | pip का वेंडर किया गया certifi | <pip>/_vendor/certifi/cacert.pem (import pip के माध्यम से हल किया गया) |
nss | Firefox / Thunderbird / Chrome-Linux + सिस्टम NSS DB | ~/.mozilla/firefox/*/cert9.db · ~/.thunderbird/*/cert9.db · ~/snap/firefox/common/.mozilla/firefox/*/cert9.db · ~/.pki/nssdb/cert9.db · /etc/pki/nssdb/cert9.db · %APPDATA%\Mozilla\Firefox\Profiles\*\cert9.db · %APPDATA%\Thunderbird\Profiles\*\cert9.db |
| स्रोत | जाँचे गए स्थान |
|---|---|
os (Linux) | /etc/ssl/certs · /usr/local/share/ca-certificates · /etc/pki/tls/certs · /etc/pki/ca-trust/extracted/pem (पुनरावर्ती), साथ ही Android/AOSP /system/etc/security/cacerts, /apex/com.android.conscrypt/cacerts, cacerts-added/ (हैश-नामित फ़ाइलें) |
os (macOS) | डिफ़ॉल्ट कीचेन + SystemRootCertificates.keychain पर security find-certificate -a -p |
os (Windows, Python) | ROOT, CA, MY, TrustedPublisher, AuthRoot के लिए ssl.enum_certificates + Group-Policy द्वारा पुश किए गए LocalMachine रूट (रजिस्ट्री) |
java | $JAVA_HOME + JVM रूट (/usr/lib/jvm/*, /opt/java/*, /Library/Java/JavaVirtualMachines/*, C:\Program Files\Java\*, Adoptium, Corretto, Microsoft) → .../lib/security/cacerts |
env | SSL_CERT_FILE, REQUESTS_CA_BUNDLE, CURL_CA_BUNDLE, NODE_EXTRA_CA_CERTS में फ़ाइलें; SSL_CERT_DIR में डिरेक्टरी |
containers (opt-in) | Docker /var/lib/docker/overlay2/*/diff, podman (root + rootless, अन्य उपयोगकर्ताओं सहित), containerd overlayfs स्नैपशॉट - प्रत्येक लेयर के एग्रीगेट बंडल को स्कैन करता है; root आवश्यक, स्थान लेयर का नाम बताता है |
apptrust (opt-in) | app-server और data-infra Java ट्रस्टस्टोर (Tomcat, WildFly/JBoss, Kafka, Elasticsearch) और /opt/*/jre/.../cacerts, C:\Program Files\*\jre\... के अंतर्गत app-बंडल किए गए JREs - निजी वेंडर-बंडल किए गए JREs जिन्हें होस्ट Java स्कैन छूट जाता है |
--path लक्ष्य | कॉन्फ़िग-संदर्भित स्टोर (nginx, Apache, HAProxy, Oracle sqlnet.ora, LDAP), और प्रति-प्रोजेक्ट बंडल (Composer vendor/composer/ca-bundle/...) - --path को उन पर इंगित करें |
paths | आपके द्वारा पास की गई कोई भी फ़ाइल/डिरेक्टरी |
--rootfs <dir> | निकाले गए इमेज या फ़र्मवेयर rootfs के अंदर distro / curl / Java / Android स्टोर स्थान |
envवेरिएबल में एक पाथ होता है, सर्ट डेटा नहीं -trustscanउस पाथ पर मौजूद फ़ाइल(ों) को पढ़ता है।
--path का उपयोग करें