33.5 Digital Signatures, Certificates, PKI and TLS
Digital signature: hash the message, then encrypt the hash with your private key. Anyone verifies with your public key. If the message changes, the hash no longer matches. This gives integrity, authentication and non-repudiation.
openssl dgst -sha256 -sign private.pem -out msg.sig msg.txt
openssl dgst -sha256 -verify public.pem -signature msg.sig msg.txt # Verified OK
echo "changed" >> msg.txt
openssl dgst -sha256 -verify public.pem -signature msg.sig msg.txt # Verification failure
Certificates and PKI. How do you know a public key really belongs to reels.example.in? A Certificate Authority (CA) such as Let's Encrypt (Chapter 11) signs a certificate saying "this public key belongs to this domain". Browsers trust a list of root CAs; the chain goes root CA, intermediate CA, your certificate. This system is PKI (Public Key Infrastructure).
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
openssl req -x509 -newkey rsa:2048 -nodes -keyout lab.key -out lab.crt -days 30 -subj "/CN=lab.local" # self-signed, lab only
How TLS (HTTPS) uses everything, in short:
- The browser connects and the server sends its certificate.
- The browser checks the CA signature, the domain name and the expiry date.
- Both sides use ECDHE to agree on a fresh shared secret (this gives forward secrecy).
- All data then flows encrypted with AES-GCM or ChaCha20, with integrity checks.
Use TLS 1.2 or 1.3 only; disable SSLv3, TLS 1.0 and 1.1. Tools such as sslscan, testssl.sh and nmap --script ssl-enum-ciphers check a server's configuration.
Ravindra Bagale's Tip
When the browser shows "Your connection is not private", students click "Advanced, Proceed". That's fine for a self-signed cert in your own lab, but never on a real bank or email site – it could be a man-in-the-middle attack (Chapter 24). Always check the lock icon and the domain name.
Ravindra Bagale's Tip – मराठी
Browser मध्ये "Your connection is not private" आले तर students "Advanced, Proceed" दाबतात. स्वतःच्या lab मध्ये self-signed cert साठी ठीक आहे, पण खऱ्या bank किंवा email site वर कधीच नाही – तो man-in-the-middle attack (Chapter 24) असू शकतो. Lock icon आणि domain नाव नेहमी चेक करा.
Ravindra Bagale's Tip – हिंदी
Browser में "Your connection is not private" आए तो students "Advanced, Proceed" दबा देते हैं. अपनी lab में self-signed cert के लिए ठीक है, पर असली bank या email site पर कभी नहीं – वह man-in-the-middle attack (Chapter 24) हो सकता है. Lock icon और domain नाम हमेशा चेक करो.
Lab
Sign a file and verify it, then change one character and verify again. Check the certificate of your own HTTPS site from Chapter 11 with openssl s_client and note the issuer and expiry date. Run nmap --script ssl-enum-ciphers -p 443 against your own server and list any weak protocols it reports.
Extended teaching notes
Why this lesson matters
Cryptography fails when people invent it. Use standard libraries, modern algorithms (AES-GCM, TLS 1.2+, bcrypt/argon2) and protect keys in a KMS or secrets manager.
Where crypto shows up
| Where | What to do |
|---|---|
| Passwords | bcrypt/argon2/PBKDF2 via the framework hasher — never plain MD5/SHA1. |
| TLS | Terminate on ALB/nginx with ACM/Let's Encrypt; redirect HTTP to HTTPS. |
| JWT / API tokens | Short lifetime, rotate signing keys, store secrets outside Git. |
| Disk / S3 | Provider or customer-managed keys; least privilege on decrypt. |
Mini case study
Suppose we are on a purple-team exercise for an Indian mid-size company (sample data). Red notes a technique from this lesson against a lab clone. Blue must show the control that stops it, the log that would have fired, and the ticket that hardens production. That is the standard this course trains you for.
Defender's worksheet (do this today)
- Write the lesson title, date and the exact lab target you are allowed to use.
- List three owned systems (VMs, apps, or cloud accounts) where this lesson applies.
- Run one safe check from the lesson on a lab system only. Paste the command and output.
- Write a two-sentence fix you would give a teammate.
- Name one related public advisory (CERT-In, CISA, NVD, or a vendor bulletin) with its date.
Indian workplace (sample data)
Suppose we are a junior analyst at Infosys, TCS, Wipro or a fintech SOC in Bengaluru/Pune. Turn this lesson into one checklist item with an owner, a due date and a place to store evidence (ticket + screenshot).
Global practice
Compare your notes with OWASP, CIS Benchmarks, NIST CSF/IR guidance or a cloud Well-Architected security question. Write five lines on what overlaps.
Everyday analogy
Explain the risk and the fix to a family member without jargon. If they can repeat the warning, you understand it well enough to teach juniors.
Key terms
- Control: a safeguard (patch, config, process, detection).
- Finding: a weakness backed by evidence.
- Remediation: the fix plus how you verified it.
- Scope: systems you have written permission to touch.
- Least privilege: only the access the task needs.
- Defence in depth: several layers so one failure does not end the story.
Common mistakes
- Skipping written permission "just for a quick scan".
- Practising on hostel, office or public targets without authorisation.
- Collecting tool output without writing the fix.
- Copying attack steps onto production to "verify". Defenders verify with versions, configs and patches.
- Publishing screenshots that contain secrets, cookies or internal hostnames.
Recap
- Evidence, fix, owner, date.
- Own lab only.
- Fix > spectacle.
Real incident: OVHcloud CLI – a hijacked GitHub account swapped release files and their checksum file to steal secrets (Oct 2026)
1. What happened
OVHcloud is a large French cloud and hosting company. It gives developers a free, open-source command-line tool (CLI) called ovhcloud-cli, so they can manage their servers and cloud services from a terminal. People download this tool from the Releases page of OVHcloud's GitHub project.
- On 19 October 2026, between 14:47 and 16:21 Paris time (about 6:17 pm to 7:51 pm IST), an attacker used the hijacked GitHub account of an OVHcloud developer to replace the download files inside five old releases, v0.11.0 to v0.15.0.
- The new files were a secret-stealing program. It looked like the normal tool, but it also copied secrets from the computer's disk: cloud logins for AWS, Google Cloud and Azure, SSH keys, Kubernetes, Docker, npm and Terraform settings, Git settings and the history files of AI coding assistants.
- On the v0.15.0 release, the attacker also replaced the
checksums.txtfile, so the published hashes matched the bad files. - A customer's automatic build job failed because it compared the downloaded file with a SHA-256 hash it had saved earlier, and the hash no longer matched. The customer reported it on GitHub at 15:50 Paris time. OVHcloud removed the bad files at 16:21.
- OVHcloud says the bad files were online for about 1 hour 33 minutes and were downloaded about 250 times. The source code and the build pipeline were not changed. Homebrew installs (which check a saved hash),
go installand the Docker image were not affected. - The same evening, OVHcloud published a clean v0.16.0 with a signed tag as an immutable release (GitHub does not let anyone change its files). OVHcloud says the root problem was that release immutability was not turned on, and that the developer's keys were stolen months earlier, after a malicious code-editor extension was installed on the developer's personal laptop.
2. How the hack happened (public reporting only – high-level)
- Months earlier, a malicious extension for a code editor ran on the developer's personal laptop and stole keys for the developer's GitHub account.
- That account had write access to the OVHcloud CLI project on GitHub.
- On GitHub, anyone with write access can delete the files of an old release and upload new files with the same names, unless release immutability is on. The download link stays the same, so users see nothing unusual.
- The attacker built a copy of the tool with stealing code added, and uploaded it by hand. The company's normal build pipeline never ran.
- The attacker also uploaded a new
checksums.txt. So a user who checked the download against the hash file on the same page got "OK" – the file and its proof were changed together. - Anyone who installed or updated the tool in that window, with the install script, a manual download or a build job without a saved hash, ran the stealer. It collected secrets from the disk and sent them to the attacker.
3. How to stop it / defend (this lesson: digital signatures)
- A hash only proves "this file matches that hash". If the hash sits on the same page as the file, an attacker who can change one can change both. It is like a shop where the thief can also change the price list.
- Check a digital signature, not only a hash. In this lesson, the publisher signs with a private key and you verify with their public key. An attacker who changes the file cannot make a new valid signature without that private key, so
openssl dgst -verify(orgpg --verify,cosign verify) shows a failure. - Save the expected hash before you need it. The customer's build job caught this attack because it pinned the SHA-256 of the tool. Pin versions and hashes in CI pipelines, Dockerfiles and install scripts.
- If you publish software: turn on release immutability, sign tags and release files, publish build attestations, and let only the build pipeline (not a person's laptop) upload release files.
- Protect developer accounts: MFA for every account, short-lived tokens, and install editor extensions only from known publishers. A developer laptop that holds publishing keys is a target.
4. How to take care so it won't happen again (checklist)
- [ ] If you installed or updated
ovhcloud-clion 19 October 2026 in that window, treat every secret on that computer as stolen: change it from a different computer, delete the tool and install v0.16.0 or later. - [ ] For every tool you download, prefer a signature or attestation check over a hash on the same page.
- [ ] Pin versions and SHA-256 hashes in your build jobs and install scripts.
- [ ] Don't keep long-lived cloud keys in plain files on laptops; use short-lived logins and a secrets manager.
- [ ] If you publish releases: immutable releases on, signed tags on, uploads only from the pipeline.
- [ ] Review who has write access to your repositories every month, and remove old accounts.
Source: OVHcloud security advisory "ovhcloud-cli security incident - October 19th, 2026" on the project's GitHub page, 20 October 2026; BleepingComputer, "OVHcloud CLI releases backdoored on GitHub to steal developer secrets", 20 October 2026; The Hacker News, "Hackers Hijack Five OVHcloud CLI Releases to Distribute Secret-Stealing Malware", 20 October 2026.
1. काय झालं
OVHcloud ही एक मोठी French cloud आणि hosting company आहे. ती developers ना ovhcloud-cli नावाचं एक free, open-source command-line tool (CLI) देते, म्हणजे terminal मधूनच servers आणि cloud services manage करता येतात. लोक हे tool OVHcloud च्या GitHub project च्या Releases page वरून download करतात.
- 19 ऑक्टोबर 2026 ला, Paris वेळेनुसार 14:47 ते 16:21 (साधारण IST संध्याकाळी 6:17 ते 7:51) या वेळेत, एका attacker ने OVHcloud च्या एका developer चं hijack केलेलं GitHub account वापरून पाच जुन्या releases, v0.11.0 ते v0.15.0, मधल्या download files बदलल्या.
- नवीन files म्हणजे एक secret-stealing program होता. तो दिसायला normal tool सारखाच होता, पण तो computer च्या disk वरचे secrets पण copy करायचा: AWS, Google Cloud आणि Azure चे cloud logins, SSH keys, Kubernetes, Docker, npm आणि Terraform चे settings, Git settings आणि AI coding assistants च्या history files.
- v0.15.0 release मध्ये attacker ने
checksums.txtfile पण बदलली, म्हणजे published hashes वाईट files शी match होत होते. - एका customer चा automatic build job fail झाला, कारण तो download केलेली file आधीच save करून ठेवलेल्या SHA-256 hash शी compare करायचा, आणि hash आता match होत नव्हता. Customer ने Paris वेळेनुसार 15:50 ला GitHub वर report केलं. OVHcloud ने 16:21 ला वाईट files काढून टाकल्या.
- OVHcloud म्हणतं की वाईट files साधारण 1 तास 33 मिनिटं online होत्या आणि जवळपास 250 वेळा download झाल्या. Source code आणि build pipeline बदललेले नव्हते. Homebrew installs (जे save केलेला hash check करतात),
go installआणि Docker image वर परिणाम झाला नाही. - त्याच संध्याकाळी OVHcloud ने signed tag सोबत स्वच्छ v0.16.0 एक immutable release म्हणून publish केलं (GitHub त्याच्या files कोणालाच बदलू देत नाही). OVHcloud म्हणतं की मूळ problem असा होता की release immutability चालू नव्हती, आणि developer च्या personal laptop वर एक malicious code-editor extension install झाल्यावर, त्याच्या keys काही महिने आधीच चोरीला गेल्या होत्या.
2. Hack कसा झाला (फक्त public reporting – high-level)
- काही महिने आधी, developer च्या personal laptop वर code editor चं एक malicious extension चाललं आणि त्याने developer च्या GitHub account च्या keys चोरल्या.
- त्या account ला GitHub वरच्या OVHcloud CLI project वर write access होता.
- GitHub वर write access असलेला कोणीही, release immutability चालू नसेल तर, जुन्या release च्या files delete करून त्याच नावाच्या नवीन files upload करू शकतो. Download link तोच राहतो, म्हणून users ना काहीच वेगळं दिसत नाही.
- Attacker ने tool ची एक copy बनवली, त्यात चोरी करणारा code टाकला, आणि ती हाताने upload केली. Company ची normal build pipeline कधी चाललीच नाही.
- Attacker ने एक नवीन
checksums.txtपण upload केली. म्हणून ज्या user ने त्याच page वरच्या hash file शी download check केलं, त्याला "OK" मिळालं – file आणि तिचा पुरावा दोन्ही एकत्रच बदलले गेले. - त्या वेळेत ज्याने install script, manual download किंवा save केलेला hash नसलेल्या build job ने tool install किंवा update केलं, त्याच्या computer वर stealer चालला. त्याने disk वरचे secrets गोळा केले आणि attacker कडे पाठवले.
3. कसं थांबवायचं / बचाव (हा lesson: digital signatures)
- Hash फक्त एवढंच सिद्ध करतो की "ही file त्या hash शी match होते". Hash आणि file एकाच page वर असतील, तर जो attacker एक बदलू शकतो, तो दोन्ही बदलू शकतो. जसं एखाद्या दुकानात चोर price list पण बदलू शकतो.
- फक्त hash नाही, digital signature check करा. या lesson मध्ये publisher private key ने sign करतो आणि तुम्ही त्याच्या public key ने verify करता. File बदलणाऱ्या attacker कडे ती private key नसेल तर तो नवीन valid signature बनवू शकत नाही, म्हणून
openssl dgst -verify(किंवाgpg --verify,cosign verify) failure दाखवतो. - Expected hash गरज पडायच्या आधीच save करून ठेवा. Customer च्या build job ने हा attack पकडला, कारण त्याने tool चा SHA-256 pin केला होता. CI pipelines, Dockerfiles आणि install scripts मध्ये versions आणि hashes pin करा.
- तुम्ही software publish करत असाल तर: release immutability चालू करा, tags आणि release files sign करा, build attestations publish करा, आणि release files फक्त build pipeline नेच upload करू द्या (एखाद्या माणसाच्या laptop ने नाही).
- Developer accounts सांभाळा: प्रत्येक account ला MFA, short-lived tokens, आणि editor extensions फक्त ओळखीच्या publishers कडूनच install करा. Publishing keys असलेला developer laptop हा attacker चा target असतो.
4. पुन्हा असं होऊ नये म्हणून काय काळजी घ्यायची (checklist)
- [ ] तुम्ही 19 ऑक्टोबर 2026 ला त्या वेळेत
ovhcloud-cliinstall किंवा update केलं असेल, तर त्या computer वरचा प्रत्येक secret चोरीला गेला असं समजा: तो दुसऱ्या computer वरून बदला, tool delete करा आणि v0.16.0 किंवा त्यानंतरचं version install करा. - [ ] तुम्ही download करता त्या प्रत्येक tool साठी, त्याच page वरच्या hash पेक्षा signature किंवा attestation check ला प्राधान्य द्या.
- [ ] तुमच्या build jobs आणि install scripts मध्ये versions आणि SHA-256 hashes pin करा.
- [ ] Laptops वर plain files मध्ये long-lived cloud keys ठेवू नका; short-lived logins आणि secrets manager वापरा.
- [ ] तुम्ही releases publish करत असाल तर: immutable releases चालू, signed tags चालू, uploads फक्त pipeline मधून.
- [ ] तुमच्या repositories वर कोणाला write access आहे ते दर महिन्याला review करा, आणि जुनी accounts काढून टाका.
स्रोत: OVHcloud security advisory "ovhcloud-cli security incident - October 19th, 2026", project च्या GitHub page वर, 20 ऑक्टोबर 2026; BleepingComputer, "OVHcloud CLI releases backdoored on GitHub to steal developer secrets", 20 ऑक्टोबर 2026; The Hacker News, "Hackers Hijack Five OVHcloud CLI Releases to Distribute Secret-Stealing Malware", 20 ऑक्टोबर 2026.
1. क्या हुआ
OVHcloud एक बड़ी French cloud और hosting company है. यह developers को ovhcloud-cli नाम का एक free, open-source command-line tool (CLI) देती है, ताकि वे terminal से ही अपने servers और cloud services manage कर सकें. लोग यह tool OVHcloud के GitHub project के Releases page से download करते हैं.
- 19 अक्टूबर 2026 को, Paris समय के अनुसार 14:47 से 16:21 (लगभग IST शाम 6:17 से 7:51) के बीच, एक attacker ने OVHcloud के एक developer का hijack किया हुआ GitHub account इस्तेमाल करके पाँच पुराने releases, v0.11.0 से v0.15.0, के अंदर की download files बदल दीं.
- नई files एक secret-stealing program थीं. यह दिखने में normal tool जैसा ही था, लेकिन यह computer की disk से secrets भी copy करता था: AWS, Google Cloud और Azure के cloud logins, SSH keys, Kubernetes, Docker, npm और Terraform की settings, Git settings और AI coding assistants की history files.
- v0.15.0 release में attacker ने
checksums.txtfile भी बदल दी, यानी published hashes खराब files से match हो रहे थे. - एक customer का automatic build job fail हो गया, क्योंकि वह download की गई file को पहले से save किए हुए SHA-256 hash से compare करता था, और hash अब match नहीं हो रहा था. Customer ने Paris समय 15:50 पर GitHub पर report किया. OVHcloud ने 16:21 पर खराब files हटा दीं.
- OVHcloud कहती है कि खराब files लगभग 1 घंटा 33 मिनट online रहीं और करीब 250 बार download हुईं. Source code और build pipeline नहीं बदले गए. Homebrew installs (जो save किया हुआ hash check करते हैं),
go installऔर Docker image पर असर नहीं हुआ. - उसी शाम OVHcloud ने signed tag के साथ साफ़ v0.16.0 को एक immutable release के रूप में publish किया (GitHub उसकी files किसी को भी बदलने नहीं देता). OVHcloud कहती है कि असली problem यह थी कि release immutability चालू नहीं थी, और developer के personal laptop पर एक malicious code-editor extension install होने के बाद उसकी keys कई महीने पहले ही चोरी हो गई थीं.
2. Hack कैसे हुआ (सिर्फ़ public reporting – high-level)
- कई महीने पहले, developer के personal laptop पर code editor का एक malicious extension चला और उसने developer के GitHub account की keys चुरा लीं.
- उस account के पास GitHub पर OVHcloud CLI project का write access था.
- GitHub पर write access वाला कोई भी, अगर release immutability चालू न हो, तो पुराने release की files delete करके उसी नाम की नई files upload कर सकता है. Download link वही रहता है, इसलिए users को कुछ भी अलग नहीं दिखता.
- Attacker ने tool की एक copy बनाई, उसमें चोरी करने वाला code जोड़ा, और उसे हाथ से upload किया. Company की normal build pipeline कभी चली ही नहीं.
- Attacker ने एक नई
checksums.txtभी upload की. इसलिए जिस user ने उसी page की hash file से download check किया, उसे "OK" मिला – file और उसका सबूत दोनों एक साथ बदल दिए गए. - उस समय में जिसने install script, manual download या बिना save किए hash वाले build job से tool install या update किया, उसके computer पर stealer चला. उसने disk से secrets इकट्ठा किए और attacker को भेज दिए.
3. कैसे रोकें / बचाव (यह lesson: digital signatures)
- Hash सिर्फ़ इतना साबित करता है कि "यह file उस hash से match करती है". अगर hash और file एक ही page पर हैं, तो जो attacker एक को बदल सकता है, वह दोनों को बदल सकता है. जैसे किसी दुकान में चोर price list भी बदल सकता हो.
- सिर्फ़ hash नहीं, digital signature check करो. इस lesson में publisher private key से sign करता है और आप उसकी public key से verify करते हो. File बदलने वाले attacker के पास वह private key नहीं है, तो वह नया valid signature नहीं बना सकता, इसलिए
openssl dgst -verify(याgpg --verify,cosign verify) failure दिखाता है. - Expected hash ज़रूरत पड़ने से पहले ही save करके रखो. Customer के build job ने यह attack पकड़ा, क्योंकि उसने tool का SHA-256 pin किया था. CI pipelines, Dockerfiles और install scripts में versions और hashes pin करो.
- अगर आप software publish करते हो: release immutability चालू करो, tags और release files sign करो, build attestations publish करो, और release files सिर्फ़ build pipeline से upload होने दो (किसी इंसान के laptop से नहीं).
- Developer accounts को सुरक्षित रखो: हर account पर MFA, short-lived tokens, और editor extensions सिर्फ़ जाने-पहचाने publishers से install करो. Publishing keys वाला developer laptop attacker का target होता है.
4. दोबारा ऐसा न हो, इसके लिए क्या ध्यान रखें (checklist)
- [ ] अगर आपने 19 अक्टूबर 2026 को उस समय में
ovhcloud-cliinstall या update किया था, तो उस computer का हर secret चोरी हुआ मानो: उसे किसी दूसरे computer से बदलो, tool delete करो और v0.16.0 या उसके बाद का version install करो. - [ ] आप जो भी tool download करते हो, उसके लिए उसी page के hash से ज़्यादा signature या attestation check को प्राथमिकता दो.
- [ ] अपने build jobs और install scripts में versions और SHA-256 hashes pin करो.
- [ ] Laptops पर plain files में long-lived cloud keys मत रखो; short-lived logins और secrets manager इस्तेमाल करो.
- [ ] अगर आप releases publish करते हो: immutable releases चालू, signed tags चालू, uploads सिर्फ़ pipeline से.
- [ ] आपकी repositories पर किसके पास write access है, यह हर महीने review करो, और पुराने accounts हटाओ.
स्रोत: OVHcloud security advisory "ovhcloud-cli security incident - October 19th, 2026", project के GitHub page पर, 20 अक्टूबर 2026; BleepingComputer, "OVHcloud CLI releases backdoored on GitHub to steal developer secrets", 20 अक्टूबर 2026; The Hacker News, "Hackers Hijack Five OVHcloud CLI Releases to Distribute Secret-Stealing Malware", 20 अक्टूबर 2026.
Check if you're safe: Password Strength Checker
Real incident: eMudhra – eight Indian CA intermediate keys were made with weak randomness, so anyone could forge HTTPS certificates (Oct 2026)
1. What happened
eMudhra is an Indian Certificate Authority (CA). In this lesson you learnt that a CA signs certificates, and browsers trust the chain root CA → intermediate CA → website certificate. If an attacker gets an intermediate CA's private key, they can sign a "valid" certificate for any website.
- On 17 October 2026, a security researcher reported to the browser makers that the private keys of eight eMudhra intermediate CAs were weak.
- Google says the keys were made with insufficient randomness (weak entropy). So anyone could work out the private keys from the public certificates and forge trusted HTTPS certificates.
- With a forged certificate, an attacker who sits in the middle of a connection could pretend to be a real website and read or change the traffic (a man-in-the-middle attack).
- Chrome blocked the eight intermediates the same day, at 19:45 UTC on 17 October (about 1:15 am IST on 18 October), using its CRLSet block list, so users did not need a full browser update. Firefox finished its block by 22:59 UTC the same day.
- eMudhra revoked all eight intermediates on 18 October. It says seven were never used in production, and the one in production had not issued a single certificate.
- Google says no certificate from these CAs was logged in Certificate Transparency (CT) before the block. eMudhra says it knows of no misuse before the report.
- As a safety step, Google and Mozilla are removing the root that signed them, emSign ECC Root CA - G3. Chrome's removal is expected on 27 October 2026. Websites with certificates under this root must get a new certificate from another CA now.
- eMudhra says its eSign and digital signature services in India are not affected.
2. How the hack happened (public reporting only – high-level)
- On 30 April 2025, eMudhra ran a Key Generation Ceremony (a formal, audited meeting where CA keys are created) and made the eight intermediate keys inside certified hardware security modules (HSMs).
- eMudhra says one step, a key wrap/unwrap step, made a second, weak set of keys next to the strong ones.
- The weak keys were the ones that went into the certificates sent to the browser trust lists.
- The mistake stayed hidden for about 18 months and passed two independent audits.
- A researcher studied the public certificates and worked out the private keys, reportedly with help from AI tools. They reported it before any known attack.
- eMudhra has not yet confirmed the exact root cause.
3. How to stop it / defend (this lesson: certificates, PKI and TLS)
Why: a lock icon only means "a trusted CA signed this". If a CA key is weak, the lock can lie. So every program must use an up-to-date trust list and must never skip certificate checks.
Steps to follow now:
- Check your own websites. Run
openssl s_client -connect yoursite.in:443 -servername yoursite.in </dev/null | openssl x509 -noout -issuerand look for emSign ECC Root CA - G3 in the chain. If you see it, get a new certificate from another CA before 27 October. - Update browsers. Chrome and Firefox got the block by themselves. Android phones get the fix through Google Play Services.
- Update trust stores on servers, not just browsers. Many apps use their own list of trusted CAs.
- Rebuild containers from updated base images, then restart the apps so they load the new list.
- If you see new certificate errors after updating, fix the certificate. Never turn off verification (for example
verify=Falseorcurl -k).
How to refresh the trusted CA list in common stacks:
- Ubuntu/Debian:
sudo apt update && sudo apt install --only-upgrade ca-certificates - RHEL / Amazon Linux:
sudo dnf update ca-certificates - Python (requests, httpx):
pip install --upgrade certifi, or point the app at the system store. - Java / Spring: update the JDK, because its
cacertskeystore holds the trusted roots; check any custom keystores too. - Node.js: update Node.js, because it ships its own CA list; check any custom
NODE_EXTRA_CA_CERTSfile. - .NET, Go, PHP (curl), nginx proxies: these usually read the operating system store, so update
ca-certificatesand restart the service. - Docker: rebuild the image on a fresh base image; an old image keeps the old list.
4. How to take care so it won't happen again (checklist)
- [ ] Keep a list of every certificate you use and which CA and root it chains to.
- [ ] Watch Certificate Transparency logs (for example search your domain on crt.sh) for certificates you did not ask for.
- [ ] Add a DNS CAA record so only your chosen CA may issue for your domain, for example
yoursite.in. CAA 0 issue "letsencrypt.org". - [ ] Update
ca-certificates, language runtimes and base images every month, and restart services after. - [ ] Never ship code with certificate checks turned off, even "just for testing".
- [ ] Use automatic, short-lived certificates (ACME), so changing CA in an emergency takes minutes.
- [ ] Keep a second trusted CA ready, so one CA problem cannot stop your site.
Source: Google Chrome and Android Security Teams, "Protecting Chrome and Android Users from Compromised eMudhra Intermediate CA Certificates", Google Blog, 20 October 2026; Mozilla Firefox Security Team, "Protecting Firefox users following the compromise of eMudhra intermediate certificates", Mozilla Security Blog, 20 October 2026 (updated 21 October 2026); eMudhra, "eMudhra Statement on Recent Certificate Security Incident", eMudhra official website, 20 October 2026 (updated 22 October 2026); Cloudflare, "8 eMudhra certificates are compromised. Here's what you need to know", Cloudflare Blog, 20 October 2026; Palo Alto Networks Unit 42, "eMudhra Intermediate CA Certificates Compromised", 22 October 2026.
1. काय झालं
eMudhra ही एक भारतीय Certificate Authority (CA) आहे. या lesson मध्ये तुम्ही शिकलात की CA certificates वर sign करते, आणि browser root CA → intermediate CA → website certificate या chain वर विश्वास ठेवतो. जर attacker ला एखाद्या intermediate CA ची private key मिळाली, तर तो कोणत्याही website साठी "valid" certificate sign करू शकतो.
- 17 ऑक्टोबर 2026 ला एका security researcher ने browser कंपन्यांना कळवलं की eMudhra च्या आठ intermediate CAs च्या private keys कमकुवत आहेत.
- Google नुसार या keys पुरेशा randomness शिवाय (weak entropy) बनल्या होत्या. त्यामुळे कोणीही public certificates वरून private keys काढू शकत होतं आणि trusted HTTPS certificates खोटे बनवू शकत होतं.
- खोट्या certificate ने, connection च्या मध्ये बसलेला attacker खरी website असल्याचं नाटक करू शकतो आणि traffic वाचू किंवा बदलू शकतो (man-in-the-middle attack).
- Chrome ने त्याच दिवशी, 17 ऑक्टोबरला 19:45 UTC ला (म्हणजे 18 ऑक्टोबरला रात्री साधारण 1:15 IST) आपल्या CRLSet block list ने ही आठ intermediates block केली, म्हणून users ना पूर्ण browser update लागला नाही. Firefox ने त्याच दिवशी 22:59 UTC पर्यंत block पूर्ण केला.
- eMudhra ने 18 ऑक्टोबरला आठही intermediates revoke केली. ते म्हणतात सात कधीच production मध्ये वापरली नव्हती, आणि production मधल्या एकाने एकही certificate issue केलं नव्हतं.
- Google नुसार block च्या आधी या CAs चं एकही certificate Certificate Transparency (CT) मध्ये log झालं नव्हतं. eMudhra म्हणतं report आधी कोणताही गैरवापर त्यांना माहीत नाही.
- सुरक्षेसाठी Google आणि Mozilla त्यांना sign करणारं root काढून टाकत आहेत: emSign ECC Root CA - G3. Chrome मधून ते 27 ऑक्टोबर 2026 ला निघणं अपेक्षित आहे. या root खाली certificate असलेल्या websites नी आत्ताच दुसऱ्या CA कडून नवीन certificate घ्यावं.
- eMudhra म्हणतं त्यांच्या भारतातल्या eSign आणि digital signature services वर परिणाम नाही.
2. Hack कसा झाला (फक्त public reporting – high-level)
- 30 एप्रिल 2025 ला eMudhra ने Key Generation Ceremony घेतली (CA keys बनवण्यासाठीची औपचारिक, audit होणारी meeting) आणि certified hardware security modules (HSMs) मध्ये आठ intermediate keys बनवल्या.
- eMudhra म्हणतं एका step ने, key wrap/unwrap step ने, मजबूत keys सोबत keys चा दुसरा, कमकुवत set बनवला.
- Browser trust lists कडे पाठवलेल्या certificates मध्ये कमकुवत keys गेल्या.
- ही चूक साधारण 18 महिने लपून राहिली आणि दोन independent audits मधून पण पास झाली.
- एका researcher ने public certificates चा अभ्यास करून private keys काढल्या, reportedly AI tools च्या मदतीने. कोणताही माहीत असलेला attack होण्याआधी त्यांनी report केलं.
- eMudhra ने नेमकं root cause अजून confirm केलेलं नाही.
3. कसं थांबवायचं / बचाव (हा lesson: certificates, PKI आणि TLS)
का: lock icon चा अर्थ फक्त "एका trusted CA ने sign केलं" एवढाच आहे. CA key कमकुवत असेल तर lock खोटं बोलू शकतं. म्हणून प्रत्येक program ने up-to-date trust list वापरावी आणि certificate check कधीच skip करू नये.
आत्ता करायच्या steps:
- तुमच्या स्वतःच्या websites check करा.
openssl s_client -connect yoursite.in:443 -servername yoursite.in </dev/null | openssl x509 -noout -issuerचालवा आणि chain मध्ये emSign ECC Root CA - G3 आहे का बघा. दिसलं तर 27 ऑक्टोबरच्या आधी दुसऱ्या CA कडून नवीन certificate घ्या. - Browsers update करा. Chrome आणि Firefox ला block आपोआप मिळाला. Android phones ना fix Google Play Services मधून मिळतो.
- फक्त browsers नाही, servers वरचे trust stores पण update करा. बरीच apps trusted CAs ची स्वतःची list वापरतात.
- Updated base images पासून containers पुन्हा build करा, मग apps restart करा म्हणजे नवीन list load होईल.
- Update नंतर नवीन certificate errors दिसल्या तर certificate दुरुस्त करा. Verification कधीच बंद करू नका (उदा.
verify=Falseकिंवाcurl -k).
Common stacks मध्ये trusted CA list कशी refresh करायची:
- Ubuntu/Debian:
sudo apt update && sudo apt install --only-upgrade ca-certificates - RHEL / Amazon Linux:
sudo dnf update ca-certificates - Python (requests, httpx):
pip install --upgrade certifi, किंवा app ला system store वापरायला सांगा. - Java / Spring: JDK update करा, कारण त्याच्या
cacertskeystore मध्ये trusted roots असतात; custom keystores पण check करा. - Node.js: Node.js update करा, कारण तो स्वतःची CA list घेऊन येतो; कोणती custom
NODE_EXTRA_CA_CERTSfile असेल तर ती पण check करा. - .NET, Go, PHP (curl), nginx proxies: हे साधारणपणे operating system चा store वाचतात, म्हणून
ca-certificatesupdate करा आणि service restart करा. - Docker: fresh base image वर image पुन्हा build करा; जुन्या image मध्ये जुनी list राहते.
4. पुन्हा असं होऊ नये म्हणून काय काळजी घ्यायची (checklist)
- [ ] तुम्ही वापरत असलेल्या प्रत्येक certificate ची list ठेवा, आणि ते कोणत्या CA आणि root ला chain होतं ते लिहा.
- [ ] तुम्ही न मागितलेल्या certificates साठी Certificate Transparency logs वर लक्ष ठेवा (उदा. crt.sh वर तुमचं domain search करा).
- [ ] DNS CAA record टाका म्हणजे फक्त तुम्ही निवडलेली CA तुमच्या domain साठी certificate देऊ शकेल, उदा.
yoursite.in. CAA 0 issue "letsencrypt.org". - [ ] दर महिन्याला
ca-certificates, language runtimes आणि base images update करा, आणि नंतर services restart करा. - [ ] Certificate checks बंद असलेला code कधीच ship करू नका, "फक्त testing साठी" असलं तरी.
- [ ] Automatic, short-lived certificates (ACME) वापरा, म्हणजे emergency मध्ये CA बदलायला काही मिनिटंच लागतील.
- [ ] दुसरी trusted CA तयार ठेवा, म्हणजे एका CA च्या problem मुळे तुमची site बंद पडणार नाही.
स्रोत: Google Chrome and Android Security Teams, "Protecting Chrome and Android Users from Compromised eMudhra Intermediate CA Certificates", Google Blog, 20 ऑक्टोबर 2026; Mozilla Firefox Security Team, "Protecting Firefox users following the compromise of eMudhra intermediate certificates", Mozilla Security Blog, 20 ऑक्टोबर 2026 (updated 21 ऑक्टोबर 2026); eMudhra, "eMudhra Statement on Recent Certificate Security Incident", eMudhra official website, 20 ऑक्टोबर 2026 (updated 22 ऑक्टोबर 2026); Cloudflare, "8 eMudhra certificates are compromised. Here's what you need to know", Cloudflare Blog, 20 ऑक्टोबर 2026; Palo Alto Networks Unit 42, "eMudhra Intermediate CA Certificates Compromised", 22 ऑक्टोबर 2026.
1. क्या हुआ
eMudhra एक भारतीय Certificate Authority (CA) है. इस lesson में आपने सीखा कि CA certificates पर sign करती है, और browser root CA → intermediate CA → website certificate इस chain पर भरोसा करता है. अगर attacker को किसी intermediate CA की private key मिल जाए, तो वह किसी भी website के लिए "valid" certificate sign कर सकता है.
- 17 अक्टूबर 2026 को एक security researcher ने browser कंपनियों को बताया कि eMudhra के आठ intermediate CAs की private keys कमज़ोर हैं.
- Google के अनुसार ये keys पर्याप्त randomness के बिना (weak entropy) बनी थीं. इसलिए कोई भी public certificates से private keys निकाल सकता था और trusted HTTPS certificates नकली बना सकता था.
- नकली certificate से, connection के बीच बैठा attacker असली website होने का नाटक कर सकता है और traffic पढ़ या बदल सकता है (man-in-the-middle attack).
- Chrome ने उसी दिन, 17 अक्टूबर को 19:45 UTC पर (यानी 18 अक्टूबर को रात लगभग 1:15 IST) अपनी CRLSet block list से ये आठ intermediates block कर दीं, इसलिए users को पूरा browser update नहीं चाहिए था. Firefox ने उसी दिन 22:59 UTC तक block पूरा किया.
- eMudhra ने 18 अक्टूबर को आठों intermediates revoke कर दीं. उनका कहना है कि सात कभी production में इस्तेमाल नहीं हुईं, और production वाली एक ने एक भी certificate issue नहीं किया था.
- Google के अनुसार block से पहले इन CAs का एक भी certificate Certificate Transparency (CT) में log नहीं हुआ था. eMudhra कहता है कि report से पहले किसी गलत इस्तेमाल की उन्हें जानकारी नहीं है.
- सुरक्षा के लिए Google और Mozilla इन्हें sign करने वाला root हटा रहे हैं: emSign ECC Root CA - G3. Chrome से इसका हटना 27 अक्टूबर 2026 को अपेक्षित है. इस root के नीचे certificate वाली websites को अभी किसी दूसरी CA से नया certificate लेना चाहिए.
- eMudhra कहता है कि उसकी भारत की eSign और digital signature services पर असर नहीं है.
2. Hack कैसे हुआ (सिर्फ public reporting – high-level)
- 30 अप्रैल 2025 को eMudhra ने Key Generation Ceremony की (CA keys बनाने की औपचारिक, audit होने वाली meeting) और certified hardware security modules (HSMs) में आठ intermediate keys बनाईं.
- eMudhra कहता है कि एक step ने, key wrap/unwrap step ने, मज़बूत keys के साथ keys का दूसरा, कमज़ोर set बना दिया.
- Browser trust lists को भेजे गए certificates में कमज़ोर keys गईं.
- यह गलती लगभग 18 महीने छिपी रही और दो independent audits में भी पास हो गई.
- एक researcher ने public certificates को study करके private keys निकाल लीं, reportedly AI tools की मदद से. किसी ज्ञात attack से पहले ही उन्होंने report कर दिया.
- eMudhra ने सही root cause अभी confirm नहीं किया है.
3. कैसे रोकें / बचाव (यह lesson: certificates, PKI और TLS)
क्यों: lock icon का मतलब सिर्फ "एक trusted CA ने sign किया" इतना है. CA key कमज़ोर हो तो lock झूठ बोल सकता है. इसलिए हर program को up-to-date trust list इस्तेमाल करनी चाहिए और certificate check कभी skip नहीं करना चाहिए.
अभी करने वाले steps:
- अपनी websites check करें.
openssl s_client -connect yoursite.in:443 -servername yoursite.in </dev/null | openssl x509 -noout -issuerचलाएँ और देखें कि chain में emSign ECC Root CA - G3 है क्या. दिखे तो 27 अक्टूबर से पहले दूसरी CA से नया certificate लें. - Browsers update करें. Chrome और Firefox को block अपने आप मिल गया. Android phones को fix Google Play Services से मिलता है.
- सिर्फ browsers नहीं, servers के trust stores भी update करें. बहुत सी apps trusted CAs की अपनी list इस्तेमाल करती हैं.
- Updated base images से containers फिर से build करें, फिर apps restart करें ताकि नई list load हो.
- Update के बाद नई certificate errors दिखें तो certificate ठीक करें. Verification कभी बंद न करें (जैसे
verify=Falseयाcurl -k).
Common stacks में trusted CA list कैसे refresh करें:
- Ubuntu/Debian:
sudo apt update && sudo apt install --only-upgrade ca-certificates - RHEL / Amazon Linux:
sudo dnf update ca-certificates - Python (requests, httpx):
pip install --upgrade certifi, या app को system store इस्तेमाल करने को कहें. - Java / Spring: JDK update करें, क्योंकि उसके
cacertskeystore में trusted roots होते हैं; custom keystores भी check करें. - Node.js: Node.js update करें, क्योंकि वह अपनी CA list साथ लाता है; कोई custom
NODE_EXTRA_CA_CERTSfile हो तो उसे भी check करें. - .NET, Go, PHP (curl), nginx proxies: ये आमतौर पर operating system का store पढ़ते हैं, इसलिए
ca-certificatesupdate करें और service restart करें. - Docker: fresh base image पर image फिर से build करें; पुरानी image में पुरानी list रहती है.
4. दोबारा ऐसा न हो, इसके लिए क्या ध्यान रखें (checklist)
- [ ] आप जो भी certificate इस्तेमाल करते हैं उसकी list रखें, और वह किस CA और root से chain होता है, यह लिखें.
- [ ] जो certificates आपने नहीं माँगे, उनके लिए Certificate Transparency logs पर नज़र रखें (जैसे crt.sh पर अपना domain search करें).
- [ ] DNS CAA record डालें ताकि सिर्फ आपकी चुनी CA आपके domain के लिए certificate दे सके, जैसे
yoursite.in. CAA 0 issue "letsencrypt.org". - [ ] हर महीने
ca-certificates, language runtimes और base images update करें, और बाद में services restart करें. - [ ] Certificate checks बंद वाला code कभी ship न करें, "सिर्फ testing के लिए" भी नहीं.
- [ ] Automatic, short-lived certificates (ACME) इस्तेमाल करें, ताकि emergency में CA बदलने में बस कुछ मिनट लगें.
- [ ] एक दूसरी trusted CA तैयार रखें, ताकि एक CA की problem से आपकी site बंद न हो.
स्रोत: Google Chrome and Android Security Teams, "Protecting Chrome and Android Users from Compromised eMudhra Intermediate CA Certificates", Google Blog, 20 अक्टूबर 2026; Mozilla Firefox Security Team, "Protecting Firefox users following the compromise of eMudhra intermediate certificates", Mozilla Security Blog, 20 अक्टूबर 2026 (updated 21 अक्टूबर 2026); eMudhra, "eMudhra Statement on Recent Certificate Security Incident", eMudhra official website, 20 अक्टूबर 2026 (updated 22 अक्टूबर 2026); Cloudflare, "8 eMudhra certificates are compromised. Here's what you need to know", Cloudflare Blog, 20 अक्टूबर 2026; Palo Alto Networks Unit 42, "eMudhra Intermediate CA Certificates Compromised", 22 अक्टूबर 2026.
Check if you're safe: Website Security Checklist