29. OWASP Top 10 Web Vulnerabilities
29.7 The Rest: Design, Components, Integrity, Logging, SSRF
Quick answer: the short, self-contained version of this lesson is the guide DevSecOps Security Pipeline (SAST, SCA, Secrets).
| # | Risk | One-line fix |
|---|---|---|
| A04 Insecure Design | Missing security thinking in the design itself | Threat-model early; add rate limits, validation and abuse cases by design |
| A05 Security Misconfiguration | Default passwords, dir listing, verbose errors, open ports | Harden configs (Chapter 8/28), hide versions, turn off debug, patch |
| A06 Vulnerable Components | Old libraries/plugins with known CVEs | Track dependencies, update often, remove unused ones (WPScan, Chapter 21) |
| A08 Integrity Failures | Trusting unsigned updates/data, insecure deserialization | Verify signatures/checksums, do not deserialize untrusted data |
| A09 Logging/Monitoring Failures | Attacks unnoticed because nothing is logged | Log security events and monitor them (SOC, Chapter 31) |
| A10 SSRF | Server fetches a URL the user controls, reaching internal systems | Allow-list destinations; block internal/metadata IPs |
SSRF matters a lot in the cloud: a server tricked into fetching http://169.254.169.254/ (the AWS metadata address) can leak credentials. Fix: block that address, use IMDSv2, and allow-list outbound URLs (more in Chapter 30).
Ravindra Bagale's Tip
A06 (outdated components) is the most neglected, yet the easiest to exploit. composer, npm, WordPress plugins – update them regularly. An attacker doesn't need to study your code; one known CVE in an old library is enough. Updating is a cheap and effective defence.
Ravindra Bagale's Tip – मराठी
A06 (जुने components) सर्वात दुर्लक्षित पण सर्वात सोपे-to-exploit आहे. composer, npm, WordPress plugins – regularly update करा. Attacker ला तुमचा code शोधायची गरज नाही; एका जुन्या library चा known CVE पुरतो. Update करणे हा स्वस्त आणि प्रभावी बचाव आहे.
Ravindra Bagale's Tip – हिंदी
A06 (पुराने components) सबसे ज़्यादा नज़रअंदाज़ होता है पर exploit करने में सबसे आसान है. composer, npm, WordPress plugins – regularly update करो. Attacker को आपका code खंगालने की ज़रूरत नहीं; एक पुरानी library का known CVE काफ़ी है. Update करना सस्ता और असरदार बचाव है.
Practice task
For your reels app, list its components (PHP version, libraries, JS packages) and check whether any are outdated. Write one action for each of A05, A06 and A10 that you would apply to your own server.
Real incident: AOMEI Backupper update servers tampered for minutes at a time to push a backdoor – UNC7017 (Oct 2026)
1. What happened
On 15 October 2026, Google Threat Intelligence Group (GTIG) and Mandiant disclosed that a threat cluster they track as UNC7017 tampered with the update infrastructure of AOMEI Technology, maker of the Windows backup tool AOMEI Backupper (and the remote-desktop tool AnyViewer), between April and July 2026. ManageEngine's Threat Analysis Lab (METAL, part of Zoho) first spotted it in late May. The attacker changed two update files on AOMEI's own servers for only 5 to 10 minutes at a time and then put the genuine files back. Confirmed windows: 28 May (10 min), 16 July (6 min) and 20 July (5 min), all UTC. Any copy that checked for an update during a window downloaded and ran a backdoor. Affected organisations were in IT services, telecom and higher education across 11 countries, including India. Mandiant notified AOMEI on 17 July; AOMEI said on 29 July it had taken corrective action – but that does not clean machines that were already hit.
2. How the attack worked (OWASP A08 – software and data integrity failure)
- Backupper regularly fetches
down_html.ini(which update to download, and its MD5) andNotifycfg.ini(what the pop-up service should show and run). - Neither file was cryptographically signed, and the MD5 "proof" sat inside the same unsigned file – so the attacker simply changed the URL and the MD5 together.
- The update pointed to an attacker ZIP; the notification file then made it run. A downloader (CROSSROAD) created a scheduled task
RadminComponentRuntimethat runs every three hours, then deleted itself. - That task starts a genuine signed Radmin program, which loads an attacker DLL placed beside it and then the SHINYROAD backdoor (remote shell). Later, an Adaptix C2 agent disguised as Nitro PDF was pushed on some machines.
- On 20 July the pop-up file opened an invisible 1×1 window pointing to a WebDAV path on an attacker server, which can leak the user's NetNTLMv2 hash with no program running at all.
3. How to defend
If you build software (developers):
- Sign every update file and executable, and verify the digital signature before running it – HTTPS or an MD5 inside a config file is not proof.
- Sign remote config files (.ini, .json, .xml) too, and reject any config whose signature fails.
- Allow downloads only from your own pinned domains; block
file://and UNC/WebDAV paths in pop-ups and web views. - Keep marketing pop-ups separate from the update channel, and put file-integrity monitoring plus MFA on update servers.
If you use a Windows PC:
- If AOMEI Backupper or AnyViewer was installed between April and July 2026, open Task Scheduler and look for
RadminComponentRuntimeorNitroRuntime. - Check
%LOCALAPPDATA%\Radmin\and%LOCALAPPDATA%\Nitro Pro\for files you did not install; ask IT or run a full EDR/antivirus scan if found. - Do not decide "it's safe" by opening the vendor's download page today – the files were changed back within minutes.
4. How to take care so it won't happen again (5-point checklist)
- [ ] Developers: update client verifies a code signature on both the package and the config before using either.
- [ ] Developers: update downloads pinned to official domains;
file://and WebDAV blocked in in-app pop-ups. - [ ] Companies: hunt the whole April–July 2026 period on every PC that runs AOMEI software; preserve the cached update files in its
Tmphtmlfolder. - [ ] Companies: block outbound SMB (TCP 445) and WebDAV to the internet, and alert on unsigned programs started by updater processes.
- [ ] Everyone: keep an inventory of auto-updating tools – every one of them is a door into your PC.
Source: Google Threat Intelligence Group / Mandiant, "Investigating Ephemeral Supply Chain Tampering", 15 October 2026; The Hacker News, 16 October 2026; ManageEngine Threat Analysis Lab (METAL). Educational summary only – neither report says how the attacker got write access to AOMEI's servers.
Real incident: AOMEI Backupper चे update servers काही मिनिटांसाठी बदलून backdoor पाठवला – UNC7017 (Oct 2026)
1. काय झालं
15 October 2026 ला Google Threat Intelligence Group (GTIG) आणि Mandiant नी सांगितलं की UNC7017 नावाच्या गटाने April ते July 2026 दरम्यान AOMEI Technology च्या update infrastructure शी छेडछाड केली. AOMEI म्हणजे Windows backup tool AOMEI Backupper (आणि AnyViewer) बनवणारी company. ManageEngine च्या lab (METAL, Zoho) ला हे late May मध्ये पहिल्यांदा दिसलं. Attacker ने AOMEI च्या स्वतःच्या servers वरच्या दोन update files फक्त 5 ते 10 मिनिटांसाठी बदलल्या आणि मग खऱ्या files परत ठेवल्या. Confirm झालेल्या windows: 28 May (10 min), 16 July (6 min), 20 July (5 min) – UTC. त्या मिनिटांत ज्या copy ने update check केलं, तिने backdoor download करून चालवला. India सकट 11 देशांमध्ये IT services, telecom आणि higher education मधल्या संस्था affected झाल्या. Mandiant ने 17 July ला AOMEI ला कळवलं; AOMEI ने 29 July ला fix केलं म्हणून सांगितलं – पण आधीच hit झालेले PCs त्याने साफ होत नाहीत.
2. Attack कसा झाला (OWASP A08 – software आणि data integrity failure)
- Backupper नियमितपणे
down_html.ini(कोणता update आणि त्याचा MD5) आणिNotifycfg.ini(pop-up service ने काय दाखवायचं आणि काय चालवायचं) या files आणतो. - दोन्ही files वर signature नव्हती, आणि MD5 चा "पुरावा" त्याच unsigned file मध्ये होता – म्हणजे attacker ने URL आणि MD5 दोन्ही एकदम बदलले. सोप्पं!
- Update ने attacker ची ZIP आणली; notification file ने ती चालवली. Downloader (CROSSROAD) ने
RadminComponentRuntimeनावाचा scheduled task बनवला – दर तीन तासांनी चालणारा – आणि स्वतःला delete केलं. - तो task एक खरा, signed Radmin program चालवतो, जो बाजूला ठेवलेला attacker चा DLL load करतो आणि मग SHINYROAD backdoor (remote shell). नंतर काही machines वर Nitro PDF च्या वेषात Adaptix C2 agent पाठवला.
- 20 July ला pop-up file ने attacker च्या server वरचा WebDAV path उघडणारी 1×1 invisible window दाखवली – यात कोणताही program न चालता user चा NetNTLMv2 hash leak होऊ शकतो.
3. बचाव कसा करायचा
तुम्ही software बनवत असाल (developers):
- प्रत्येक update file आणि executable sign करा, आणि चालवण्यापूर्वी digital signature verify करा – HTTPS किंवा config मधला MD5 म्हणजे पुरावा नाही.
- Remote config files (.ini, .json, .xml) सुद्धा sign करा, signature fail झाली तर config नाकारा.
- फक्त स्वतःच्या pinned domains वरून download; pop-ups आणि web views मध्ये
file://आणि UNC/WebDAV paths block करा. - Marketing pop-ups update channel पासून वेगळे ठेवा, आणि update servers वर file-integrity monitoring आणि MFA लावा.
तुम्ही Windows PC वापरत असाल:
- April–July 2026 मध्ये AOMEI Backupper किंवा AnyViewer installed असेल, तर Task Scheduler उघडा आणि
RadminComponentRuntimeकिंवाNitroRuntimeआहे का बघा. %LOCALAPPDATA%\Radmin\आणि%LOCALAPPDATA%\Nitro Pro\मध्ये तुम्ही न टाकलेल्या files आहेत का बघा; सापडल्या तर IT ला सांगा किंवा full EDR/antivirus scan चालवा.- आज vendor चं download page उघडून "safe आहे" असं ठरवू नका – files काही मिनिटांतच परत बदलल्या होत्या.
4. परत होऊ नये म्हणून काळजी (5-point checklist)
- [ ] Developers: update client package आणि config – दोन्हींची code signature वापरण्याआधी verify करतो.
- [ ] Developers: downloads official domains वरच pinned; in-app pop-ups मध्ये
file://आणि WebDAV block. - [ ] Companies: AOMEI software असलेल्या प्रत्येक PC वर संपूर्ण April–July 2026 काळासाठी hunt करा;
Tmphtmlfolder मधल्या cached update files जपून ठेवा. - [ ] Companies: internet कडे जाणारं SMB (TCP 445) आणि WebDAV block करा, आणि updater ने चालवलेल्या unsigned programs वर alert लावा.
- [ ] सगळ्यांनी: auto-update होणाऱ्या tools ची list ठेवा – प्रत्येक tool म्हणजे तुमच्या PC चं एक दार आहे.
Source: Google Threat Intelligence Group / Mandiant, "Investigating Ephemeral Supply Chain Tampering", 15 October 2026; The Hacker News, 16 October 2026; ManageEngine Threat Analysis Lab (METAL). फक्त शिकण्यासाठी summary.
Real incident: AOMEI Backupper के update servers कुछ मिनटों के लिए बदलकर backdoor भेजा गया – UNC7017 (Oct 2026)
1. क्या हुआ
15 October 2026 को Google Threat Intelligence Group (GTIG) और Mandiant ने बताया कि UNC7017 नाम के समूह ने April से July 2026 के बीच AOMEI Technology के update infrastructure से छेड़छाड़ की. AOMEI, Windows backup tool AOMEI Backupper (और AnyViewer) बनाती है. ManageEngine की lab (METAL, Zoho) ने इसे late May में पहली बार पकड़ा. Attacker ने AOMEI के अपने servers पर दो update files सिर्फ़ 5 से 10 मिनट के लिए बदलीं और फिर असली files वापस रख दीं. Confirm windows: 28 May (10 min), 16 July (6 min), 20 July (5 min) – UTC. उन मिनटों में जिस copy ने update check किया, उसने backdoor download करके चला दिया. India समेत 11 देशों में IT services, telecom और higher education की संस्थाएँ प्रभावित हुईं. Mandiant ने 17 July को AOMEI को बताया; AOMEI ने 29 July को fix करने की बात कही – लेकिन इससे पहले से hit हुए PCs साफ़ नहीं होते.
2. Attack कैसे हुआ (OWASP A08 – software और data integrity failure)
- Backupper नियमित रूप से
down_html.ini(कौन सा update और उसका MD5) औरNotifycfg.ini(pop-up service क्या दिखाए और क्या चलाए) लाता है. - दोनों files पर signature नहीं था, और MD5 का "सबूत" उसी unsigned file में था – तो attacker ने URL और MD5 दोनों साथ बदल दिए.
- Update ने attacker की ZIP मँगाई; notification file ने उसे चलाया. Downloader (CROSSROAD) ने
RadminComponentRuntimeनाम का scheduled task बनाया – हर तीन घंटे चलने वाला – और खुद को delete कर दिया. - वह task एक असली, signed Radmin program चलाता है, जो पास रखा attacker का DLL load करता है और फिर SHINYROAD backdoor (remote shell). बाद में कुछ machines पर Nitro PDF के भेष में Adaptix C2 agent भेजा गया.
- 20 July को pop-up file ने attacker के server पर WebDAV path खोलने वाली 1×1 invisible window दिखाई – इससे बिना कोई program चलाए user का NetNTLMv2 hash leak हो सकता है.
3. बचाव कैसे करें
आप software बनाते हैं (developers):
- हर update file और executable sign करें, और चलाने से पहले digital signature verify करें – HTTPS या config के अंदर MD5 सबूत नहीं है.
- Remote config files (.ini, .json, .xml) भी sign करें, signature fail हो तो config reject करें.
- सिर्फ़ अपने pinned domains से download; pop-ups और web views में
file://और UNC/WebDAV paths block करें. - Marketing pop-ups को update channel से अलग रखें, और update servers पर file-integrity monitoring और MFA लगाएँ.
आप Windows PC इस्तेमाल करते हैं:
- April–July 2026 में AOMEI Backupper या AnyViewer installed था तो Task Scheduler खोलें और
RadminComponentRuntimeयाNitroRuntimeदेखें. %LOCALAPPDATA%\Radmin\और%LOCALAPPDATA%\Nitro Pro\में ऐसी files देखें जो आपने install नहीं कीं; मिलें तो IT को बताएँ या full EDR/antivirus scan चलाएँ.- आज vendor का download page खोलकर "safe है" तय न करें – files कुछ ही मिनटों में वापस बदल दी गई थीं.
4. दोबारा न हो, इसके लिए ध्यान (5-point checklist)
- [ ] Developers: update client package और config – दोनों का code signature इस्तेमाल से पहले verify करता है.
- [ ] Developers: downloads official domains पर pinned; in-app pop-ups में
file://और WebDAV block. - [ ] Companies: AOMEI software वाले हर PC पर पूरे April–July 2026 के लिए hunt करें;
Tmphtmlfolder की cached update files सुरक्षित रखें. - [ ] Companies: internet की तरफ़ SMB (TCP 445) और WebDAV block करें, और updater द्वारा चलाए गए unsigned programs पर alert लगाएँ.
- [ ] सभी: auto-update होने वाले tools की list रखें – हर tool आपके PC का एक दरवाज़ा है.
Source: Google Threat Intelligence Group / Mandiant, "Investigating Ephemeral Supply Chain Tampering", 15 October 2026; The Hacker News, 16 October 2026; ManageEngine Threat Analysis Lab (METAL). सिर्फ़ सीखने के लिए summary.
Check if you're safe: Is My Website Hacked? · Website Security Checklist
Real incident: LiteLLM – a poisoned release of a popular AI library on PyPI and Docker stole cloud and AI keys (Oct 2026)
1. What happened
LiteLLM is a popular open-source Python library and proxy. Apps use it to talk to many AI models (OpenAI, Claude, Gemini, Bedrock and more) through one common API. Datadog says it gets about 23 million downloads a week. In this lesson you learnt A06 (risky components), A08 (trusting updates without checking) and A09 (logging failures). This incident has all three.
- On 21 October 2026, an attacker took over LiteLLM's release pipeline and published a poisoned version, litellm 1.107.0.
- The bad version was on PyPI (the Python package site, used by
pip install) from 11:39 to 13:23 UTC (about 5:09 pm to 6:53 pm IST). - The same bad code was in the Docker images tagged
v1.107.0,latest,main-latestandmain-stableon Docker Hub and GitHub's registry (GHCR), from 11:46 UTC until about 13:51 UTC (GHCR) and 14:20 UTC (Docker Hub). - The hidden code was a credential stealer. It looked for cloud keys, developer tokens, AI-tool keys, browser data and LiteLLM proxy secrets, and sent them out. It also set up a small program that could download and run more code every hour.
- It ran every time Python started on that machine, even if the app never used LiteLLM.
- LiteLLM's own source code on GitHub was clean. Only the built files on PyPI and Docker were bad, so reading the source code would not show the problem.
- Wiz saw stolen AWS role keys from build servers and Kubernetes nodes being tested about 4.5 hours later, and then used to list AI models on Amazon Bedrock. This matches "LLMjacking": using stolen cloud keys to run AI models on the victim's bill.
- Enterprise customers using LiteLLM's private release were not affected.
- This was LiteLLM's second compromise in 2026 (the first was in March, versions 1.82.7 and 1.82.8). No link between the two has been shown.
2. How the hack happened (public reporting only – high-level)
- LiteLLM says one of its internal LiteLLM services was open to the public internet. It had an extra user account with a harmless-looking name. LiteLLM suspects the attacker got in through a recently patched flaw.
- That service saved AI responses in its logs. Some responses from an AI coding tool (LiteLLM names Claude Code) contained the developer's GitHub CLI login token. So the logs held secret tokens.
- From there the attacker had the GitHub CLI tokens of three developers.
- Two days earlier, on 19 October, LiteLLM had given extra release permissions to two engineers for a short time, so they could publish daily bug-fix releases.
- Branch protection (a GitHub rule that blocks unreviewed changes) first rejected the attacker's change. Five seconds later, a token with organisation-owner rights overrode the protection and pushed a changed build workflow.
- A second developer's token was used to pass the production approval step. The pipeline then built, signed and published the poisoned files – so the signature looked normal.
- The build used files from a lookalike GitHub account,
Berri-AI/litellm, instead of the realBerriAI/litellm. One small dash. - A third token deleted the workflow run records, so fewer logs were left to investigate.
3. How to stop it / defend (this lesson: A08 Software and Data Integrity, A06 Vulnerable Components, A09 Logging and Monitoring)
Why: when you install a package, you run someone else's code with your keys. So you must control which exact version comes in and what secrets it can reach.
If you installed litellm 1.107.0 or pulled those Docker tags on 21 October, follow these steps in order:
- Stop. Do not start with
pipor Python in that environment – the bad code runs every time Python starts, andpipis Python too. - Rebuild the machine, virtual environment or container from a clean image, and pin
litellm==1.106.2(LiteLLM's advice). - If you must clean in place, delete from the shell the files LiteLLM lists in
site-packages(cook.pth,cook.py, the addedsitecustomize.pyand their.pyccopies), and stop the background Python process holding/tmp/remote_code_loader.lock. A rebuild is still safer. - Rotate every secret that machine could reach: cloud keys and IAM role sessions, AI provider keys,
DATABASE_URL, GitHub and CI tokens, and all.envsecrets. - In AWS CloudTrail, look for
GetCallerIdentitycalls and new Bedrock use from unknown IPs after 21 October.
To protect your own pipeline (the A08/A09 lesson):
- Never log tokens or full AI responses with secrets. Mask secrets before writing logs.
- Keep internal tools off the public internet. Put them behind a VPN or a login, and patch them fast.
- Give release rights for a short time only, and remove them when the job is done.
- Make sure nobody, not even organisation owners, can bypass branch protection. Use MFA and short-lived tokens.
- Check where the code comes from: the build must pull only from the real repository name, and the published files must match the source (build provenance / attestations).
- Keep the workflow run logs where a stolen token cannot delete them.
How to pin versions in common stacks, so a new bad release is not pulled in by itself:
- Python:
pip install litellm==1.106.2, or arequirements.txtwith exact versions and--require-hashes. - Node.js: commit
package-lock.jsonand install withnpm ci. - Docker: use the image digest (
image@sha256:...) instead oflatest. - Java (Maven/Gradle): fixed versions, no
LATESTor+ranges, plus dependency verification. - Go: keep
go.sumcommitted; PHP: commitcomposer.lock; .NET: usepackages.lock.json.
4. How to take care so it won't happen again (checklist)
- [ ] Search all servers, laptops, CI runners and images for
litellm==1.107.0and the four bad Docker tags; rebuild anything that matches. - [ ] Rotate every key those machines could see, and watch CloudTrail and your AI bills for strange use.
- [ ] Pin exact versions and image digests in every project; update on purpose, after a short wait and a check.
- [ ] Mask tokens in all logs, including AI tool and proxy logs.
- [ ] Keep admin and internal tools off the internet.
- [ ] Short-lived release permissions, MFA, and branch protection that no one can bypass.
- [ ] Verify the source repository name and build provenance before trusting a release.
Source: LiteLLM, "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised", LiteLLM official blog, 21 October 2026 (updated 20:30 UTC); Datadog Security Labs, "LiteLLM supply chain compromise: What you need to know", 21 October 2026; The Hacker News, "LiteLLM Suspects GitHub Token Leak in AI Gateway Logs Behind Malicious Package Release", 22 October 2026; JFrog Security Research, "LiteLLM Hijacked Again: Malicious 1.107.0 Wheels Steal Credentials and Load Remote Code", 21 October 2026 (updated 22 October 2026).
1. काय झालं
LiteLLM ही एक popular open-source Python library आणि proxy आहे. Apps तिच्या मदतीने एकाच common API ने अनेक AI models शी (OpenAI, Claude, Gemini, Bedrock आणि बरेच) बोलतात. Datadog नुसार ती आठवड्याला सुमारे 2.3 कोटी (23 million) वेळा download होते. या lesson मध्ये तुम्ही A06 (धोकादायक components), A08 (check न करता updates वर विश्वास) आणि A09 (logging मधल्या चुका) शिकलात. या incident मध्ये तिन्ही आहेत.
- 21 ऑक्टोबर 2026 ला एका attacker ने LiteLLM ची release pipeline ताब्यात घेतली आणि एक विषारी version, litellm 1.107.0, publish केलं.
- हे वाईट version PyPI वर (Python packages ची site, जी
pip installवापरते) 11:39 ते 13:23 UTC (म्हणजे साधारण संध्याकाळी 5:09 ते 6:53 IST) होतं. - हाच वाईट code Docker Hub आणि GitHub च्या registry (GHCR) वरच्या
v1.107.0,latest,main-latestआणिmain-stabletags असलेल्या Docker images मध्ये पण होता – 11:46 UTC पासून साधारण 13:51 UTC (GHCR) आणि 14:20 UTC (Docker Hub) पर्यंत. - लपलेला code हा credential stealer होता. तो cloud keys, developer tokens, AI-tool keys, browser data आणि LiteLLM proxy secrets शोधून बाहेर पाठवायचा. त्याने एक छोटा program पण सुरू केला जो दर तासाला आणखी code download करून चालवू शकत होता.
- तो त्या machine वर प्रत्येक वेळी Python सुरू झाल्यावर चालायचा, app ने LiteLLM वापरलं नसलं तरी.
- GitHub वरचा LiteLLM चा source code clean होता. फक्त PyPI आणि Docker वरच्या built files वाईट होत्या, म्हणून फक्त source code वाचून problem दिसला नसता.
- Wiz ला दिसलं की build servers आणि Kubernetes nodes वरून चोरलेल्या AWS role keys साधारण 4.5 तासांनी test केल्या गेल्या, आणि मग Amazon Bedrock वरचे AI models list करायला वापरल्या. हे "LLMjacking" सारखं आहे: चोरलेल्या cloud keys ने victim च्या bill वर AI models चालवणं.
- LiteLLM चं private release वापरणारे enterprise customers affected नव्हते.
- 2026 मधला हा LiteLLM वरचा दुसरा हल्ला आहे (पहिला मार्चमध्ये, versions 1.82.7 आणि 1.82.8). दोघांमध्ये संबंध असल्याचं अजून दिसलेलं नाही.
2. Hack कसा झाला (फक्त public reporting – high-level)
- LiteLLM म्हणतं की त्यांची एक internal LiteLLM service public internet वर उघडी होती. तिच्यात साधं नाव असलेलं एक जास्तीचं user account होतं. LiteLLM ला वाटतं की attacker एका नुकत्याच patch झालेल्या flaw मधून आत आला.
- ती service AI responses logs मध्ये save करायची. एका AI coding tool च्या (LiteLLM ने Claude Code चं नाव घेतलं) काही responses मध्ये developer चा GitHub CLI login token होता. म्हणून logs मध्ये secret tokens होते.
- तिथून attacker कडे तीन developers चे GitHub CLI tokens आले.
- दोन दिवस आधी, 19 ऑक्टोबरला, LiteLLM ने दोन engineers ना daily bug-fix releases publish करता यावे म्हणून थोड्या काळासाठी जास्तीच्या release permissions दिल्या होत्या.
- Branch protection ने (review न झालेले बदल अडवणारा GitHub rule) आधी attacker चा बदल reject केला. पाच seconds नंतर, organisation-owner rights असलेल्या एका token ने protection override केलं आणि बदललेला build workflow push केला.
- दुसऱ्या developer चा token वापरून production approval step पार केली. मग pipeline ने विषारी files build, sign आणि publish केल्या – म्हणून signature normal दिसली.
- Build ने खऱ्या
BerriAI/litellmऐवजीBerri-AI/litellmया दिसायला सारख्या GitHub account वरच्या files वापरल्या. फक्त एक छोटा dash. - तिसऱ्या token ने workflow run records delete केले, म्हणून investigation साठी कमी logs उरले.
3. कसं थांबवायचं / बचाव (हा lesson: A08 Software and Data Integrity, A06 Vulnerable Components, A09 Logging and Monitoring)
का: तुम्ही package install करता तेव्हा तुम्ही दुसऱ्याचा code तुमच्या keys सोबत चालवता. म्हणून नेमकं कोणतं version येतं आणि ते कोणत्या secrets पर्यंत पोहोचू शकतं हे तुमच्या हातात हवं.
जर तुम्ही 21 ऑक्टोबरला litellm 1.107.0 install केलं किंवा ते Docker tags pull केले, तर या steps क्रमाने करा:
- थांबा. त्या environment मध्ये
pipकिंवा Python ने सुरुवात करू नका – Python सुरू होताच वाईट code चालतो, आणिpipपण Python च आहे. - Machine, virtual environment किंवा container clean image पासून पुन्हा build करा, आणि
litellm==1.106.2pin करा (LiteLLM चा सल्ला). - जागेवरच साफ करायचं असेल, तर shell मधून
site-packagesमधल्या LiteLLM ने सांगितलेल्या files delete करा (cook.pth,cook.py, जोडलेलीsitecustomize.pyआणि त्यांच्या.pyccopies), आणि/tmp/remote_code_loader.lockधरून बसलेला background Python process बंद करा. तरीही rebuild जास्त safe आहे. - त्या machine ला पोहोचता येणारे सगळे secrets rotate करा: cloud keys आणि IAM role sessions, AI provider keys,
DATABASE_URL, GitHub आणि CI tokens, आणि सगळे.envsecrets. - AWS CloudTrail मध्ये 21 ऑक्टोबर नंतर अनोळखी IPs वरून आलेले
GetCallerIdentitycalls आणि नवीन Bedrock वापर शोधा.
तुमची स्वतःची pipeline वाचवायला (A08/A09 चा धडा):
- Tokens किंवा secrets असलेले पूर्ण AI responses कधीही log करू नका. Logs लिहिण्याआधी secrets mask करा.
- Internal tools public internet पासून दूर ठेवा. ते VPN किंवा login च्या मागे ठेवा, आणि लवकर patch करा.
- Release rights फक्त थोड्या वेळासाठी द्या, आणि काम झालं की काढून टाका.
- कोणीही, organisation owners सुद्धा, branch protection bypass करू शकणार नाही याची खात्री करा. MFA आणि short-lived tokens वापरा.
- Code कुठून येतो ते check करा: build ने फक्त खऱ्या repository name वरूनच code घ्यावा, आणि publish झालेल्या files source शी जुळल्या पाहिजेत (build provenance / attestations).
- Workflow run logs अशा ठिकाणी ठेवा जिथे चोरलेला token ते delete करू शकणार नाही.
Common stacks मध्ये versions pin कसे करायचे, म्हणजे नवीन वाईट release आपोआप येणार नाही:
- Python:
pip install litellm==1.106.2, किंवा exact versions आणि--require-hashesअसलेलीrequirements.txt. - Node.js:
package-lock.jsoncommit करा आणिnpm ciने install करा. - Docker:
latestऐवजी image चा digest (image@sha256:...) वापरा. - Java (Maven/Gradle): fixed versions,
LATESTकिंवा+ranges नको, सोबत dependency verification. - Go:
go.sumcommit ठेवा; PHP:composer.lockcommit करा; .NET:packages.lock.jsonवापरा.
4. पुन्हा असं होऊ नये म्हणून काय काळजी घ्यायची (checklist)
- [ ] सगळे servers, laptops, CI runners आणि images मध्ये
litellm==1.107.0आणि ते चार वाईट Docker tags शोधा; जे match होईल ते rebuild करा. - [ ] त्या machines ना दिसणारी प्रत्येक key rotate करा, आणि CloudTrail आणि AI bills वर विचित्र वापर लक्ष ठेवून बघा.
- [ ] प्रत्येक project मध्ये exact versions आणि image digests pin करा; update मुद्दाम करा, थोडं थांबून आणि check करून.
- [ ] सगळ्या logs मध्ये tokens mask करा, AI tool आणि proxy logs सुद्धा.
- [ ] Admin आणि internal tools internet पासून दूर ठेवा.
- [ ] थोड्या वेळाच्या release permissions, MFA, आणि कोणीही bypass करू शकणार नाही अशी branch protection.
- [ ] Release वर विश्वास ठेवण्याआधी source repository चं नाव आणि build provenance verify करा.
स्रोत: LiteLLM, "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised", LiteLLM official blog, 21 ऑक्टोबर 2026 (updated 20:30 UTC); Datadog Security Labs, "LiteLLM supply chain compromise: What you need to know", 21 ऑक्टोबर 2026; The Hacker News, "LiteLLM Suspects GitHub Token Leak in AI Gateway Logs Behind Malicious Package Release", 22 ऑक्टोबर 2026; JFrog Security Research, "LiteLLM Hijacked Again: Malicious 1.107.0 Wheels Steal Credentials and Load Remote Code", 21 ऑक्टोबर 2026 (updated 22 ऑक्टोबर 2026).
1. क्या हुआ
LiteLLM एक popular open-source Python library और proxy है. Apps इसकी मदद से एक ही common API से कई AI models (OpenAI, Claude, Gemini, Bedrock और भी) से बात करते हैं. Datadog के मुताबिक यह हर हफ़्ते लगभग 2.3 करोड़ (23 million) बार download होती है. इस lesson में आपने A06 (खतरनाक components), A08 (बिना check किए updates पर भरोसा) और A09 (logging की गलतियाँ) सीखा. इस incident में तीनों हैं.
- 21 अक्टूबर 2026 को एक attacker ने LiteLLM की release pipeline पर कब्ज़ा किया और एक ज़हरीला version, litellm 1.107.0, publish किया.
- यह खराब version PyPI पर (Python packages की site, जिसे
pip installइस्तेमाल करता है) 11:39 से 13:23 UTC (यानी लगभग शाम 5:09 से 6:53 IST) तक था. - यही खराब code Docker Hub और GitHub की registry (GHCR) पर
v1.107.0,latest,main-latestऔरmain-stabletags वाली Docker images में भी था – 11:46 UTC से लगभग 13:51 UTC (GHCR) और 14:20 UTC (Docker Hub) तक. - छुपा हुआ code एक credential stealer था. वह cloud keys, developer tokens, AI-tool keys, browser data और LiteLLM proxy secrets ढूँढकर बाहर भेजता था. उसने एक छोटा program भी चालू किया जो हर घंटे और code download करके चला सकता था.
- वह उस machine पर हर बार Python शुरू होने पर चलता था, चाहे app ने LiteLLM इस्तेमाल न किया हो.
- GitHub पर LiteLLM का source code clean था. सिर्फ़ PyPI और Docker की built files खराब थीं, इसलिए सिर्फ़ source code पढ़कर problem नहीं दिखती.
- Wiz ने देखा कि build servers और Kubernetes nodes से चुराई गई AWS role keys लगभग 4.5 घंटे बाद test की गईं, और फिर Amazon Bedrock के AI models list करने में इस्तेमाल हुईं. यह "LLMjacking" जैसा है: चुराई गई cloud keys से victim के bill पर AI models चलाना.
- LiteLLM का private release इस्तेमाल करने वाले enterprise customers affected नहीं थे.
- 2026 में LiteLLM पर यह दूसरा हमला है (पहला मार्च में, versions 1.82.7 और 1.82.8). दोनों के बीच कोई संबंध अभी तक नहीं दिखा है.
2. Hack कैसे हुआ (सिर्फ़ public reporting – high-level)
- LiteLLM कहता है कि उनकी एक internal LiteLLM service public internet पर खुली थी. उसमें मामूली नाम वाला एक extra user account था. LiteLLM को लगता है कि attacker एक हाल ही में patch हुए flaw से अंदर आया.
- वह service AI responses को logs में save करती थी. एक AI coding tool (LiteLLM ने Claude Code का नाम लिया) के कुछ responses में developer का GitHub CLI login token था. इसलिए logs में secret tokens थे.
- वहाँ से attacker के पास तीन developers के GitHub CLI tokens आ गए.
- दो दिन पहले, 19 अक्टूबर को, LiteLLM ने दो engineers को daily bug-fix releases publish करने के लिए थोड़े समय के लिए extra release permissions दी थीं.
- Branch protection (बिना review वाले बदलाव रोकने वाला GitHub rule) ने पहले attacker का बदलाव reject किया. पाँच seconds बाद, organisation-owner rights वाले एक token ने protection override किया और बदला हुआ build workflow push कर दिया.
- दूसरे developer के token से production approval step पार की गई. फिर pipeline ने ज़हरीली files build, sign और publish कीं – इसलिए signature normal दिखी.
- Build ने असली
BerriAI/litellmकी जगहBerri-AI/litellmनाम के मिलते-जुलते GitHub account की files इस्तेमाल कीं. बस एक छोटा dash. - तीसरे token ने workflow run records delete कर दिए, इसलिए investigation के लिए कम logs बचे.
3. इसे कैसे रोकें / बचाव (यह lesson: A08 Software and Data Integrity, A06 Vulnerable Components, A09 Logging and Monitoring)
क्यों: जब आप package install करते हैं, तो आप किसी और का code अपनी keys के साथ चलाते हैं. इसलिए ठीक कौन सा version आता है और वह किन secrets तक पहुँच सकता है, यह आपके हाथ में होना चाहिए.
अगर आपने 21 अक्टूबर को litellm 1.107.0 install किया या वे Docker tags pull किए, तो ये steps क्रम से करें:
- रुकिए. उस environment में
pipया Python से शुरुआत न करें – Python शुरू होते ही खराब code चलता है, औरpipभी Python ही है. - Machine, virtual environment या container को clean image से दोबारा build करें, और
litellm==1.106.2pin करें (LiteLLM की सलाह). - अगर वहीं साफ़ करना ही है, तो shell से
site-packagesमें LiteLLM की बताई files delete करें (cook.pth,cook.py, जोड़ी गईsitecustomize.pyऔर उनकी.pyccopies), और/tmp/remote_code_loader.lockपकड़े बैठा background Python process बंद करें. फिर भी rebuild ज़्यादा safe है. - उस machine की पहुँच वाले सारे secrets rotate करें: cloud keys और IAM role sessions, AI provider keys,
DATABASE_URL, GitHub और CI tokens, और सारे.envsecrets. - AWS CloudTrail में 21 अक्टूबर के बाद अनजान IPs से आए
GetCallerIdentitycalls और नया Bedrock इस्तेमाल ढूँढें.
अपनी खुद की pipeline बचाने के लिए (A08/A09 का सबक):
- Tokens या secrets वाले पूरे AI responses कभी log न करें. Logs लिखने से पहले secrets mask करें.
- Internal tools को public internet से दूर रखें. उन्हें VPN या login के पीछे रखें, और जल्दी patch करें.
- Release rights सिर्फ़ थोड़े समय के लिए दें, और काम होते ही हटा दें.
- पक्का करें कि कोई भी, organisation owners भी, branch protection bypass न कर सके. MFA और short-lived tokens इस्तेमाल करें.
- Code कहाँ से आता है, check करें: build सिर्फ़ असली repository name से ही code ले, और publish हुई files source से मेल खाएँ (build provenance / attestations).
- Workflow run logs ऐसी जगह रखें जहाँ चुराया गया token उन्हें delete न कर सके.
Common stacks में versions pin कैसे करें, ताकि नया खराब release अपने आप न आ जाए:
- Python:
pip install litellm==1.106.2, या exact versions और--require-hashesवालीrequirements.txt. - Node.js:
package-lock.jsoncommit करें औरnpm ciसे install करें. - Docker:
latestकी जगह image का digest (image@sha256:...) इस्तेमाल करें. - Java (Maven/Gradle): fixed versions,
LATESTया+ranges नहीं, साथ में dependency verification. - Go:
go.sumcommit रखें; PHP:composer.lockcommit करें; .NET:packages.lock.jsonइस्तेमाल करें.
4. दोबारा ऐसा न हो, इसके लिए क्या ध्यान रखें (checklist)
- [ ] सारे servers, laptops, CI runners और images में
litellm==1.107.0और वे चार खराब Docker tags ढूँढें; जो match हो उसे rebuild करें. - [ ] उन machines को दिखने वाली हर key rotate करें, और CloudTrail और AI bills पर अजीब इस्तेमाल पर नज़र रखें.
- [ ] हर project में exact versions और image digests pin करें; update जानबूझकर करें, थोड़ा रुककर और check करके.
- [ ] सारे logs में tokens mask करें, AI tool और proxy logs में भी.
- [ ] Admin और internal tools को internet से दूर रखें.
- [ ] थोड़े समय की release permissions, MFA, और ऐसी branch protection जिसे कोई bypass न कर सके.
- [ ] Release पर भरोसा करने से पहले source repository का नाम और build provenance verify करें.
स्रोत: LiteLLM, "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised", LiteLLM official blog, 21 अक्टूबर 2026 (updated 20:30 UTC); Datadog Security Labs, "LiteLLM supply chain compromise: What you need to know", 21 अक्टूबर 2026; The Hacker News, "LiteLLM Suspects GitHub Token Leak in AI Gateway Logs Behind Malicious Package Release", 22 अक्टूबर 2026; JFrog Security Research, "LiteLLM Hijacked Again: Malicious 1.107.0 Wheels Steal Credentials and Load Remote Code", 21 अक्टूबर 2026 (updated 22 अक्टूबर 2026).
Check if you're safe: Password Strength Checker
Real incident: Convertr (Brazil) – one hacked analytics script turned every checkout into a card skimmer (Oct 2026)
1. What happened
In this lesson you learnt A06 (old, unpatched components) and A08 (trusting code without checking it). This real case has both. A card skimmer is hidden code on a payment page. It copies the card details that a shopper types and sends them to the criminal. An analytics script is a small JavaScript file that counts visitors. Many sites load it on every page, including the payment page.
- Convertr is a Brazilian e-commerce platform. It runs the online stores and checkout of dozens of Brazilian fashion brands. Convertr says its merchants have sold more than R$2 billion through it.
- Every Convertr checkout loaded one tracker file from Convertr's own analytics server. That server ran Plausible Community Edition, a free, open-source alternative to Google Analytics.
- From 24 October 2026, an attacker added a card skimmer to the end of that one file. So every Convertr checkout loaded the skimmer.
- The skimmer worked only on checkout pages. It read the card number, expiry date, CVV, card holder name and CPF (the Brazilian taxpayer number). It sent them to the attacker when the shopper placed the order.
- On 26 October, the e-commerce security company Sansec published its research. It says the attacker pushed a new version within two days that matched the exact field names of Convertr's payment system. Sansec links the attack to a Brazilian Magecart group (card-skimming criminals) active since 2024.
- On 27 October, Convertr removed the skimmer and upgraded Plausible to a fixed version. It said it was informing merchants, payment providers and the authorities.
- Browsers can keep the infected file in their cache for up to 24 hours, so shoppers stayed at risk for a while after the cleanup.
2. How the hack happened (public reporting only – high-level)
- Convertr installed Plausible CE 3.0 in 2025 and never updated it.
- Plausible versions 3.0.0 to 3.2.0 have a critical flaw, CVE-2026-8467. Anyone could run commands on the server through a developer tool page that was open without a login. Plausible fixed it in May 2026.
- Sansec suspects the attacker used this flaw to get into the analytics server. It has not seen Convertr's logs, so this is not confirmed.
- Plausible serves the tracker straight from a file on the server's disk. The attacker changed that one file and added hidden skimmer code after the real tracker code.
- Every merchant's checkout page loaded the file, so the skimmer reached all of them at once. No store had to be hacked one by one.
- On the payment page, the skimmer copied the card and CPF details and sent them out when the order was placed. The shopper saw a normal checkout.
3. How to stop it / defend (this lesson: A06 components and A08 integrity)
Why: any script on your payment page can read everything the shopper types. So a small, "harmless" analytics file is as important as the payment code itself.
Controls you can use:
- Keep a list of every component and patch it. This includes tools you host yourself, like analytics servers. An old version with a known critical flaw is an open door.
- Never leave admin or developer tools open to the internet. Put them behind a login, a VPN or an IP allow-list, or switch them off.
- Keep extra scripts off the payment page. Load only the scripts the payment really needs. Better still, use the payment fields hosted by your payment provider, so card numbers never touch your page.
- Use a Content Security Policy (CSP). It tells the browser which sites may load scripts and where the page may send data. A skimmer that tries to send data to an unknown site is then blocked.
- Use Subresource Integrity (SRI) for script files that do not change. The browser refuses to run the file if even one character is different.
- Watch your script files for changes. File-integrity monitoring on the server, and a check that compares the live script with the official release, will show a change on the same day.
Example 1: list the outside scripts on your own checkout page. Run these steps one by one.
- Open a terminal on your own computer.
- Run
curl -s https://YOUR-SHOP.example/checkout | grep -o '<script[^>]*src="[^"]*"' - Output: lines like
<script defer src="https://analytics.YOUR-SHOP.example/js/script.js". There is one line for each script the page loads. - What it means: every line is code that can read your payment form. Each one must be on your component list, be kept updated, and have a clear reason to be on this page. If you do not know a line, find out before your next sale.
Example 2: make an SRI fingerprint for a script file that does not change.
- Download your own copy of the script file, for example
checkout.js. - Run
openssl dgst -sha384 -binary checkout.js | openssl base64 -A - Output: one long line of letters, numbers,
+and/. This is the file's fingerprint. - Put it in the script tag as
integrity="sha384-followed by that line and a closing quote. - What it means: if anyone changes even one byte of the file, the browser refuses to run it. SRI does not work for scripts that change often, like some trackers. For those, use CSP and change monitoring.
4. How to take care so it won't happen again (checklist)
- [ ] Every component, including self-hosted analytics, is on a list with its version, and gets security updates within days.
- [ ] No admin or developer tool page is open to the internet without a login.
- [ ] The payment page loads only the scripts it really needs, or uses the payment provider's hosted fields.
- [ ] A Content Security Policy limits where scripts load from and where the page can send data.
- [ ] Static scripts use SRI. Changing scripts are watched by file-integrity monitoring.
- [ ] Someone gets an alert the same day a script on the payment page changes.
- [ ] As a shopper: use virtual or single-use cards online when your bank offers them, and turn on transaction alerts.
- [ ] If a skimmer is found: remove it, patch the hole, rebuild the server, rotate its secrets, and tell merchants, payment providers and shoppers so they can block cards.
Source: Sansec Forensics Team, "Notorious Brazilian Magecart group hijacks Convertr checkouts via Plausible analytics", 26 October 2026 (updated 27 October 2026); BleepingComputer, "Hackers hijack Convertr analytics script to steal payment card data" (Bill Toulas), 27 October 2026.
1. काय झालं
या lesson मध्ये तुम्ही A06 (जुने, patch न केलेले components) आणि A08 (code न बघता त्यावर विश्वास ठेवणे) शिकलात. या खऱ्या घटनेत दोन्ही आहेत. Card skimmer म्हणजे payment page वर लपवलेला code. Shopper जे card details टाइप करतो, ते तो copy करतो आणि गुन्हेगाराला पाठवतो. Analytics script म्हणजे visitors मोजणारी छोटी JavaScript file. बऱ्याच sites ती प्रत्येक page वर load करतात, payment page वरसुद्धा.
- Convertr हा ब्राझीलचा e-commerce platform आहे. तो ब्राझीलमधल्या डझनभर fashion brands चे online stores आणि checkout चालवतो. Convertr म्हणतं की त्याच्या merchants नी यावरून R$2 billion पेक्षा जास्त विक्री केली आहे.
- प्रत्येक Convertr checkout, Convertr च्या स्वतःच्या analytics server वरून एक tracker file load करत होतं. त्या server वर Plausible Community Edition चालत होतं. ते Google Analytics ला free, open-source पर्याय आहे.
- 24 ऑक्टोबर 2026 पासून attacker ने त्या एकाच file च्या शेवटी card skimmer जोडला. त्यामुळे प्रत्येक Convertr checkout ने skimmer load केला.
- Skimmer फक्त checkout pages वर काम करत होता. तो card number, expiry date, CVV, card holder चं नाव आणि CPF (ब्राझीलचा taxpayer number) वाचत होता. Shopper ने order दिली की तो हे सगळं attacker ला पाठवत होता.
- 26 ऑक्टोबर ला e-commerce security company Sansec ने आपलं research publish केलं. Sansec म्हणतं की attacker ने दोन दिवसांत नवीन version आणलं, जे Convertr च्या payment system च्या अचूक field names शी जुळत होतं. Sansec हा हल्ला 2024 पासून सक्रिय असलेल्या ब्राझीलच्या Magecart group (card-skimming गुन्हेगार) शी जोडतं.
- 27 ऑक्टोबर ला Convertr ने skimmer काढून टाकला आणि Plausible ला fixed version वर upgrade केलं. Merchants, payment providers आणि authorities ना कळवत असल्याचं त्याने सांगितलं.
- Browsers infected file 24 तासांपर्यंत cache मध्ये ठेवू शकतात. म्हणून cleanup नंतरसुद्धा काही वेळ shoppers ना धोका होता.
2. Hack कसा झाला (फक्त public reporting – high-level)
- Convertr ने 2025 मध्ये Plausible CE 3.0 install केलं आणि ते कधीच update केलं नाही.
- Plausible च्या 3.0.0 ते 3.2.0 versions मध्ये एक critical flaw आहे, CVE-2026-8467. एका developer tool page मधून कोणीही server वर commands चालवू शकत होतं, कारण ते page login शिवाय उघडं होतं. Plausible ने हे मे 2026 मध्ये fix केलं.
- Attacker ने analytics server मध्ये घुसण्यासाठी हाच flaw वापरला, असा Sansec ला संशय आहे. Sansec ने Convertr चे logs पाहिलेले नाहीत, म्हणून हे confirm झालेलं नाही.
- Plausible tracker थेट server च्या disk वरच्या file मधून देतं. Attacker ने ती एक file बदलली आणि खऱ्या tracker code नंतर लपवलेला skimmer code जोडला.
- प्रत्येक merchant चं checkout page ती file load करत होतं. त्यामुळे skimmer सगळ्यांपर्यंत एकाच वेळी पोहोचला. एक-एक store hack करावं लागलं नाही.
- Payment page वर skimmer ने card आणि CPF details copy केले आणि order दिल्यावर ते बाहेर पाठवले. Shopper ला checkout नेहमीसारखंच दिसलं.
3. हे कसं थांबवायचं / बचाव (हा lesson: A06 components आणि A08 integrity)
का: तुमच्या payment page वरची कोणतीही script shopper जे टाइप करतो ते सगळं वाचू शकते. म्हणून छोटी, "निरुपद्रवी" वाटणारी analytics file सुद्धा payment code इतकीच महत्त्वाची आहे.
तुम्ही वापरू शकता असे controls:
- प्रत्येक component ची list ठेवा आणि त्याला patch करा. यात तुम्ही स्वतः host करता ती tools सुद्धा येतात, जसे analytics servers. माहीत असलेला critical flaw असलेलं जुनं version म्हणजे उघडं दार.
- Admin किंवा developer tools कधीही internet ला उघडे ठेवू नका. त्यांना login, VPN किंवा IP allow-list च्या मागे ठेवा, नाहीतर बंद करा.
- Payment page वरून जास्तीच्या scripts काढा. Payment ला खरंच लागतात तेवढ्याच scripts load करा. त्याहून चांगलं, तुमच्या payment provider ने host केलेले payment fields वापरा, म्हणजे card numbers तुमच्या page ला कधी स्पर्शच करत नाहीत.
- Content Security Policy (CSP) वापरा. कोणत्या sites वरून scripts load होऊ शकतात आणि page data कुठे पाठवू शकतं, हे ती browser ला सांगते. मग अनोळखी site ला data पाठवू पाहणारा skimmer block होतो.
- Subresource Integrity (SRI) वापरा, न बदलणाऱ्या script files साठी. File मध्ये एक character जरी वेगळा असला, तरी browser ती चालवायला नकार देतो.
- तुमच्या script files मधले बदल लक्षात ठेवा. Server वर file-integrity monitoring, आणि live script ला official release शी compare करणारा check, बदल त्याच दिवशी दाखवेल.
Example 1: तुमच्या स्वतःच्या checkout page वरच्या बाहेरच्या scripts ची list काढा. या steps एक-एक करून करा.
- तुमच्या स्वतःच्या computer वर terminal उघडा.
- हे चालवा:
curl -s https://YOUR-SHOP.example/checkout | grep -o '<script[^>]*src="[^"]*"' - Output:
<script defer src="https://analytics.YOUR-SHOP.example/js/script.js"सारख्या lines. Page जितक्या scripts load करतं, तितक्या lines येतात. - याचा अर्थ: प्रत्येक line म्हणजे तुमचा payment form वाचू शकणारा code. प्रत्येक script तुमच्या component list वर हवी, update केलेली हवी, आणि या page वर असण्याचं स्पष्ट कारण हवं. एखादी line ओळखीची नसेल, तर पुढच्या sale आधी ती काय आहे ते शोधा.
Example 2: न बदलणाऱ्या script file साठी SRI fingerprint बनवा.
- Script file ची तुमची स्वतःची copy download करा, उदाहरणार्थ
checkout.js. - हे चालवा:
openssl dgst -sha384 -binary checkout.js | openssl base64 -A - Output: अक्षरं, अंक,
+आणि/असलेली एक लांब line. हा त्या file चा fingerprint आहे. - तो script tag मध्ये
integrity="sha384-नंतर ती line आणि शेवटी quote असा टाका. - याचा अर्थ: file चा एक byte जरी कोणी बदलला, तरी browser ती चालवणार नाही. सतत बदलणाऱ्या scripts साठी (काही trackers सारख्या) SRI चालत नाही. त्यांच्यासाठी CSP आणि change monitoring वापरा.
4. हे पुन्हा होऊ नये म्हणून काय काळजी घ्यायची (checklist)
- [ ] Self-hosted analytics सकट प्रत्येक component त्याच्या version सह list वर आहे, आणि त्याला काही दिवसांत security updates मिळतात.
- [ ] कोणतंही admin किंवा developer tool page login शिवाय internet ला उघडं नाही.
- [ ] Payment page फक्त खरंच लागणाऱ्या scripts load करतं, किंवा payment provider चे hosted fields वापरतं.
- [ ] Content Security Policy ठरवते की scripts कुठून load होतील आणि page data कुठे पाठवू शकतं.
- [ ] Static scripts SRI वापरतात. बदलणाऱ्या scripts वर file-integrity monitoring लक्ष ठेवतं.
- [ ] Payment page वरची script बदलली, तर त्याच दिवशी कोणाला तरी alert मिळतो.
- [ ] Shopper म्हणून: तुमची bank देत असेल तर online साठी virtual किंवा single-use cards वापरा, आणि transaction alerts चालू ठेवा.
- [ ] Skimmer सापडला तर: तो काढा, hole patch करा, server पुन्हा build करा, त्याचे secrets rotate करा, आणि merchants, payment providers व shoppers ना कळवा, म्हणजे ते cards block करू शकतील.
स्रोत: Sansec Forensics Team, "Notorious Brazilian Magecart group hijacks Convertr checkouts via Plausible analytics", 26 ऑक्टोबर 2026 (27 ऑक्टोबर 2026 ला update); BleepingComputer, "Hackers hijack Convertr analytics script to steal payment card data" (Bill Toulas), 27 ऑक्टोबर 2026.
1. क्या हुआ
इस lesson में आपने A06 (पुराने, बिना patch वाले components) और A08 (code को देखे बिना उस पर भरोसा करना) सीखा. इस असली घटना में दोनों हैं. Card skimmer यानी payment page पर छिपा हुआ code. Shopper जो card details टाइप करता है, यह उन्हें copy करके अपराधी को भेज देता है. Analytics script यानी visitors गिनने वाली एक छोटी JavaScript file. बहुत सी sites इसे हर page पर load करती हैं, payment page पर भी.
- Convertr ब्राज़ील का एक e-commerce platform है. यह ब्राज़ील के दर्जनों fashion brands के online stores और checkout चलाता है. Convertr कहता है कि उसके merchants इसके ज़रिए R$2 billion से ज़्यादा की बिक्री कर चुके हैं.
- हर Convertr checkout, Convertr के अपने analytics server से एक tracker file load करता था. उस server पर Plausible Community Edition चलता था. यह Google Analytics का free, open-source विकल्प है.
- 24 अक्टूबर 2026 से attacker ने उसी एक file के आख़िर में card skimmer जोड़ दिया. इसलिए हर Convertr checkout ने skimmer load किया.
- Skimmer सिर्फ़ checkout pages पर काम करता था. यह card number, expiry date, CVV, card holder का नाम और CPF (ब्राज़ील का taxpayer number) पढ़ता था. Shopper के order देते ही यह सब attacker को भेज देता था.
- 26 अक्टूबर को e-commerce security company Sansec ने अपनी research publish की. Sansec के अनुसार attacker दो दिन के अंदर नया version ले आया, जो Convertr के payment system के ठीक-ठीक field names से मेल खाता था. Sansec इस हमले को 2024 से सक्रिय ब्राज़ील के Magecart group (card-skimming अपराधी) से जोड़ता है.
- 27 अक्टूबर को Convertr ने skimmer हटा दिया और Plausible को fixed version पर upgrade किया. उसने बताया कि वह merchants, payment providers और authorities को सूचित कर रहा है.
- Browsers infected file को 24 घंटे तक cache में रख सकते हैं. इसलिए cleanup के बाद भी कुछ समय तक shoppers को ख़तरा रहा.
2. Hack कैसे हुआ (सिर्फ़ public reporting – high-level)
- Convertr ने 2025 में Plausible CE 3.0 install किया और उसे कभी update नहीं किया.
- Plausible के 3.0.0 से 3.2.0 versions में एक critical flaw है, CVE-2026-8467. एक developer tool page से कोई भी server पर commands चला सकता था, क्योंकि वह page बिना login के खुला था. Plausible ने इसे मई 2026 में fix किया.
- Sansec को शक है कि attacker ने analytics server में घुसने के लिए यही flaw इस्तेमाल किया. Sansec ने Convertr के logs नहीं देखे, इसलिए यह confirm नहीं हुआ है.
- Plausible tracker को सीधे server की disk पर रखी file से देता है. Attacker ने वही एक file बदल दी और असली tracker code के बाद छिपा हुआ skimmer code जोड़ दिया.
- हर merchant का checkout page वह file load करता था. इसलिए skimmer सब तक एक साथ पहुँच गया. एक-एक store hack करने की ज़रूरत नहीं पड़ी.
- Payment page पर skimmer ने card और CPF details copy किए और order देते ही उन्हें बाहर भेज दिया. Shopper को checkout बिल्कुल सामान्य दिखा.
3. इसे कैसे रोकें / बचाव (यह lesson: A06 components और A08 integrity)
क्यों: आपके payment page पर कोई भी script shopper जो कुछ टाइप करता है, वह सब पढ़ सकती है. इसलिए एक छोटी, "बेकसूर" लगने वाली analytics file भी payment code जितनी ही अहम है.
आप ये controls इस्तेमाल कर सकते हैं:
- हर component की list रखें और उसे patch करें. इसमें वे tools भी आते हैं जिन्हें आप ख़ुद host करते हैं, जैसे analytics servers. जाने-माने critical flaw वाला पुराना version यानी खुला दरवाज़ा.
- Admin या developer tools को कभी internet पर खुला न छोड़ें. उन्हें login, VPN या IP allow-list के पीछे रखें, या बंद कर दें.
- Payment page से फ़ालतू scripts हटाएँ. सिर्फ़ वही scripts load करें जिनकी payment को सच में ज़रूरत है. उससे भी अच्छा, अपने payment provider के hosted payment fields इस्तेमाल करें, ताकि card numbers आपके page को छुएँ ही नहीं.
- Content Security Policy (CSP) इस्तेमाल करें. यह browser को बताती है कि किन sites से scripts load हो सकती हैं और page data कहाँ भेज सकता है. तब किसी अनजान site को data भेजने की कोशिश करने वाला skimmer block हो जाता है.
- Subresource Integrity (SRI) इस्तेमाल करें, उन script files के लिए जो नहीं बदलतीं. File में एक character भी अलग हो, तो browser उसे चलाने से मना कर देता है.
- अपनी script files में बदलाव पर नज़र रखें. Server पर file-integrity monitoring, और live script को official release से compare करने वाला check, बदलाव उसी दिन दिखा देगा.
Example 1: अपने ख़ुद के checkout page पर बाहर की scripts की list निकालें. ये steps एक-एक करके करें.
- अपने ख़ुद के computer पर terminal खोलें.
- यह चलाएँ:
curl -s https://YOUR-SHOP.example/checkout | grep -o '<script[^>]*src="[^"]*"' - Output:
<script defer src="https://analytics.YOUR-SHOP.example/js/script.js"जैसी lines. Page जितनी scripts load करता है, उतनी lines आती हैं. - इसका मतलब: हर line ऐसा code है जो आपका payment form पढ़ सकता है. हर script आपकी component list पर होनी चाहिए, update होनी चाहिए, और इस page पर होने की साफ़ वजह होनी चाहिए. कोई line पहचान में न आए, तो अगली sale से पहले पता करें कि वह क्या है.
Example 2: न बदलने वाली script file के लिए SRI fingerprint बनाएँ.
- Script file की अपनी copy download करें, जैसे
checkout.js. - यह चलाएँ:
openssl dgst -sha384 -binary checkout.js | openssl base64 -A - Output: अक्षरों, अंकों,
+और/वाली एक लंबी line. यह उस file का fingerprint है. - इसे script tag में
integrity="sha384-के बाद वह line और आख़िर में quote लगाकर डालें. - इसका मतलब: अगर कोई file का एक byte भी बदले, तो browser उसे नहीं चलाएगा. बार-बार बदलने वाली scripts (जैसे कुछ trackers) के लिए SRI काम नहीं करता. उनके लिए CSP और change monitoring इस्तेमाल करें.
4. यह दोबारा न हो, इसके लिए क्या ध्यान रखें (checklist)
- [ ] Self-hosted analytics समेत हर component अपने version के साथ list में है, और उसे कुछ ही दिनों में security updates मिलते हैं.
- [ ] कोई भी admin या developer tool page बिना login के internet पर खुला नहीं है.
- [ ] Payment page सिर्फ़ ज़रूरी scripts load करता है, या payment provider के hosted fields इस्तेमाल करता है.
- [ ] Content Security Policy तय करती है कि scripts कहाँ से load होंगी और page data कहाँ भेज सकता है.
- [ ] Static scripts SRI इस्तेमाल करती हैं. बदलने वाली scripts पर file-integrity monitoring नज़र रखता है.
- [ ] Payment page की कोई script बदले, तो उसी दिन किसी को alert मिलता है.
- [ ] Shopper के तौर पर: आपका bank दे तो online के लिए virtual या single-use cards इस्तेमाल करें, और transaction alerts चालू रखें.
- [ ] Skimmer मिले तो: उसे हटाएँ, hole patch करें, server दोबारा build करें, उसके secrets rotate करें, और merchants, payment providers और shoppers को बताएँ, ताकि वे cards block कर सकें.
स्रोत: Sansec Forensics Team, "Notorious Brazilian Magecart group hijacks Convertr checkouts via Plausible analytics", 26 अक्टूबर 2026 (27 अक्टूबर 2026 को update); BleepingComputer, "Hackers hijack Convertr analytics script to steal payment card data" (Bill Toulas), 27 अक्टूबर 2026.
Check if you're safe: Is My Website Hacked? · Website Security Checklist
Extended teaching notes
Why this lesson matters
Web flaws stay in the OWASP Top 10 because real apps still ship them. Your job is not to collect tool screenshots. It is to prevent and fix the class of bug on systems you own.
Apply the fix across stacks
Same class of bug, same idea in every language.
Java / Spring Boot
Parameterise queries, encode output, CSRF tokens, limited Actuator, dependency scanning.
ASP.NET Core
EF Core / parameterised SQL, Razor encoding, HTTPS, Data Protection.
Node.js / Express
helmet, parameterised SQL, npm audit, avoid eval and shell concat.
Python / Django / Flask / FastAPI
ORM, autoescape, pip-audit, Bandit; never shell=True with user input.
PHP / Laravel
PDO/Eloquent, Blade escaping, composer audit.
Go / Ruby
database/sql placeholders / ActiveRecord; html/template / ERB escaping; govulncheck / Brakeman.
nginx / Apache / Tomcat
Hide versions, TLS, security headers, least-open ports.
MySQL / PostgreSQL / MongoDB / Redis
Private networks, auth on, least-privilege users, no 0.0.0.0/0.
AWS / Azure / GCP
Roles not long-lived keys, private data stores, cloud audit logs on.
Real examples
Global: injection and XSS still appear in breach reports and bug bounties every year. Indian company (sample): a Bengaluru SaaS team maps each OWASP item to a CI check or a code-review question so new code cannot silently reintroduce it.
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: Polymarket – hijacked DebugBear script drained about $2.7M from traders (Oct 29; reported Nov 2026)
1. What happened
In this lesson you learnt that a page can load outside JavaScript you do not control. If that file is swapped, the attacker runs inside your users’ signed-in browser.
- On 29 October 2026, prediction-market site Polymarket loaded a real-user monitoring script from vendor DebugBear. For a window that day, that file was replaced with malicious JavaScript.
- The bad script reused the access of traders who were already signed in. It sold or moved positions and sent crypto to the attackers. Blockchain traces showed about $2.64M reach the attackers’ wallet in under an hour; Polymarket said about $2.7M across roughly 726 wallets.
- DebugBear said its DNS at the registrar was compromised and that early findings pointed at one customer’s script copy, not a break-in of DebugBear’s own product systems.
- Polymarket removed the script within the hour, paused trading, reset sessions, and began refunds. By late October it said it was returning about $3.9M total (including pause-related losses). Coverage and company updates ran into 1–2 November 2026.
2. How the hack happened (public reporting only – high-level)
- Polymarket’s signed-in pages loaded a third-party RUM script from DebugBear’s CDN hostname.
- Attackers hijacked DNS for that hostname (via the registrar, per DebugBear) so a malicious file answered instead of the real script.
- Browsers of logged-in traders ran the bad JS with the same access the open trading page already had.
- The script found the site’s order/signer path, liquidated or transferred positions, and sent funds to attacker wallets.
- Polymarket cut the script, flushed caches, reset sessions, paused the relayer, and started refunds.
3. How to stop it / defend (this lesson: third-party / critical web risk)
Why: CSP that only allow-lists a CDN hostname does not check the bytes that hostname returns. A DNS or CDN swap still runs as your page.
Controls you can use:
- Keep third-party scripts off money and signing pages unless you truly need them (Example 1).
- Pin script bytes with Subresource Integrity (SRI) so a swapped file fails to load.
- Tighten CSP and prefer self-hosted, version-pinned copies you control (Example 3).
- Watch the CDN response for sudden size/ETag changes on critical embeds (Example 2).
- Lock registrar and DNS with MFA and registry locks so a vendor’s hostname cannot be quietly pointed elsewhere.
- Train users: reject unexpected wallet signing prompts; sites should make unexpected signer calls loud.
Example 1: list third-party script tags on a page you own.
- In the site folder, run
grep -nE 'debugbear|cdn\.|script src' index.html app.html 2>/dev/null | head - Output: like
18: <script src="https://cdn.debugbear.com/xxx.js"></script>. - What it means: a trading or login page loads outside JS. Move that tag off the signed-in path or self-host a pinned copy.
Example 2: note the normal headers for a script you depend on.
- Run
curl -sI https://cdn.example.com/app.js | grep -iE 'content-type|content-length|etag' - Output: like
content-type: application/javascript\netag: "abc123". - What it means: a sudden jump in length or a new ETag is a reason to freeze deploys and compare hashes.
Example 3: confirm CSP / integrity attributes exist.
- Run
grep -nE 'Content-Security-Policy|integrity=' nginx.conf index.html 2>/dev/null | head - Output: like
12: Content-Security-Policy: script-src 'self' https://cdn.example.com. - What it means: you have a policy baseline. Add
integrity=on every critical external script, not only a host allow-list.
4. How to take care so it won't happen again (checklist)
- [ ] No optional analytics/RUM on wallet or trade pages.
- [ ] SRI (or self-hosted pinned hashes) on every critical external script.
- [ ] Registrar and DNS for script CDNs use MFA and locks.
- [ ] Alerts on sudden CDN file size / hash changes.
- [ ] Kill-switch to drop third-party tags in minutes.
- [ ] Users told to reject surprise signing prompts.
Source: The Hacker News (Swati Khandelwal), "Hackers Steal About $2.7 Million From Polymarket Traders via Hijacked DebugBear Script," 1 November 2026; Hudson Rock / Ohey research and Polymarket / DebugBear public statements, 29–30 October 2026; SecurityWeek refund coverage.
1. काय झालं
या lesson मध्ये तुम्ही शिकलात की page तुम्ही control न करणारं outside JavaScript load करू शकतो. तो file swap झाला तर attacker तुमच्या users च्या signed-in browser मध्ये चालतो.
- 29 ऑक्टोबर 2026 ला prediction-market site Polymarket ने vendor DebugBear कडून real-user monitoring script load केलं. त्या दिवशी काही वेळ तो file malicious JavaScript ने बदलला गेला.
- Bad script नी आधीच signed-in असलेल्या traders चं access reuse केलं. त्याने positions विकल्या किंवा हलवल्या आणि attackers कडे crypto पाठवली. Blockchain traces मध्ये सुमारे $2.64M एका तासाबाहेर attackers च्या wallet पर्यंत पोहोचले; Polymarket म्हणालं सुमारे 726 wallets वरून सुमारे $2.7M.
- DebugBear म्हणालं त्यांचं registrar वरचं DNS compromise झालं आणि early findings एका customer च्या script copy कडे दाखवतात, DebugBear च्या own product systems मध्ये break-in नाही.
- Polymarket ने एका तासात script काढलं, trading pause केलं, sessions reset केल्या, आणि refunds सुरू केल्या. ऑक्टोबर अखेरीस ते सुमारे $3.9M total परत करत असल्याचं म्हणाले. Coverage आणि updates 1–2 नोव्हेंबर 2026 पर्यंत चालले.
2. हॅक कसा झाला (फक्त जाहीर माहितीवरून – थोडक्यात)
- Polymarket च्या signed-in pages DebugBear च्या CDN hostname वरून third-party RUM script load करत होत्या.
- Attackers नी त्या hostname साठी DNS hijack केलं (DebugBear नुसार registrar मार्गे) म्हणजे खऱ्या script ऐवजी malicious file उत्तर देऊ लागली.
- Logged-in traders च्या browsers नी bad JS चालवलं – ज्या access सह trading page आधीच खुली होती.
- Script नी site चा order/signer path शोधला, positions liquidate किंवा transfer केल्या, आणि attacker wallets कडे पैसे पाठवले.
- Polymarket ने script कापला, caches flush केल्या, sessions reset केल्या, relayer pause केला, आणि refunds सुरू केल्या.
3. हे कसं थांबवायचं / बचाव (हा lesson: third-party / critical web risk)
का: फक्त CDN hostname allow करणारी CSP त्या hostname ने दिलेल्या bytes चेकत नाही. DNS किंवा CDN swap तरीही तुमच्या page म्हणून चालतो.
तुम्ही वापरू शकता असे controls:
- पैसे आणि signing pages वरून third-party scripts दूर ठेवा जोपर्यंत खरंच गरज नाही (उदाहरण 1).
- Subresource Integrity (SRI) ने script bytes pin करा म्हणजे swap झालेला file load fail होईल.
- CSP tight करा आणि तुम्ही control करणारे self-hosted, version-pinned copies prefer करा (उदाहरण 3).
- Critical embeds वर CDN response बघा – अचानक size/ETag बदल (उदाहरण 2).
- Registrar आणि DNS MFA व registry locks ने लॉक करा म्हणजे vendor चा hostname शांतपणे दुसरीकडे point होणार नाही.
- Users ला शिकवा: unexpected wallet signing prompts नाकारा; sites नी unexpected signer calls मोठ्याने दाखवाव्यात.
उदाहरण 1: तुमच्या page वरील third-party script tags list करा.
- Site folder मध्ये चालवा:
grep -nE 'debugbear|cdn\.|script src' index.html app.html 2>/dev/null | head - Output: जसं
18: <script src="https://cdn.debugbear.com/xxx.js"></script>. - याचा अर्थ: trading किंवा login page outside JS load करते. तो tag signed-in path वरून हलवा किंवा pinned copy self-host करा.
उदाहरण 2: तुम्ही depend करणाऱ्या script च्या normal headers नोंदवा.
- चालवा:
curl -sI https://cdn.example.com/app.js | grep -iE 'content-type|content-length|etag' - Output: जसं
content-type: application/javascript\netag: "abc123". - याचा अर्थ: length मध्ये अचानक उडी किंवा नवीन ETag म्हणजे deploys freeze करून hashes compare करण्याचं कारण.
उदाहरण 3: CSP / integrity attributes आहेत का ते confirm करा.
- चालवा:
grep -nE 'Content-Security-Policy|integrity=' nginx.conf index.html 2>/dev/null | head - Output: जसं
12: Content-Security-Policy: script-src 'self' https://cdn.example.com. - याचा अर्थ: policy baseline आहे. फक्त host allow-list नाही – प्रत्येक critical external script वर
integrity=घाला.
4. परत असं होऊ नये म्हणून काळजी (checklist)
- [ ] Wallet किंवा trade pages वर optional analytics/RUM नाही.
- [ ] प्रत्येक critical external script वर SRI (किंवा self-hosted pinned hashes).
- [ ] Script CDNs साठी registrar आणि DNS वर MFA आणि locks.
- [ ] अचानक CDN file size / hash बदलांवर alerts.
- [ ] मिनिटांत third-party tags कापण्यासाठी kill-switch.
- [ ] Users ना surprise signing prompts नाकारायला सांगितलं आहे.
स्रोत: The Hacker News (Swati Khandelwal), "Hackers Steal About $2.7 Million From Polymarket Traders via Hijacked DebugBear Script," 1 नोव्हेंबर 2026; Hudson Rock / Ohey research आणि Polymarket / DebugBear public statements, 29–30 ऑक्टोबर 2026; SecurityWeek refund coverage.
1. क्या हुआ
इस lesson में आपने सीखा कि page ऐसा outside JavaScript load कर सकता है जिसे आप control नहीं करते. वह file swap हो जाए तो attacker आपके users के signed-in browser में चलता है.
- 29 अक्टूबर 2026 को prediction-market site Polymarket ने vendor DebugBear से real-user monitoring script load किया. उस दिन कुछ समय के लिए वह file malicious JavaScript से बदल दी गई.
- Bad script ने पहले से signed-in traders का access reuse किया. उसने positions बेचीं या हटाईं और attackers को crypto भेजी. Blockchain traces में करीब $2.64M एक घंटे के अंदर attackers के wallet तक पहुँचे; Polymarket ने कहा करीब 726 wallets से करीब $2.7M.
- DebugBear ने कहा उसका registrar पर DNS compromise हुआ और early findings एक customer की script copy की ओर इशारा करते हैं, DebugBear के own product systems में break-in नहीं.
- Polymarket ने एक घंटे में script हटाया, trading pause किया, sessions reset किए, और refunds शुरू किए. अक्टूबर के अंत तक उसने करीब $3.9M total लौटाने की बात कही. Coverage और updates 1–2 नवंबर 2026 तक चले.
2. हैक कैसे हुआ (सिर्फ़ सार्वजनिक जानकारी से – संक्षेप में)
- Polymarket के signed-in pages DebugBear के CDN hostname से third-party RUM script load करते थे.
- Attackers ने उस hostname के लिए DNS hijack किया (DebugBear के अनुसार registrar के ज़रिए) ताकि असली script की जगह malicious file जवाब दे.
- Logged-in traders के browsers ने bad JS चलाया – उसी access के साथ जो trading page पहले से खुली रखती थी.
- Script ने site का order/signer path ढूँढा, positions liquidate या transfer कीं, और attacker wallets को पैसे भेजे.
- Polymarket ने script काटा, caches flush किए, sessions reset किए, relayer pause किया, और refunds शुरू किए.
3. इसे कैसे रोकें / बचाव (यह lesson: third-party / critical web risk)
क्यों: सिर्फ़ CDN hostname allow करने वाली CSP उस hostname की bytes नहीं चेकती. DNS या CDN swap फिर भी आपके page की तरह चलता है.
आप ये controls इस्तेमाल कर सकते हैं:
- पैसे और signing pages से third-party scripts दूर रखें जब तक सच में ज़रूरत न हो (उदाहरण 1).
- Subresource Integrity (SRI) से script bytes pin करें ताकि swap हुई file load fail हो.
- CSP कसें और अपने control वाले self-hosted, version-pinned copies prefer करें (उदाहरण 3).
- Critical embeds पर CDN response देखें – अचानक size/ETag बदलाव (उदाहरण 2).
- Registrar और DNS को MFA व registry locks से लॉक करें ताकि vendor का hostname चुपचाप कहीं और point न हो.
- Users को सिखाएँ: unexpected wallet signing prompts ठुकराएँ; sites को unexpected signer calls ज़ोर से दिखाने चाहिए.
उदाहरण 1: अपने page पर third-party script tags list करें.
- Site folder में चलाएँ:
grep -nE 'debugbear|cdn\.|script src' index.html app.html 2>/dev/null | head - Output: जैसे
18: <script src="https://cdn.debugbear.com/xxx.js"></script>. - इसका मतलब: trading या login page outside JS load करती है. उस tag को signed-in path से हटाएँ या pinned copy self-host करें.
उदाहरण 2: जिस script पर depend करते हैं उसकी normal headers नोट करें.
- चलाएँ:
curl -sI https://cdn.example.com/app.js | grep -iE 'content-type|content-length|etag' - Output: जैसे
content-type: application/javascript\netag: "abc123". - इसका मतलब: length में अचानक उछाल या नया ETag मतलब deploys freeze कर hashes compare करें.
उदाहरण 3: CSP / integrity attributes हैं या नहीं, confirm करें.
- चलाएँ:
grep -nE 'Content-Security-Policy|integrity=' nginx.conf index.html 2>/dev/null | head - Output: जैसे
12: Content-Security-Policy: script-src 'self' https://cdn.example.com. - इसका मतलब: policy baseline है. सिर्फ़ host allow-list नहीं – हर critical external script पर
integrity=लगाएँ.
4. दोबारा ऐसा न हो, इसके लिए सावधानी (checklist)
- [ ] Wallet या trade pages पर optional analytics/RUM नहीं.
- [ ] हर critical external script पर SRI (या self-hosted pinned hashes).
- [ ] Script CDNs के लिए registrar और DNS पर MFA और locks.
- [ ] अचानक CDN file size / hash बदलाव पर alerts.
- [ ] मिनटों में third-party tags काटने का kill-switch.
- [ ] Users को surprise signing prompts ठुकराने को कहा गया है.
स्रोत: The Hacker News (Swati Khandelwal), "Hackers Steal About $2.7 Million From Polymarket Traders via Hijacked DebugBear Script," 1 नवंबर 2026; Hudson Rock / Ohey research और Polymarket / DebugBear public statements, 29–30 अक्टूबर 2026; SecurityWeek refund coverage.
Ravindra Bagale's Tip
A CDN allow-list is not a hash check. Pin third-party scripts with SRI (or self-host them), keep analytics off signing pages, and lock the registrar that owns the script hostname.
Ravindra Bagale's Tip – मराठी
CDN allow-list म्हणजे hash check नाही. Third-party scripts SRI ने pin करा (किंवा self-host करा), signing pages वरून analytics काढा, आणि script hostname चा registrar लॉक करा.
Ravindra Bagale's Tip – हिंदी
CDN allow-list मतलब hash check नहीं. Third-party scripts को SRI से pin करें (या self-host करें), signing pages से analytics हटाएँ, और script hostname वाले registrar को लॉक करें.
Check if you're safe: Website Security Checklist
Real incident: cPGuard – a hijacked security-tool update backdoored Linux web hosting servers and copied their passwords and keys (Nov 2026)
1. What happened
In this lesson you learnt about A08, software and data integrity failures. It means a system trusts code or updates without checking that they really came from the right place. This real case shows why that matters: a security tool's own update became the attack.
- cPGuard is a security tool for Linux web hosting servers. It is made by a company called OPSSHIELD. Like most tools, it updates itself automatically, and it runs with full root power.
- On 1 November 2026, an attacker signed up as a customer on OPSSHIELD's billing website under a false identity and ordered a free trial. Within about seven hours the attacker could run commands on OPSSHIELD's billing and licensing server.
- From that server, the attacker took the key used to publish cPGuard updates. On 2 November 2026, between 02:04 and 02:09 UTC (about 7:34 to 7:39 am India time), the attacker uploaded a fake cPGuard update.
- Servers that took the update between 02:08 and 03:20 UTC ran a script as root. OPSSHIELD says about 2,950 customer servers ran it. The bad versions were cPGuard 5.88.12 to 5.88.19.
- The script copied local password hashes (
/etc/shadow), root SSH keys, the MySQL root password, root shell history and, on a few servers, cloud storage keys. It also left a hidden root shell (a backdoor) and a scheduled task. - The attacker also copied client records from the billing system: about 7,900 billing accounts (name, company, postal address, email and a bcrypt-hashed password).
- OPSSHIELD found the attack within 12 hours, revoked the stolen key and released a clean update (5.88.25 and later) that removes the known backdoor. It warned that stolen passwords and keys may still work after the update, so they must be changed.
2. How the hack happened (public reporting only – high-level)
- The attacker opened a normal customer account and a free trial, to look like a real user.
- The attacker studied how the cPGuard agent talks to the company's licensing system.
- Through the billing website, the attacker got the power to run commands on the billing and licensing server. OPSSHIELD says its logs do not show the exact request, and it has patched two possible entry points.
- That server held the key that can publish updates, so the attacker stole it.
- The attacker published a fake update. Customer servers trusted it because it came from the normal update channel, and installed it automatically as root.
- The fake update copied secrets from each server, sent them back, and left a backdoor.
3. How to stop it / defend (this lesson: integrity failures)
Why: an auto-update is code that someone else runs on your server, often as root. If the update channel is hijacked, every customer gets the attack at once. So the update must prove it is genuine, and your server must not trust it blindly.
Controls you can use:
- For software makers: sign every update with a key that is kept offline, away from web servers like billing portals. The update server alone should never be able to create a valid update.
- For server owners: check the hash or signature of a download before you install it, when the vendor publishes one (Example 1).
- Keep a list of every tool that updates itself on your servers. Each one is a door into your system, so give it the least power it needs.
- Do not let one breach unlock everything. Do not keep root SSH keys that can log in to many other servers, and do not type passwords on the command line where shell history saves them.
- Watch for warning signs, such as new setuid files or new scheduled tasks (Examples 2 and 3).
- If your server ran a bad update, treat it as hacked. Update first, then change every password and key it held (Example 4). Rebuild it if the attacker logged in by hand.
Example 1: check a download's hash before installing.
- Download the update file and the hash the vendor publishes on its official website.
- Run
sha256sum tool-5.88.25.tar.gz - Output: one long code and the file name, like
9f2c…e41a tool-5.88.25.tar.gz. - What it means: if this code is exactly the same as the vendor's published hash, the file was not changed on the way. If it is different, do not install it. A hash only helps when the vendor keeps it somewhere the attacker cannot change; a signature with an offline key is stronger.
Example 2: look for hidden setuid files in temporary folders.
- Log in to your own Linux server.
- Run
sudo find /var/tmp /tmp -type f -perm -4000 -ls - Output: normally nothing. On a hit server you may see a line like
-rwsr-xr-x 1 root root … /var/tmp/.cpg91511_sh(this is the file name OPSSHIELD published). - What it means: the
sin-rwsrmeans the file runs with its owner's power, here root. A hidden root setuid file in a temp folder is a strong sign of a backdoor.
Example 3: check scheduled tasks.
- On the same server, run
ls -la /etc/cron.d/ - Output: a list of task files, for example
-rw-r--r-- 1 root root … i93677. - What it means: every file here runs on a timer. If you see a name you do not recognise, find out who added it. OPSSHIELD listed
i93677as the task left by the fake update.
Example 4: replace an SSH key after a breach.
- On a trusted machine, run
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_2026 - Output: a few lines ending with something like
Your public key has been saved in /root/.ssh/id_ed25519_2026.pub. - What it means: you now have a new key pair. Add the new public key to the servers you manage, then remove the old public key from
authorized_keyson every server that trusted it.
4. How to take care so it won't happen again (checklist)
- [ ] I have a list of every tool on my servers that updates itself, and what power it runs with.
- [ ] I check hashes or signatures of downloads when the vendor publishes them.
- [ ] If I make software, my update signing key is offline and not on any web server.
- [ ] My billing and customer portals are patched and do not hold release keys.
- [ ] No password is typed on the command line, and root SSH keys do not open many servers.
- [ ] I get an alert for new setuid files, new scheduled tasks and new SSH keys.
- [ ] I know how to rotate every password and key on a server quickly after a breach.
Source: OPSSHIELD, "cPGuard security advisory: Update channel compromise", 3 November 2026; OPSSHIELD, "Security Incident Disclosure: manage.opsshield.com", 3 November 2026; BleepingComputer, "Hackers hijack cPGuard autoupdate to deploy backdoor, steal data" (Bill Toulas), 3 November 2026; The Hacker News, "cPGuard Update Channel Hijacked to Backdoor Linux Servers and Collect Password Hashes", 3 November 2026.
1. काय झालं
या lesson मध्ये तुम्ही A08, software and data integrity failures बद्दल शिकलात. म्हणजे system एखादा code किंवा update खरंच योग्य ठिकाणाहून आलाय का हे check न करता त्यावर विश्वास ठेवते. ही खरी घटना दाखवते की हे का important आहे: एका security tool चा स्वतःचा update च attack बनला.
- cPGuard हा Linux web hosting servers साठी security tool आहे. तो OPSSHIELD नावाची company बनवते. बाकी tools सारखा तो पण आपोआप update होतो, आणि पूर्ण root power ने चालतो.
- 1 नोव्हेंबर 2026 ला एका attacker ने खोट्या नावाने OPSSHIELD च्या billing website वर customer म्हणून sign up केलं आणि free trial घेतला. साधारण सात तासांत attacker OPSSHIELD च्या billing आणि licensing server वर commands चालवू शकत होता.
- त्या server वरून attacker ने cPGuard updates publish करायची key चोरली. 2 नोव्हेंबर 2026 ला 02:04 ते 02:09 UTC मध्ये (भारतात सकाळी साधारण 7:34 ते 7:39) attacker ने एक खोटा cPGuard update upload केला.
- 02:08 ते 03:20 UTC मध्ये ज्या servers नी update घेतला, त्यांच्यावर एक script root म्हणून चालली. OPSSHIELD सांगते की साधारण 2,950 customer servers वर ती चालली. खराब versions होते cPGuard 5.88.12 ते 5.88.19.
- त्या script ने local password hashes (
/etc/shadow), root SSH keys, MySQL root password, root shell history आणि काही servers वर cloud storage keys copy केल्या. त्याने एक लपलेला root shell (backdoor) आणि एक scheduled task पण मागे सोडला. - Attacker ने billing system मधून client records पण copy केले: साधारण 7,900 billing accounts (नाव, company, पत्ता, email आणि bcrypt-hashed password).
- OPSSHIELD ला 12 तासांच्या आत attack कळला. त्यांनी चोरलेली key बंद केली आणि clean update (5.88.25 आणि पुढचे) दिला, जो माहीत असलेला backdoor काढतो. त्यांनी सांगितलं की update नंतर सुद्धा चोरलेले passwords आणि keys चालू शकतात, म्हणून ते बदलायलाच हवेत.
2. हॅक कसा झाला (फक्त जाहीर माहितीवरून – थोडक्यात)
- Attacker ने खऱ्या user सारखं दिसावं म्हणून साधं customer account आणि free trial उघडलं.
- Attacker ने cPGuard agent company च्या licensing system शी कसा बोलतो ते समजून घेतलं.
- Billing website मधून attacker ला billing आणि licensing server वर commands चालवायची power मिळाली. OPSSHIELD सांगते की त्यांच्या logs मध्ये exact request दिसत नाही, आणि त्यांनी दोन possible entry points patch केले आहेत.
- त्या server वर updates publish करायची key होती, म्हणून attacker ने ती चोरली.
- Attacker ने खोटा update publish केला. तो नेहमीच्या update channel मधून आला म्हणून customer servers नी त्यावर विश्वास ठेवला आणि आपोआप root म्हणून install केला.
- खोट्या update ने प्रत्येक server वरचे secrets copy करून परत पाठवले, आणि एक backdoor मागे सोडला.
3. हे कसं थांबवायचं / बचाव (हा lesson: integrity failures)
का: auto-update म्हणजे दुसऱ्या कोणाचा code जो तुमच्या server वर चालतो, बहुतेक वेळा root म्हणून. Update channel hijack झाला तर सगळ्या customers ना एकाच वेळी attack मिळतो. म्हणून update ने तो खरा आहे हे prove करायला हवं, आणि तुमच्या server ने त्यावर डोळे झाकून विश्वास ठेवू नये.
तुम्ही वापरू शकता असे controls:
- Software बनवणाऱ्यांसाठी: प्रत्येक update offline ठेवलेल्या key ने sign करा, billing portal सारख्या web servers पासून लांब. फक्त update server ला valid update बनवता यायला नको.
- Server owners साठी: download install करण्याआधी त्याचा hash किंवा signature check करा, vendor ने दिला असेल तर (उदाहरण 1).
- तुमच्या servers वर आपोआप update होणाऱ्या प्रत्येक tool ची list ठेवा. प्रत्येक tool म्हणजे तुमच्या system चं एक दार आहे, म्हणून त्याला गरजेपुरतीच power द्या.
- एका breach ने सगळं उघडू देऊ नका. बऱ्याच servers वर login करणाऱ्या root SSH keys ठेवू नका, आणि command line वर passwords type करू नका, कारण shell history ते save करते.
- Warning signs वर लक्ष ठेवा, जसं नवीन setuid files किंवा नवीन scheduled tasks (उदाहरण 2 आणि 3).
- तुमच्या server वर खराब update चालला असेल तर तो hack झाला असं समजा. आधी update करा, मग त्यावरचा प्रत्येक password आणि key बदला (उदाहरण 4). Attacker ने हाताने login केलं असेल तर server पुन्हा नवीन बनवा.
उदाहरण 1: install करण्याआधी download चा hash check करा.
- Update file आणि vendor ने official website वर दिलेला hash download करा.
- हे चालवा:
sha256sum tool-5.88.25.tar.gz - Output: एक मोठा code आणि file चं नाव, जसं
9f2c…e41a tool-5.88.25.tar.gz. - याचा अर्थ: हा code vendor च्या hash शी अगदी same असेल तर file मध्ये वाटेत काही बदल झालेला नाही. वेगळा असेल तर install करू नका. Hash तेव्हाच मदत करतो जेव्हा vendor तो अशा ठिकाणी ठेवतो जिथे attacker बदलू शकत नाही; offline key ने केलेली signature जास्त मजबूत असते.
उदाहरण 2: temporary folders मध्ये लपलेल्या setuid files शोधा.
- तुमच्या स्वतःच्या Linux server वर login करा.
- हे चालवा:
sudo find /var/tmp /tmp -type f -perm -4000 -ls - Output: नेहमी काहीच नाही. Hit झालेल्या server वर
-rwsr-xr-x 1 root root … /var/tmp/.cpg91511_shअशी line दिसू शकते (हे OPSSHIELD ने जाहीर केलेलं file चं नाव आहे). - याचा अर्थ:
-rwsrमधलाsम्हणजे file तिच्या owner च्या power ने चालते, इथे root. Temp folder मधली लपलेली root setuid file म्हणजे backdoor ची मोठी खूण आहे.
उदाहरण 3: scheduled tasks check करा.
- त्याच server वर हे चालवा:
ls -la /etc/cron.d/ - Output: task files ची list, उदाहरणार्थ
-rw-r--r-- 1 root root … i93677. - याचा अर्थ: इथली प्रत्येक file timer वर चालते. ओळखीचं नसलेलं नाव दिसलं तर ते कोणी टाकलं ते शोधा. OPSSHIELD ने
i93677हा खोट्या update ने सोडलेला task म्हणून सांगितला आहे.
उदाहरण 4: breach नंतर SSH key बदला.
- Trusted machine वर हे चालवा:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_2026 - Output: काही lines, शेवटी
Your public key has been saved in /root/.ssh/id_ed25519_2026.pubसारखं. - याचा अर्थ: आता तुमच्याकडे नवीन key pair आहे. नवीन public key तुमच्या servers वर टाका, मग जुनी public key ज्या ज्या server ने trust केली होती तिथल्या
authorized_keysमधून काढून टाका.
4. परत असं होऊ नये म्हणून काळजी (checklist)
- [ ] माझ्या servers वर आपोआप update होणाऱ्या प्रत्येक tool ची list आणि ते कोणत्या power ने चालतात हे माझ्याकडे आहे.
- [ ] Vendor ने दिले असतील तेव्हा मी downloads चे hash किंवा signature check करतो.
- [ ] मी software बनवत असेन तर माझी update signing key offline आहे, कोणत्याही web server वर नाही.
- [ ] माझे billing आणि customer portals patched आहेत आणि त्यांच्यावर release keys नाहीत.
- [ ] Command line वर कोणताही password type होत नाही, आणि root SSH keys ने बरेच servers उघडत नाहीत.
- [ ] नवीन setuid files, नवीन scheduled tasks आणि नवीन SSH keys साठी मला alert येतो.
- [ ] Breach नंतर server वरचा प्रत्येक password आणि key पटकन कसा बदलायचा ते मला माहीत आहे.
स्रोत: OPSSHIELD, "cPGuard security advisory: Update channel compromise", 3 नोव्हेंबर 2026; OPSSHIELD, "Security Incident Disclosure: manage.opsshield.com", 3 नोव्हेंबर 2026; BleepingComputer, "Hackers hijack cPGuard autoupdate to deploy backdoor, steal data" (Bill Toulas), 3 नोव्हेंबर 2026; The Hacker News, "cPGuard Update Channel Hijacked to Backdoor Linux Servers and Collect Password Hashes", 3 नोव्हेंबर 2026.
1. क्या हुआ
इस lesson में आपने A08, software and data integrity failures के बारे में सीखा. यानी system किसी code या update पर यह check किए बिना भरोसा कर लेता है कि वह सच में सही जगह से आया है. यह असली घटना दिखाती है कि यह क्यों ज़रूरी है: एक security tool का अपना update ही attack बन गया.
- cPGuard Linux web hosting servers के लिए एक security tool है. इसे OPSSHIELD नाम की company बनाती है. ज़्यादातर tools की तरह यह भी अपने आप update होता है, और पूरी root power से चलता है.
- 1 नवंबर 2026 को एक attacker ने झूठे नाम से OPSSHIELD की billing website पर customer बनकर sign up किया और free trial लिया. करीब सात घंटे में attacker OPSSHIELD के billing और licensing server पर commands चला सकता था.
- उस server से attacker ने cPGuard updates publish करने वाली key चुरा ली. 2 नवंबर 2026 को 02:04 से 02:09 UTC के बीच (भारत में सुबह करीब 7:34 से 7:39) attacker ने एक नकली cPGuard update upload किया.
- 02:08 से 03:20 UTC के बीच जिन servers ने update लिया, उन पर एक script root बनकर चली. OPSSHIELD के अनुसार करीब 2,950 customer servers पर यह चली. खराब versions थे cPGuard 5.88.12 से 5.88.19.
- इस script ने local password hashes (
/etc/shadow), root SSH keys, MySQL root password, root shell history और कुछ servers पर cloud storage keys copy कीं. इसने एक छिपा हुआ root shell (backdoor) और एक scheduled task भी पीछे छोड़ा. - Attacker ने billing system से client records भी copy किए: करीब 7,900 billing accounts (नाम, company, पता, email और bcrypt-hashed password).
- OPSSHIELD को 12 घंटे के अंदर attack का पता चला. उसने चोरी हुई key बंद की और साफ़ update (5.88.25 और आगे) दिया, जो जाना-पहचाना backdoor हटाता है. उसने चेतावनी दी कि update के बाद भी चोरी हुए passwords और keys काम कर सकते हैं, इसलिए उन्हें बदलना ज़रूरी है.
2. हैक कैसे हुआ (सिर्फ़ सार्वजनिक जानकारी से – संक्षेप में)
- Attacker ने असली user जैसा दिखने के लिए एक आम customer account और free trial खोला.
- Attacker ने समझा कि cPGuard agent company के licensing system से कैसे बात करता है.
- Billing website के ज़रिए attacker को billing और licensing server पर commands चलाने की power मिल गई. OPSSHIELD कहती है कि उसके logs में exact request नहीं दिखता, और उसने दो possible entry points patch किए हैं.
- उस server पर updates publish करने वाली key थी, इसलिए attacker ने उसे चुरा लिया.
- Attacker ने नकली update publish किया. यह सामान्य update channel से आया था, इसलिए customer servers ने इस पर भरोसा किया और अपने आप root बनकर install कर लिया.
- नकली update ने हर server के secrets copy करके वापस भेजे, और एक backdoor छोड़ दिया.
3. इसे कैसे रोकें / बचाव (यह lesson: integrity failures)
क्यों: auto-update यानी किसी और का code जो आपके server पर चलता है, अक्सर root बनकर. अगर update channel hijack हो जाए, तो सभी customers को एक साथ attack मिलता है. इसलिए update को साबित करना चाहिए कि वह असली है, और आपके server को उस पर आँख बंद करके भरोसा नहीं करना चाहिए.
आप ये controls इस्तेमाल कर सकते हैं:
- Software बनाने वालों के लिए: हर update को offline रखी key से sign करें, billing portal जैसे web servers से दूर. सिर्फ़ update server अकेले valid update न बना पाए.
- Server owners के लिए: install करने से पहले download का hash या signature check करें, अगर vendor देता है (उदाहरण 1).
- अपने servers पर अपने आप update होने वाले हर tool की list रखें. हर tool आपके system का एक दरवाज़ा है, इसलिए उसे सिर्फ़ ज़रूरत भर की power दें.
- एक breach से सब कुछ न खुलने दें. ऐसी root SSH keys न रखें जो कई servers खोलती हों, और command line पर passwords type न करें, क्योंकि shell history उन्हें save कर लेती है.
- Warning signs पर नज़र रखें, जैसे नई setuid files या नए scheduled tasks (उदाहरण 2 और 3).
- अगर आपके server पर खराब update चला, तो उसे hacked मानें. पहले update करें, फिर उस पर रखा हर password और key बदलें (उदाहरण 4). अगर attacker ने हाथ से login किया था, तो server नए सिरे से बनाएँ.
उदाहरण 1: install करने से पहले download का hash check करें.
- Update file और vendor की official website पर दिया गया hash download करें.
- यह चलाएँ:
sha256sum tool-5.88.25.tar.gz - Output: एक लंबा code और file का नाम, जैसे
9f2c…e41a tool-5.88.25.tar.gz. - इसका मतलब: अगर यह code vendor के hash से बिल्कुल same है, तो file रास्ते में नहीं बदली. अलग है तो install न करें. Hash तभी मदद करता है जब vendor उसे ऐसी जगह रखे जहाँ attacker बदल न सके; offline key वाली signature ज़्यादा मज़बूत होती है.
उदाहरण 2: temporary folders में छिपी setuid files खोजें.
- अपने Linux server पर login करें.
- यह चलाएँ:
sudo find /var/tmp /tmp -type f -perm -4000 -ls - Output: आम तौर पर कुछ नहीं. Hit हुए server पर
-rwsr-xr-x 1 root root … /var/tmp/.cpg91511_shजैसी line दिख सकती है (यह OPSSHIELD का बताया हुआ file name है). - इसका मतलब:
-rwsrमेंsयानी file अपने owner की power से चलती है, यहाँ root. Temp folder में छिपी root setuid file backdoor का बड़ा संकेत है.
उदाहरण 3: scheduled tasks check करें.
- उसी server पर यह चलाएँ:
ls -la /etc/cron.d/ - Output: task files की list, जैसे
-rw-r--r-- 1 root root … i93677. - इसका मतलब: यहाँ की हर file timer पर चलती है. कोई अनजान नाम दिखे तो पता करें किसने डाला. OPSSHIELD ने
i93677को नकली update का छोड़ा हुआ task बताया है.
उदाहरण 4: breach के बाद SSH key बदलें.
- किसी trusted machine पर यह चलाएँ:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_2026 - Output: कुछ lines, आख़िर में
Your public key has been saved in /root/.ssh/id_ed25519_2026.pubजैसा. - इसका मतलब: अब आपके पास नया key pair है. नई public key अपने servers पर डालें, फिर पुरानी public key को हर उस server की
authorized_keysसे हटाएँ जो उस पर भरोसा करता था.
4. दोबारा ऐसा न हो, इसके लिए सावधानी (checklist)
- [ ] मेरे servers पर अपने आप update होने वाले हर tool की list और उनकी power मेरे पास है.
- [ ] Vendor देता है तो मैं downloads का hash या signature check करता हूँ.
- [ ] अगर मैं software बनाता हूँ, तो मेरी update signing key offline है, किसी web server पर नहीं.
- [ ] मेरे billing और customer portals patched हैं और उन पर release keys नहीं हैं.
- [ ] Command line पर कोई password type नहीं होता, और root SSH keys कई servers नहीं खोलतीं.
- [ ] नई setuid files, नए scheduled tasks और नई SSH keys पर मुझे alert मिलता है.
- [ ] Breach के बाद server का हर password और key जल्दी कैसे बदलना है, यह मुझे पता है.
स्रोत: OPSSHIELD, "cPGuard security advisory: Update channel compromise", 3 नवंबर 2026; OPSSHIELD, "Security Incident Disclosure: manage.opsshield.com", 3 नवंबर 2026; BleepingComputer, "Hackers hijack cPGuard autoupdate to deploy backdoor, steal data" (Bill Toulas), 3 नवंबर 2026; The Hacker News, "cPGuard Update Channel Hijacked to Backdoor Linux Servers and Collect Password Hashes", 3 नवंबर 2026.
Ravindra Bagale's Tip
Every tool that updates itself is a stranger you allow into your server at night. Make a list of them today, and ask one question for each: if this vendor gets hacked, what can it reach? When a vendor says 'we were breached', do not stop at the update. Change the passwords and keys too, because the stolen copies still work.
Ravindra Bagale's Tip – मराठी
आपोआप update होणारा प्रत्येक tool म्हणजे रात्री server मध्ये येऊ दिलेला एक अनोळखी माणूस. आजच त्यांची list बनवा, आणि प्रत्येकासाठी एकच प्रश्न विचारा: हा vendor hack झाला तर हा tool कुठपर्यंत पोहोचू शकतो? Vendor ने 'आमचा breach झाला' असं सांगितलं तर फक्त update करून थांबू नका. Passwords आणि keys पण बदला, कारण चोरलेल्या copies अजून चालतात.
Ravindra Bagale's Tip – हिंदी
अपने आप update होने वाला हर tool ऐसा अजनबी है जिसे आप रात में server में आने देते हैं. आज ही उनकी list बनाएँ, और हर एक के लिए एक सवाल पूछें: अगर यह vendor hack हुआ, तो यह tool कहाँ तक पहुँच सकता है? Vendor कहे 'हमारा breach हुआ', तो सिर्फ़ update करके न रुकें. Passwords और keys भी बदलें, क्योंकि चोरी हुई copies अभी भी काम करती हैं.
Check if you're safe: Is My Website Hacked? · Website Security Checklist