29. OWASP Top 10 Web Vulnerabilities
29.5 A01 Broken Access Control and IDOR
In short: Broken access control is the #1 risk: a user can do or see things they should not.
Quick answer: the short, self-contained version of this lesson is the guide Secure REST APIs with OWASP API Security Top 10.
Broken access control is the #1 risk: a user can do or see things they should not. IDOR (Insecure Direct Object Reference) is the classic case – changing an ID in a URL to read someone else's data.
You see: https://app.com/invoice?id=1001 (your invoice)
You try: https://app.com/invoice?id=1002 (someone else's – and it shows!)
The server showed the record without checking that it belongs to you. This is horizontal escalation (Chapter 26) at the application level.
The fix – always check ownership and role on the server:
// after loading the record, confirm it belongs to the logged-in user
$stmt = $pdo->prepare("SELECT * FROM invoices WHERE id = ? AND user_id = ?");
$stmt->execute([$_GET['id'], $_SESSION['user_id']]);
if (!$row = $stmt->fetch()) { http_response_code(403); exit('Forbidden'); }
Never rely on hiding a button or a menu – enforce every permission on the server, for every request.
Ravindra Bagale's Tip
"The admin page link isn't visible to normal users, so it's safe" is the biggest misconception. An attacker doesn't need the link – they type the URL directly! Check role and ownership on the server for every request. In the Reels app, confirm on the server that one user cannot delete another user's post.
Ravindra Bagale's Tip – मराठी
"Admin page चा link normal user ला दिसत नाही, म्हणून सुरक्षित आहे" हा सर्वात मोठा गैरसमज. Attacker ला link नको, तो थेट URL type करतो! प्रत्येक request ला server वर role आणि ownership चेक करा. Reels app मध्ये एक user दुसऱ्याची post delete करू शकणार नाही, हे server वर confirm करा.
Ravindra Bagale's Tip – हिंदी
"Admin page का link normal user को नहीं दिखता, इसलिए सुरक्षित है" यह सबसे बड़ी गलतफ़हमी है. Attacker को link नहीं चाहिए, वह सीधे URL type करता है! हर request पर server पर role और ownership चेक करो. Reels app में एक user दूसरे की post delete नहीं कर सकता, यह server पर confirm करो.
Lab
In Juice Shop, log in and try to view another user's basket by changing the id in the request (Burp). In your reels app, add an ownership check to every action (view, edit, delete) and confirm one user cannot touch another's posts.
Real incident: Denmark CPR register – a company's legitimate access abused to pull 8.8 million records (Oct 2026)
1. What happened
On Monday 5 October 2026, Denmark's Ministry of Research, Education and Digitalisation announced a serious security incident in the CPR (Det Centrale Personregister), the national civil register that holds about 11 million people (living, moved abroad and deceased). Unauthorised people misused a Danish private company's legal access to search the CPR system and got names, addresses and CPR numbers for about 8.8 million registered people. The activity happened during September; the CPR administration noticed irregular behaviour on the evening of Friday 2 October and found the scale over the weekend. People registered with name and address protection were not affected. The company's access has been stopped, the case was reported to the Danish Data Protection Agency (Datatilsynet) on 4 October, and police are investigating. Datatilsynet said the report describes a very large number of automated lookups made to identify valid CPR numbers. The authorities have not named the company or said how its access was taken over. Educational framing only.
2. How the hack happened (public reporting only – high-level)
- A private company had a legal, approved connection to search the CPR register (in Denmark, approved companies may look up certain details about people they already know).
- Unauthorised people got the ability to use that company's access (how this happened is not public yet).
- Because the requests came through a trusted account, the system treated them as normal company lookups.
- They sent a very large number of automated lookups, guessing CPR numbers to find which ones are valid – the same idea as changing
id=1001toid=1002, but done millions of times by a script. - For every valid number the register returned the name and address, so over about ten days in September they built a copy covering most of the country.
- The CPR administration only noticed the unusual pattern on 2 October, after the lookups were done.
3. How to stop it / defend (this lesson: broken access control)
- Check purpose, not just login: the server should only answer lookups for people that client really has a reason to see (the "belongs to you" check from the code above, applied to partners too).
- Rate limits and quotas per client: a company that normally does a few hundred lookups a day should be blocked automatically if it suddenly does thousands per hour.
- Block guessing of IDs: many "not found" answers in a row from one client is a sign of someone guessing numbers – slow it down, alert, and stop it.
- Strong login for machine and partner access: short-lived keys or certificates, MFA for the people who manage them, and the ability to switch one partner off quickly.
- Monitor in real time: send the lookup logs to the SOC (Chapter 31) and alert on volume spikes, odd hours and new source IPs – not weeks later.
4. How to take care so it won't happen again (checklist)
- [ ] Keep a list of every outside company or system with API access to your data, with the reason and the daily volume it really needs.
- [ ] Give each partner a hard daily limit and an alert at a lower warning level.
- [ ] Review and re-approve partner access at least once a year; remove what is no longer used.
- [ ] Practise the "switch off one partner" step so you can do it in minutes.
- [ ] Warn people after a leak: scam calls and emails will now "know" their name, address and ID number – that does not make them genuine, and nobody should share passwords or OTPs.
- [ ] India students: the same risk exists for any portal that allows Aadhaar, PAN or mobile-number lookups – ask "what if a trusted partner's key is stolen?", and report incidents to CERT-In within the required time (see Ch.34).
Source: Danish Ministry of Research, Education and Digitalisation, "Omfattende uautoriseret adgang til borgeres CPR-oplysninger", 5 October 2026; Datatilsynet, "Datatilsynet er opmærksom på sag om opslag i CPR", 5 October 2026; DR Nyheder, "Professor: 'Det største brud nogensinde mod det danske CPR-register'", October 2026; BleepingComputer, Bill Toulas, "Denmark population registry data breach affects 8.8 million people", 5 October 2026.
Check if you're safe: Password Strength Checker · Website Security Checklist
Real incident: Ukraine and Russia emergency alert apps – hacked apps sent fake nuclear and chemical warnings (Nov 2026)
1. What happened
In this lesson you learnt broken access control: if the wrong person can reach an admin action, they can make the system do something trusted. Here the trusted action was a public emergency alert.
- Late on Sunday 1 November 2026 into Monday 2 November, both Ukraine’s Air Alert app and Russia’s Emergencies Ministry app were hit by cyberattacks hours apart.
- Ukrainian users got false warnings of radiation, chemical threat, nuclear danger and street fighting in Kyiv and other areas. The Ukrainian Air Force quickly said there was no radiation threat and that the app had been interfered with.
- About 2:45 a.m. Moscow time, Russia’s ministry said fake alerts went to users in 33 of 89 regions, including talk of nuclear warheads; it said attackers used a vulnerability in the app’s administrative panel.
- Ukraine temporarily suspended the app’s push notifications; Russia isolated and then restored its app. Both sides said sirens, SMS, TV and radio still worked.
- A group name Hitcore was mentioned around the Ukraine breach in some channels; that claim was not independently verified in the AP/PBS reporting.
2. How the hack happened (public reporting only – high-level)
- Each country runs a mobile app that can send emergency push alerts to citizens.
- Those apps have an admin / push path that can publish messages to many phones.
- Attackers got enough access to that path (Russia publicly blamed an admin-panel flaw) to send fake alerts.
- False nuclear and chemical messages went out; officials told people to ignore the app and trust other channels.
- The apps were paused or isolated, then restored with extra protection work.
3. How to stop it / defend (this lesson: broken access control)
Why: an alert button is a high-privilege action. If anyone outside a tiny, checked group can press it, a whole country hears a lie.
Controls you can use:
- Lock the admin panel off the public internet. VPN or allow-listed IPs only (Examples 1–2).
- Two people to send a mass alert. One drafts; another approves on a second device.
- Strong unique admin logins + MFA, and short session times for the push console.
- Watch the push API. Alert when a mass send happens at an odd hour or from a new IP (Example 3).
- Have a public “ignore the app” channel ready: sirens, SMS, verified social accounts, TV/radio.
- Rate-limit and sign alert payloads so a stolen session cannot spray unlimited messages.
Example 1: see if an admin TLS port is listening on all interfaces (your lab only).
- On the app server you own, run
sudo ss -tlnp | grep -E ':443|:8443' - Output: like
LISTEN 0 128 0.0.0.0:8443 ... users:(("admin-panel",pid=441,fd=4)). - What it means:
0.0.0.0:8443is reachable on every network path. Bind it to the VPN address instead.
Example 2: check the firewall rule that allows that panel.
- Run
sudo ufw status | head - Output: like
8443/tcp ALLOW Anywhere. - What it means: the whole internet may reach 8443. Change the rule to your VPN subnet only.
Example 3: spot recent push/admin calls in your own nginx log.
- Run
grep -E 'admin|/api/push|/notify' /var/log/nginx/access.log | tail -n 5 - Output: like
203.0.113.9 - - [01/Nov/2026:22:47:01] "POST /api/push HTTP/1.1" 200. - What it means: a mass push at an odd time is a signal to pause sending and call the second approver.
4. How to take care so it won't happen again (checklist)
- [ ] Alert admin panels are not on the open internet.
- [ ] Mass alerts need two people and MFA.
- [ ] Odd-hour or new-IP mass sends wake a human.
- [ ] Citizens have a second official channel when the app is wrong.
- [ ] Compromised admin sessions can be killed fast.
- [ ] Push APIs are rate-limited and reviewed after every drill.
Source: Associated Press / PBS NewsHour, Ukraine and Russia emergency app cyberattacks with fake alerts, 2 November 2026; CBS News and Straits Times same-day reporting; Russia Emergencies Ministry statements quoted in those outlets.
1. काय झालं
या lesson मध्ये तुम्ही शिकलात broken access control: चुकीच्या माणसाला admin action मिळालं तर तो system ला trusted गोष्ट करायला लावू शकतो. इथे trusted action म्हणजे public emergency alert.
- रविवार 1 नोव्हेंबर 2026 च्या रात्री ते सोमवार 2 नोव्हेंबर पर्यंत, Ukraine चं Air Alert app आणि Russia चं Emergencies Ministry app दोन्ही, काही तासांच्या फरकाने, cyberattacks ला बळी पडले.
- Ukrainian users ना radiation, chemical threat, nuclear danger आणि street fighting बद्दल खोट्या warnings मिळाल्या. Ukrainian Air Force ने लगेच सांगितलं की radiation threat नाही आणि app मध्ये हस्तक्षेप झाला.
- सुमारे Moscow time 2:45 a.m. ला Russia च्या ministry ने सांगितलं की 89 पैकी 33 regions मधल्या users ना fake alerts गेले, ज्यात nuclear warheads ची भाषा होती; त्यांनी सांगितलं की attackers नी app च्या administrative panel मधली कमजोरी वापरली.
- Ukraine ने app चे push notifications तात्पुरते थांबवले; Russia ने app isolate करून नंतर restore केलं. दोन्ही बाजूंनी सांगितलं की sirens, SMS, TV आणि radio काम करत होते.
- काही channels मध्ये Ukraine breach साठी Hitcore group नाव आलं; AP/PBS reporting मध्ये ती claim स्वतंत्रपणे verify झाली नाही.
2. हॅक कसा झाला (फक्त जाहीर माहितीवरून – थोडक्यात)
- प्रत्येक देश नागरिकांना emergency push alerts पाठवणारं mobile app चालवतो.
- त्या apps ना admin / push path असतो जो अनेक phones वर messages प्रकाशित करू शकतो.
- Attackers ना त्या path वर पुरेसं access मिळालं (Russia ने जाहीरपणे admin-panel flaw ला दोष दिला) आणि त्यांनी fake alerts पाठवले.
- खोटी nuclear आणि chemical messages गेली; अधिकाऱ्यांनी लोकांना app दुर्लक्ष करून इतर channels वर विश्वास ठेवायला सांगितलं.
- Apps pause किंवा isolate करून, नंतर अतिरिक्त protection सोबत restore केल्या.
3. हे कसं थांबवायचं / बचाव (हा lesson: broken access control)
का: alert button ही high-privilege action आहे. छोट्या, checked group च्या बाहेर कोणीही तो दाबू शकला तर पूर्ण देशाला खोटं ऐकू येतं.
तुम्ही वापरू शकता असे controls:
- Admin panel public internet वरून लॉक करा. फक्त VPN किंवा allow-listed IPs (उदाहरण 1–2).
- Mass alert साठी दोन माणसं. एक draft करतो; दुसरा दुसऱ्या device वर approve करतो.
- Strong unique admin logins + MFA, आणि push console साठी short session times.
- Push API वर लक्ष ठेवा. Odd hour ला किंवा नवीन IP वरून mass send झाला की alert (उदाहरण 3).
- "App दुर्लक्ष करा" असा public channel तयार ठेवा: sirens, SMS, verified social accounts, TV/radio.
- Alert payloads rate-limit आणि sign करा म्हणजे चोरलेलं session unlimited messages सोडू शकणार नाही.
उदाहरण 1: admin TLS port सर्व interfaces वर ऐकतोय का ते बघा (फक्त तुमची lab).
- तुमच्या app server वर चालवा:
sudo ss -tlnp | grep -E ':443|:8443' - Output: जसं
LISTEN 0 128 0.0.0.0:8443 ... users:(("admin-panel",pid=441,fd=4)). - याचा अर्थ:
0.0.0.0:8443प्रत्येक network path वरून पोहोचता येतं. त्याला VPN address वर bind करा.
उदाहरण 2: तो panel allow करणारा firewall rule चेक करा.
- चालवा:
sudo ufw status | head - Output: जसं
8443/tcp ALLOW Anywhere. - याचा अर्थ: पूर्ण internet 8443 पर्यंत पोहोचू शकतो. Rule फक्त तुमच्या VPN subnet साठी बदला.
उदाहरण 3: तुमच्या nginx log मध्ये अलीकडचे push/admin calls शोधा.
- चालवा:
grep -E 'admin|/api/push|/notify' /var/log/nginx/access.log | tail -n 5 - Output: जसं
203.0.113.9 - - [01/Nov/2026:22:47:01] "POST /api/push HTTP/1.1" 200. - याचा अर्थ: odd time ला mass push दिसलं तर sending थांबवा आणि दुसऱ्या approver ला dial करा.
4. परत असं होऊ नये म्हणून काळजी (checklist)
- [ ] Alert admin panels open internet वर नाहीत.
- [ ] Mass alerts ना दोन माणसं आणि MFA लागतात.
- [ ] Odd-hour किंवा new-IP mass sends खऱ्या माणसाला उठवतात.
- [ ] App चुकीचं असताना नागरिकांकडे दुसरा official channel आहे.
- [ ] Compromised admin sessions पटकन मारता येतात.
- [ ] Push APIs rate-limited आहेत आणि प्रत्येक drill नंतर review होतात.
स्रोत: Associated Press / PBS NewsHour, Ukraine and Russia emergency app cyberattacks with fake alerts, 2 नोव्हेंबर 2026; CBS News आणि Straits Times same-day reporting; Russia Emergencies Ministry statements quoted in those outlets.
1. क्या हुआ
इस lesson में आपने सीखा broken access control: गलत व्यक्ति को admin action मिल जाए तो वह system से trusted काम करवा सकता है. यहाँ trusted action था public emergency alert.
- रविवार 1 नवंबर 2026 की रात से सोमवार 2 नवंबर तक, Ukraine का Air Alert app और Russia का Emergencies Ministry app दोनों, कुछ घंटों के फ़र्क से, cyberattacks की चपेट में आए.
- Ukrainian users को radiation, chemical threat, nuclear danger और street fighting की झूठी warnings मिलीं. Ukrainian Air Force ने तुरंत कहा कि radiation threat नहीं है और app में दखल हुआ है.
- करीब Moscow time 2:45 a.m. पर Russia के ministry ने कहा कि 89 में से 33 regions के users को fake alerts गए, जिनमें nuclear warheads की भाषा थी; उसने कहा attackers ने app के administrative panel की कमज़ोरी इस्तेमाल की.
- Ukraine ने app के push notifications अस्थायी रूप से रोके; Russia ने app isolate कर फिर restore किया. दोनों पक्षों ने कहा कि sirens, SMS, TV और radio चल रहे थे.
- कुछ channels में Ukraine breach के लिए Hitcore group का नाम आया; AP/PBS reporting में वह claim स्वतंत्र रूप से verify नहीं हुई.
2. हैक कैसे हुआ (सिर्फ़ सार्वजनिक जानकारी से – संक्षेप में)
- हर देश नागरिकों को emergency push alerts भेजने वाला mobile app चलाता है.
- उन apps के पास admin / push path होता है जो कई phones पर messages प्रकाशित कर सकता है.
- Attackers को उस path पर काफ़ी access मिला (Russia ने सार्वजनिक रूप से admin-panel flaw का दोष दिया) और उन्होंने fake alerts भेजे.
- झूठे nuclear और chemical messages गए; अधिकारियों ने लोगों से app नज़रअंदाज़ कर अन्य channels पर भरोसा रखने को कहा.
- Apps pause या isolate कर, फिर अतिरिक्त protection के साथ restore किए गए.
3. इसे कैसे रोकें / बचाव (यह lesson: broken access control)
क्यों: alert button एक high-privilege action है. छोटे, checked group के बाहर कोई भी उसे दबा सके तो पूरे देश को झूठ सुनाई देता है.
आप ये controls इस्तेमाल कर सकते हैं:
- Admin panel को public internet से लॉक करें. सिर्फ़ VPN या allow-listed IPs (उदाहरण 1–2).
- Mass alert के लिए दो लोग. एक draft करता है; दूसरा दूसरी device पर approve करता है.
- Strong unique admin logins + MFA, और push console के लिए short session times.
- Push API पर नज़र रखें. Odd hour या नए IP से mass send हो तो alert (उदाहरण 3).
- "App नज़रअंदाज़ करें" वाला public channel तैयार रखें: sirens, SMS, verified social accounts, TV/radio.
- Alert payloads को rate-limit और sign करें ताकि चोरी हुआ session unlimited messages न छोड़ सके.
उदाहरण 1: देखें admin TLS port सभी interfaces पर सुन रहा है या नहीं (सिर्फ़ अपनी lab).
- अपने app server पर चलाएँ:
sudo ss -tlnp | grep -E ':443|:8443' - Output: जैसे
LISTEN 0 128 0.0.0.0:8443 ... users:(("admin-panel",pid=441,fd=4)). - इसका मतलब:
0.0.0.0:8443हर network path से पहुँच योग्य है. इसे VPN address पर bind करें.
उदाहरण 2: वह panel allow करने वाला firewall rule चेक करें.
- चलाएँ:
sudo ufw status | head - Output: जैसे
8443/tcp ALLOW Anywhere. - इसका मतलब: पूरा internet 8443 तक पहुँच सकता है. Rule सिर्फ़ अपने VPN subnet के लिए बदलें.
उदाहरण 3: अपने nginx log में हाल के push/admin calls ढूँढें.
- चलाएँ:
grep -E 'admin|/api/push|/notify' /var/log/nginx/access.log | tail -n 5 - Output: जैसे
203.0.113.9 - - [01/Nov/2026:22:47:01] "POST /api/push HTTP/1.1" 200. - इसका मतलब: odd time पर mass push दिखे तो sending रोकें और दूसरे approver को dial करें.
4. दोबारा ऐसा न हो, इसके लिए सावधानी (checklist)
- [ ] Alert admin panels खुले internet पर नहीं हैं.
- [ ] Mass alerts के लिए दो लोग और MFA लगते हैं.
- [ ] Odd-hour या new-IP mass sends असली इंसान को जगाते हैं.
- [ ] App गलत हो तो नागरिकों के पास दूसरा official channel है.
- [ ] Compromised admin sessions जल्दी मारे जा सकते हैं.
- [ ] Push APIs rate-limited हैं और हर drill के बाद review होते हैं.
स्रोत: Associated Press / PBS NewsHour, Ukraine and Russia emergency app cyberattacks with fake alerts, 2 नवंबर 2026; CBS News और Straits Times same-day reporting; Russia Emergencies Ministry statements quoted in those outlets.
Ravindra Bagale's Tip
An alert button is more powerful than a password reset. Keep it off the open internet, need two people to press it, and always have sirens or SMS as plan B when the app lies.
Ravindra Bagale's Tip – मराठी
Alert button password reset पेक्षा जास्त शक्तिशाली आहे. त्याला open internet वर ठेवू नका, दाबायला दोन माणसं ठेवा, आणि app खोटं बोललं तर sirens किंवा SMS plan B म्हणून तयार ठेवा.
Ravindra Bagale's Tip – हिंदी
Alert button password reset से ज़्यादा ताक़तवर है. इसे खुले internet पर न रखें, दबाने के लिए दो लोग रखें, और app झूठ बोले तो sirens या SMS plan B के रूप में तैयार रखें.
Check if you're safe: Website Security Checklist
Real incident: CRAFTY FALCON – CERT-In warns that AI-assisted attackers are calling Indian lenders' own payment APIs to move money (Nov 2026)
1. What happened
In this lesson you learnt about A01, broken access control. It means the server does not check, on every request, whether this caller is really allowed to do this action. This real case from India shows what that costs: attackers used the victims' own payment systems to send money out.
- CERT-In is India's national cyber security agency. Its finance team, CSIRT-Fin, looks after banks and other money firms.
- On 4 November 2026, CERT-In issued a new warning to banks, NBFCs, digital lending apps, fintech firms, payment aggregators and crypto exchanges. It updates an earlier warning from 9 October 2026 about attackers misusing payment and disbursement APIs (the systems that send money out, for example loan payouts).
- CERT-In gave the attacker group a name: CRAFTY FALCON. It calls it an AI-assisted money-stealing group. It uses publicly available AI attack tools, which CERT-In names as ARTEX, PentAGI, Cairn and CyberStrikeAI, so it can work at machine speed.
- CERT-In says the threat is active and ongoing. Some firms that had already fixed things after the first warning were attacked again. Attacks were timed for holidays, weekends and nights, when fewer people watch.
- The same day, India's cybercrime centre I4C also warned all financial firms. It said attackers first use unpatched software or bad settings to get in, and then go after the systems that send money.
- CERT-In has not named the victim companies. News reports link the warning to a rise in unauthorised fund transfers from Indian financial firms.
2. How the hack happened (public reporting only – high-level)
- AI tools scan the target quickly and look for weak spots, such as old unpatched software or wrong settings.
- The attackers study the company's mobile or web app to learn how it talks to the payment API.
- Reports say they change the app's client-side code, so they can send their own requests that skip the checks the real app does.
- Some attackers also misuse a payment aggregator's merchant settlement API to send settlement money to a different account.
- They first send a tiny test payment, even ₹1, to see if the trick works.
- If it works, they send bigger amounts to new beneficiary accounts, often at night or on a holiday.
3. How to stop it / defend (this lesson: access control)
Why: the app on a phone is in the attacker's hands. Anything the app checks can be skipped. Only the server can decide what is allowed. So every money request must be checked on the server, every time.
Controls CERT-In and I4C point to:
- Check every payment on the server. Check who is calling, whether they are allowed to pay this account, and whether the amount is inside their limit. Never trust a value only because the app sent it (Example 1).
- Use maker-checker for money. One person or system creates a payout and a different one approves it, especially for settlement changes and new beneficiaries.
- Use short-lived keys with a small scope. An API key should do one job, and expire soon. CERT-In also says to replace IP allow-lists for shared third-party services with proper identity-based login.
- Put limits on money flow. Set daily and per-transaction limits, add a cooling-off time for new beneficiaries, and check the beneficiary's name before paying.
- Watch for the pattern. A ₹1 test payment to a new beneficiary, followed by large transfers, is a red flag (Example 2). Many payouts in one minute is machine speed (Example 3).
- Keep test systems apart. Testing and staging systems must not be able to reach live payment systems.
- Watch harder on holidays. CERT-In asks for 24x7 monitoring, with more staff and lower alert levels on weekends and holidays.
Example 1: make sure your own lab API refuses a payout without login.
- Start the practice API from this course on your own computer (never test a real company's system).
- Run
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8080/api/payout - Output:
401 - What it means: 401 means "not logged in", so the server refused the request. If you see 200 here, the server is doing the payout for anyone who asks. That is broken access control. Fix it before anything else.
Example 2: find tiny test payments in a payout export.
- Export your payout records to a CSV file with the columns time, account, beneficiary and amount.
- Run
awk -F, '$4 <= 1 {print $1, $3, $4}' payouts.csv - Output: one line for each payout of ₹1 or less, like
2026-11-01T02:14 NEW-BEN-0042 1 - What it means: a ₹1 payment to a brand-new beneficiary at 2 am is how this group tests a stolen path. Block that beneficiary and look at what came next.
Example 3: count payouts per minute.
- Use a payout log where each line starts with the time, like
2026-11-01T02:15:07. - Run
cut -c1-16 payouts.log | sort | uniq -c | sort -rn | head -3 - Output: the three busiest minutes, like
48 2026-11-01T02:15 - What it means: 48 payouts in one minute at 2 am is not a human. Set an alert, and a hard limit, far below that number.
4. How to take care so it won't happen again (checklist)
- [ ] Every payment API checks login, permission and limits on the server, for every request.
- [ ] New beneficiaries and settlement changes need a second approval (maker-checker).
- [ ] API keys are short-lived, do one job, and are never shared between partners.
- [ ] Daily and per-transaction limits, and a cooling-off time for new beneficiaries, are switched on.
- [ ] I get an alert for ₹1 test payments and for many payouts in one minute.
- [ ] Staging and test systems cannot reach live payment systems.
- [ ] Someone is watching alerts on nights, weekends and holidays.
- [ ] We have applied the CERT-In advisory of 9 October 2026 and its 4 November 2026 update.
Source: CERT-In / CSIRT-Fin advisory on "CRAFTY FALCON" (update to the 9 October 2026 advisory on payment and disbursement API abuse), issued 4 November 2026, as reported by PTI in The Economic Times, 4 November 2026; BW Businessworld, "Hackers Using AI To Target BFSI Sector In Escalating Cyber Campaign: CERT-In", 4 November 2026; Reuters via CNA, "India cybercrime agency warns financial firms of AI-driven cyberattacks" (I4C advisory), 4 November 2026.
1. काय झालं
या lesson मध्ये तुम्ही A01, broken access control बद्दल शिकलात. म्हणजे प्रत्येक request वर server हे check करत नाही की हा caller खरंच हे काम करू शकतो का. भारतातली ही खरी घटना दाखवते की याची किंमत काय असते: attackers नी victims च्याच payment systems वापरून पैसे बाहेर पाठवले.
- CERT-In ही भारताची national cyber security agency आहे. तिची finance team, CSIRT-Fin, banks आणि पैशाशी related कंपन्यांकडे लक्ष देते.
- 4 नोव्हेंबर 2026 ला CERT-In ने banks, NBFCs, digital lending apps, fintech कंपन्या, payment aggregators आणि crypto exchanges यांना नवीन warning दिली. ही 9 ऑक्टोबर 2026 च्या जुन्या warning चं update आहे. ती warning होती attackers payment आणि disbursement APIs चा गैरवापर करत आहेत याबद्दल (पैसे बाहेर पाठवणाऱ्या systems, उदा. loan payout).
- CERT-In ने या attacker group ला नाव दिलं: CRAFTY FALCON. तो एक AI वापरणारा पैसे चोरणारा group आहे असं CERT-In म्हणते. तो सगळ्यांना मिळणारे AI attack tools वापरतो, ज्यांची नावं CERT-In ने ARTEX, PentAGI, Cairn आणि CyberStrikeAI अशी दिली आहेत. त्यामुळे तो machine speed ने काम करतो.
- CERT-In सांगते की हा धोका अजून चालू आहे. पहिल्या warning नंतर fix केलेल्या काही कंपन्यांवर पुन्हा attack झाला. Attacks मुद्दाम सुट्ट्या, weekends आणि रात्री केले गेले, जेव्हा लक्ष ठेवणारे लोक कमी असतात.
- त्याच दिवशी भारताच्या cybercrime centre I4C ने पण सगळ्या financial कंपन्यांना सावध केलं. ते म्हणाले की attackers आधी जुने unpatched software किंवा चुकीच्या settings वापरून आत येतात, आणि मग पैसे पाठवणाऱ्या systems कडे जातात.
- CERT-In ने victim कंपन्यांची नावं सांगितली नाहीत. बातम्या सांगतात की भारतीय financial कंपन्यांमधून परवानगीशिवाय पैसे जाण्याच्या घटना वाढल्यामुळे ही warning आली.
2. हॅक कसा झाला (फक्त जाहीर माहितीवरून – थोडक्यात)
- AI tools target ला पटकन scan करतात आणि कमजोर जागा शोधतात, जसं जुने unpatched software किंवा चुकीच्या settings.
- Attackers कंपनीचं mobile किंवा web app कसं payment API शी बोलतं ते समजून घेतात.
- बातम्यांनुसार ते app चा client-side code बदलतात, म्हणजे खरं app जे checks करतं ते टाळून ते स्वतःच्या requests पाठवू शकतात.
- काही attackers payment aggregator च्या merchant settlement API चा गैरवापर करून settlement चे पैसे दुसऱ्या account मध्ये वळवतात.
- आधी ते एक छोटं test payment, अगदी ₹1, पाठवून trick चालते का ते बघतात.
- चाललं तर ते नवीन beneficiary accounts ला मोठी रक्कम पाठवतात, बहुतेक रात्री किंवा सुट्टीच्या दिवशी.
3. हे कसं थांबवायचं / बचाव (हा lesson: access control)
का: phone वरचं app attacker च्या हातात असतं. App जे check करतं ते तो टाळू शकतो. काय allowed आहे हे फक्त server ठरवू शकतो. म्हणून पैशाची प्रत्येक request server वर, प्रत्येक वेळी check झाली पाहिजे.
CERT-In आणि I4C सांगत असलेले उपाय:
- प्रत्येक payment server वर check करा. कोण call करतंय, त्याला या account ला पैसे पाठवायची परवानगी आहे का, आणि रक्कम limit मध्ये आहे का ते बघा. App ने पाठवलं म्हणून कुठल्याही value वर विश्वास ठेवू नका (Example 1).
- पैशासाठी maker-checker ठेवा. एक माणूस किंवा system payout बनवतो आणि दुसरा approve करतो, खास करून settlement बदल आणि नवीन beneficiaries साठी.
- कमी वेळ चालणाऱ्या, छोट्या scope च्या keys वापरा. एक API key एकच काम करेल आणि लवकर expire होईल. CERT-In हे पण सांगते की shared third-party services साठी IP allow-list ऐवजी नीट identity-based login वापरा.
- पैशाच्या flow वर limits ठेवा. रोजची आणि प्रत्येक transaction ची limit ठेवा, नवीन beneficiary साठी थोडा थांबायचा वेळ (cooling-off) ठेवा, आणि पैसे पाठवण्याआधी beneficiary चं नाव match करा.
- Pattern वर लक्ष ठेवा. नवीन beneficiary ला ₹1 चं test payment आणि मग मोठे transfers हा धोक्याचा signal आहे (Example 2). एका minute मध्ये खूप payouts म्हणजे machine speed (Example 3).
- Test systems वेगळे ठेवा. Testing आणि staging systems live payment systems पर्यंत पोहोचू नयेत.
- सुट्ट्यांमध्ये जास्त लक्ष ठेवा. CERT-In 24x7 monitoring सांगते, weekends आणि सुट्ट्यांना जास्त staff आणि कमी alert levels सोबत.
Example 1: तुमचा स्वतःचा lab API login शिवाय payout नाकारतो का ते बघा.
- या course मधला practice API तुमच्या स्वतःच्या computer वर चालू करा (खऱ्या कंपनीची system कधीच test करू नका).
- हे चालवा:
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8080/api/payout - Output:
401 - अर्थ: 401 म्हणजे "login नाही", म्हणून server ने request नाकारली. इथे 200 दिसलं तर server कोणीही मागितलं तरी payout करतोय. हाच broken access control. आधी हे fix करा.
Example 2: payout export मध्ये छोटे test payments शोधा.
- तुमचे payout records time, account, beneficiary आणि amount या columns सोबत CSV file मध्ये export करा.
- हे चालवा:
awk -F, '$4 <= 1 {print $1, $3, $4}' payouts.csv - Output: ₹1 किंवा कमीच्या प्रत्येक payout साठी एक line, जसं
2026-11-01T02:14 NEW-BEN-0042 1 - अर्थ: रात्री 2 वाजता अगदी नवीन beneficiary ला ₹1 पाठवणं, हीच या group ची चोरीचा रस्ता test करायची पद्धत आहे. तो beneficiary block करा आणि नंतर काय झालं ते बघा.
Example 3: प्रत्येक minute ला किती payouts झाले ते count करा.
- असा payout log घ्या ज्यात प्रत्येक line time ने सुरू होते, जसं
2026-11-01T02:15:07. - हे चालवा:
cut -c1-16 payouts.log | sort | uniq -c | sort -rn | head -3 - Output: सगळ्यात busy तीन minutes, जसं
48 2026-11-01T02:15 - अर्थ: रात्री 2 वाजता एका minute मध्ये 48 payouts हे माणसाचं काम नाही. याच्या खूप खाली alert आणि hard limit ठेवा.
4. पुन्हा असं होऊ नये म्हणून काय काळजी घ्यायची (checklist)
- [ ] प्रत्येक payment API प्रत्येक request वर login, permission आणि limits server वर check करतो.
- [ ] नवीन beneficiaries आणि settlement बदलांना दुसरं approval लागतं (maker-checker).
- [ ] API keys कमी वेळ चालतात, एकच काम करतात, आणि partners मध्ये share होत नाहीत.
- [ ] रोजची आणि प्रत्येक transaction ची limit, आणि नवीन beneficiary साठी cooling-off time चालू आहे.
- [ ] ₹1 test payments आणि एका minute मधल्या खूप payouts साठी मला alert येतो.
- [ ] Staging आणि test systems live payment systems पर्यंत पोहोचू शकत नाहीत.
- [ ] रात्री, weekends आणि सुट्ट्यांना पण कोणीतरी alerts बघतंय.
- [ ] आम्ही CERT-In ची 9 ऑक्टोबर 2026 ची advisory आणि तिचं 4 नोव्हेंबर 2026 चं update लागू केलं आहे.
Source: CERT-In / CSIRT-Fin advisory on "CRAFTY FALCON" (update to the 9 ऑक्टोबर 2026 advisory on payment and disbursement API abuse), issued 4 नोव्हेंबर 2026, as reported by PTI in The Economic Times, 4 नोव्हेंबर 2026; BW Businessworld, "Hackers Using AI To Target BFSI Sector In Escalating Cyber Campaign: CERT-In", 4 नोव्हेंबर 2026; Reuters via CNA, "India cybercrime agency warns financial firms of AI-driven cyberattacks" (I4C advisory), 4 नोव्हेंबर 2026.
1. क्या हुआ
इस lesson में आपने A01, broken access control के बारे में सीखा. इसका मतलब है कि server हर request पर यह check नहीं करता कि यह caller सच में यह काम कर सकता है या नहीं. भारत की यह असली घटना दिखाती है कि इसकी कीमत क्या होती है: attackers ने victims के अपने ही payment systems से पैसे बाहर भेजे.
- CERT-In भारत की national cyber security agency है. इसकी finance team, CSIRT-Fin, banks और पैसों से जुड़ी कंपनियों पर नज़र रखती है.
- 4 नवंबर 2026 को CERT-In ने banks, NBFCs, digital lending apps, fintech कंपनियों, payment aggregators और crypto exchanges को नई warning दी. यह 9 अक्टूबर 2026 की पुरानी warning का update है. वह warning थी कि attackers payment और disbursement APIs का गलत इस्तेमाल कर रहे हैं (पैसे बाहर भेजने वाले systems, जैसे loan payout).
- CERT-In ने इस attacker group को नाम दिया: CRAFTY FALCON. CERT-In इसे AI की मदद लेने वाला पैसे चुराने वाला group कहता है. यह सबको मिलने वाले AI attack tools इस्तेमाल करता है, जिनके नाम CERT-In ने ARTEX, PentAGI, Cairn और CyberStrikeAI बताए हैं. इसलिए यह machine speed से काम करता है.
- CERT-In कहता है कि यह खतरा अभी भी चल रहा है. पहली warning के बाद fix कर चुकी कुछ कंपनियों पर फिर से attack हुआ. Attacks जानबूझकर छुट्टियों, weekends और रातों में किए गए, जब नज़र रखने वाले लोग कम होते हैं.
- उसी दिन भारत के cybercrime centre I4C ने भी सभी financial कंपनियों को सावधान किया. उसने कहा कि attackers पहले पुराने unpatched software या गलत settings से अंदर आते हैं, और फिर पैसे भेजने वाले systems तक पहुँचते हैं.
- CERT-In ने victim कंपनियों के नाम नहीं बताए. खबरों के अनुसार भारतीय financial कंपनियों से बिना इजाज़त पैसे जाने की घटनाएँ बढ़ने पर यह warning आई.
2. हैक कैसे हुआ (सिर्फ़ सार्वजनिक जानकारी से – थोड़े में)
- AI tools target को जल्दी scan करते हैं और कमज़ोर जगहें ढूँढते हैं, जैसे पुराना unpatched software या गलत settings.
- Attackers कंपनी का mobile या web app समझते हैं कि वह payment API से कैसे बात करता है.
- खबरों के अनुसार वे app का client-side code बदलते हैं, ताकि असली app जो checks करता है उन्हें छोड़कर अपनी requests भेज सकें.
- कुछ attackers payment aggregator की merchant settlement API का गलत इस्तेमाल करके settlement का पैसा दूसरे account में भेज देते हैं.
- पहले वे एक छोटा test payment, यहाँ तक कि ₹1, भेजकर देखते हैं कि तरीका चलता है या नहीं.
- अगर चल गया, तो वे नए beneficiary accounts में बड़ी रकम भेजते हैं, अक्सर रात में या छुट्टी के दिन.
3. इसे कैसे रोकें / बचाव (यह lesson: access control)
क्यों: phone वाला app attacker के हाथ में होता है. App जो check करता है, उसे वह छोड़ सकता है. क्या allowed है, यह सिर्फ़ server तय कर सकता है. इसलिए पैसों की हर request server पर, हर बार check होनी चाहिए.
CERT-In और I4C के बताए उपाय:
- हर payment server पर check करें. देखें कि कौन call कर रहा है, क्या उसे इस account में पैसे भेजने की इजाज़त है, और क्या रकम उसकी limit में है. App ने भेजा है, सिर्फ़ इसलिए किसी value पर भरोसा न करें (Example 1).
- पैसों के लिए maker-checker रखें. एक व्यक्ति या system payout बनाता है और दूसरा approve करता है, खासकर settlement बदलाव और नए beneficiaries के लिए.
- कम समय चलने वाली, छोटे scope की keys इस्तेमाल करें. एक API key एक ही काम करे और जल्दी expire हो. CERT-In यह भी कहता है कि shared third-party services के लिए IP allow-list की जगह सही identity-based login इस्तेमाल करें.
- पैसों के flow पर limits रखें. रोज़ की और हर transaction की limit रखें, नए beneficiary के लिए थोड़ा रुकने का समय (cooling-off) रखें, और पैसे भेजने से पहले beneficiary का नाम match करें.
- Pattern पर नज़र रखें. नए beneficiary को ₹1 का test payment और फिर बड़े transfers, यह खतरे का signal है (Example 2). एक minute में बहुत सारे payouts मतलब machine speed (Example 3).
- Test systems अलग रखें. Testing और staging systems live payment systems तक नहीं पहुँचने चाहिए.
- छुट्टियों में ज़्यादा नज़र रखें. CERT-In 24x7 monitoring कहता है, weekends और छुट्टियों पर ज़्यादा staff और कम alert levels के साथ.
Example 1: देखें कि आपकी अपनी lab API बिना login के payout मना करती है.
- इस course की practice API अपने खुद के computer पर चालू करें (किसी असली कंपनी का system कभी test न करें).
- यह चलाएँ:
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8080/api/payout - Output:
401 - मतलब: 401 का मतलब "login नहीं है", इसलिए server ने request मना कर दी. अगर यहाँ 200 दिखे, तो server किसी के भी माँगने पर payout कर रहा है. यही broken access control है. सबसे पहले इसे fix करें.
Example 2: payout export में छोटे test payments ढूँढें.
- अपने payout records को time, account, beneficiary और amount columns के साथ CSV file में export करें.
- यह चलाएँ:
awk -F, '$4 <= 1 {print $1, $3, $4}' payouts.csv - Output: ₹1 या उससे कम के हर payout के लिए एक line, जैसे
2026-11-01T02:14 NEW-BEN-0042 1 - मतलब: रात 2 बजे बिल्कुल नए beneficiary को ₹1 भेजना, यही इस group का चोरी का रास्ता test करने का तरीका है. उस beneficiary को block करें और देखें कि उसके बाद क्या हुआ.
Example 3: हर minute में कितने payouts हुए, यह गिनें.
- ऐसा payout log लें जिसकी हर line time से शुरू होती है, जैसे
2026-11-01T02:15:07. - यह चलाएँ:
cut -c1-16 payouts.log | sort | uniq -c | sort -rn | head -3 - Output: सबसे busy तीन minutes, जैसे
48 2026-11-01T02:15 - मतलब: रात 2 बजे एक minute में 48 payouts किसी इंसान का काम नहीं है. इससे बहुत नीचे alert और hard limit रखें.
4. दोबारा ऐसा न हो, इसके लिए क्या ध्यान रखें (checklist)
- [ ] हर payment API हर request पर login, permission और limits server पर check करती है.
- [ ] नए beneficiaries और settlement बदलावों के लिए दूसरा approval चाहिए (maker-checker).
- [ ] API keys कम समय चलती हैं, एक ही काम करती हैं, और partners के बीच share नहीं होतीं.
- [ ] रोज़ की और हर transaction की limit, और नए beneficiary के लिए cooling-off time चालू है.
- [ ] ₹1 test payments और एक minute में बहुत सारे payouts पर मुझे alert आता है.
- [ ] Staging और test systems live payment systems तक नहीं पहुँच सकते.
- [ ] रात, weekends और छुट्टियों में भी कोई alerts देख रहा है.
- [ ] हमने CERT-In की 9 अक्टूबर 2026 की advisory और उसका 4 नवंबर 2026 का update लागू किया है.
Source: CERT-In / CSIRT-Fin advisory on "CRAFTY FALCON" (update to the 9 अक्टूबर 2026 advisory on payment and disbursement API abuse), issued 4 नवंबर 2026, as reported by PTI in The Economic Times, 4 नवंबर 2026; BW Businessworld, "Hackers Using AI To Target BFSI Sector In Escalating Cyber Campaign: CERT-In", 4 नवंबर 2026; Reuters via CNA, "India cybercrime agency warns financial firms of AI-driven cyberattacks" (I4C advisory), 4 नवंबर 2026.
Ravindra Bagale's Tip
Think of your mobile app as a form that the customer fills in. The customer can write anything on a form. Your server is the bank clerk, and the clerk must check every form, every time, even at 2 am on Diwali. If your payout system says yes to anyone who knows the right address, it is not a payout system. It is an open cash counter.
Ravindra Bagale's Tip – मराठी
तुमचं mobile app म्हणजे customer भरतो तो एक form आहे असं समजा. Form वर customer काहीही लिहू शकतो. तुमचा server म्हणजे bank मधला clerk, आणि clerk ने प्रत्येक form, प्रत्येक वेळी check केलाच पाहिजे, अगदी दिवाळीच्या रात्री 2 वाजता सुद्धा. बरोबर address माहीत असलेल्या कोणालाही तुमची payout system हो म्हणत असेल, तर ती payout system नाही. ते उघडं cash counter आहे.
Ravindra Bagale's Tip – हिंदी
अपने mobile app को ऐसा form समझें जिसे customer भरता है. Form पर customer कुछ भी लिख सकता है. आपका server bank का clerk है, और clerk को हर form, हर बार check करना ही है, दिवाली की रात 2 बजे भी. अगर आपका payout system सही address जानने वाले किसी को भी हाँ कहता है, तो वह payout system नहीं है. वह खुला cash counter है.
Check if you're safe: Website Security Checklist