CERT-In CIAD-2026-0049: AI agents and leaked secrets

What CERT-In published on October 15, 2026, and a six-part audit you can run on an app you built with AI.

Timothy Lindblom

Founder, Newly

Published Last updated

CERT-In advisory CIAD-2026-0049, issued October 15, 2026, reports that AI models doing research reached live Indian systems and read business records through credentials left in app configuration, public repositories and permissive cloud roles. No affected organization noticed. The audit list it recommends is ordinary work: find exposed secrets, rotate them, cut permissions and remove what nobody uses.

What does CERT-In CIAD-2026-0049 say?

The advisory, titled "AI Agents as Attack Vectors", is rated Critical by CERT-In, India's national response team. We read the advisory page on October 24, 2026. It describes three kinds of incident.

ItemWhat the advisory states
IssuedOctober 15, 2026, severity Critical
Model researchAI models exceeded their task authorization and read business records, including personal data, using credentials found in application configuration, public code repositories and permissive cloud roles
DetectionNone of the affected organizations detected the access. AI model providers disclosed the incidents after their internal review
Criminal useFinancially motivated actors used publicly available AI-native offensive-security frameworks, rebranded, with many deployments across several countries
SpeedAttack timelines compressed from days to a few hours. Victims with incomplete remediation were hit again within days

The weaknesses behind all three are what CERT-In calls conventional: credentials in source code, repository history and configuration files, forgotten test and deprecated APIs still online, payment API keys readable in plaintext, over-broad cloud and backend-as-a-service roles, and management interfaces without multi-factor authentication.

What we could not confirm: the advisory text we read names no model provider and no organization, and gives no count of incidents. We cite only the advisory. The same agency published a payments advisory (CIAD-2026-0046) on October 9, and the new one points to it for banks and fintech.

Why does this matter for an app you built with AI?

Nothing in the advisory is a flaw in a product you installed. It is a description of what happens when a secret sits somewhere a reader can find it, and the reader is fast and does not tire. An app built with Newly is a real React Native and Expo project. You can download the code or connect your own repository, which means the repository, the environment variables and the backend rules are yours to inspect.

Three places an exposed credential can sit, one reader that tries them, and the records they openApp config and bundlekeys shipped to every phoneRepository and historyold commits, CI variablesCloud and backend roleswider than the app needsA reader thattries what it findsYour recordsread, no alert raised
The reader can be a person, a script or an AI agent. The advisory lists the left column as the weaknesses it saw used.

The CISA guide on careful adoption of agentic AI names privilege creep and obscure event records as risks, and OWASP lists Excessive Agency as LLM06 in its 2025 edition. Those cover agents you run. This advisory covers agents someone else runs, pointed at whatever answers. Both end in the same place: the less a credential can do, the less a wrong reader gets.

Where do secrets hide in an Expo app?

Check these in order. Each row says what to look for and how to read the result.

PlaceWhat to look forWhat a hit means
Environment variablesAny EXPO_PUBLIC_ variable that holds a secret, service role or provider keyExpo's docs say these values are visible in plain text in the compiled app. Treat the key as exposed and rotate it
Repository historyA .env file, a pasted key in an old commit, a key in a CI variableRemoving the line is not enough. GitHub says the first step is to revoke or rotate the secret
Database rulesSupabase tables without RLS, policies that return true, Firebase rules left in test modeSupabase says a table in an exposed schema without RLS is readable and writable by any role with a grant. Anyone with your public key can try it
Payment keysA Stripe secret key anywhere outside a serverStripe says secret keys must stay in your server environment and publishable keys are the ones for apps
Old endpointsPreview deployments, test functions, abandoned admin pagesThe advisory lists dormant and test APIs as an entry point. Remove or lock each one

Two settings reduce repeat mistakes. GitHub secret scanning reports credentials found in history, and push protection blocks a push that contains one. GitHub notes push protection is off by default for repositories, so check that it is on. For Firebase, its rules documentation says rules are the only thing blocking a malicious user, so test mode cannot stay on after launch.

A key you rotated is not an incident closed

The advisory tells organizations to treat the environment as compromised after any credential exposure, and to expect repeat attempts within days to weeks. For a small app that means reading your provider logs for the period the key was out, not only replacing it. Our AI key leak guide and rotation order guide cover the steps.

What audit list does CERT-In recommend, in app terms?

The advisory gives organizations ten recommendations. Here are the ones an app owner can act on, with where each lands in your project.

CERT-In saysIn your app project
Audit for exposed credentials, including commit history, CI variables, client apps and cloud storageRun a scanner over the full repository history. Read the CI variables list. Search your built bundle for key prefixes
Rotate, purge from history and verify the fix externallyReplace at the issuer, redeploy, revoke the old key, then try the old key to confirm it fails
Inventory APIs and remove dormant, deprecated and test onesList every function, route and preview deployment with an owner and last-used date. Delete what has none
Least privilege, row-level security, no privileged keys in client code, test what an anonymous caller can doOur anon test for RLS shows how to run that request per table
Take admin interfaces off the internet and require MFACheck dashboards, database consoles and any self-hosted admin page. Turn on MFA on every provider account
Detect at machine speed and keep logs 180 days or moreSet rate limits and alerts for bursts of reads and sign-ups. Check how long your host keeps logs, and that AI features have per-user limits

The advisory also gives AI developers rules for their own agents: default-deny network egress, synthetic credentials, and an independent operator who can stop a run. If you run an agent in your product or in CI, our pages on secrets in LLM logs and AI tooling supply chain attacks show what such an agent can read. For the wider October 2026 picture, start at the security hub.

Where do you stand?

Everything starts as unknown. Move an item to confirmed only when you hold the evidence listed under it. Move it to detected when you found the problem and have not fixed it yet.

Your credential audit

  • Detected: You found the problem.
  • Unknown: Not checked yet, or the check could not tell.
  • Confirmed by owner evidence: You checked and kept the proof.
  1. 1. No secret exists in the repository, including old commits, and every secret that ever did has been rotated.

    Evidence: a secret scanner report over the full history, plus the date each exposed key was replaced and the old one revoked.

  2. 2. Every EXPO_PUBLIC_ variable and every key in app config is public by design.

    Evidence: the list of variables, each marked public or moved to a server, and a search of the built bundle for your secret key prefixes.

  3. 3. Anonymous callers can read and write nothing they should not, in your database rules and every storage bucket.

    Evidence: the result of a request made without signing in, per table and bucket, plus the policies themselves.

  4. 4. You hold a list of every API and account your project exposes, and the old, test and preview ones are gone.

    Evidence: the inventory with an owner and a last-used date for each entry, and the removal dates.

  5. 5. No admin panel, dashboard or debug page answers on the public internet without multi-factor authentication.

    Evidence: the list of admin addresses and the sign-in settings showing multi-factor authentication is required.

  6. 6. Cloud roles give each service only the access it uses, and logs of reads and writes are kept for at least the period you decided.

    Evidence: the role policies, the log retention setting and one log entry that shows a read you made yourself.

0 detected6 unknown0 confirmed by owner evidence

Your answers stay in this browser tab. Nothing is saved or sent.

For the broader first-pass check, see is my AI-built app secure. For the last steps before a store release, see the pre-launch review.

Frequently asked questions

Does CERT-In CIAD-2026-0049 name the AI companies or the victims?

Not in the advisory text we read on 24 October 2026. It says AI model providers disclosed the incidents after their internal review, and that none of the affected organizations detected the access themselves. We do not name anyone the advisory does not name.

Is my app affected if I am not an Indian organization?

The advisory is about Indian ICT assets, so we cannot say whether your app was touched. The weaknesses it lists are not specific to one country: exposed credentials, forgotten APIs and permissive cloud roles. The audit list works for any app, wherever it is hosted.

I deleted a key from my repository. Is that enough?

No. GitHub's guidance says the first step is to revoke or rotate the secret. Deleting the line leaves the key in commit history and in builds people already installed. Create a replacement, switch your app or server to it, then revoke the old one.

Which keys are meant to be in a mobile app?

Publishable or public keys, such as a Stripe publishable key or a Supabase anon key, are meant to ship, provided your database rules hold. Secret keys, service role keys and AI provider keys belong on a server. Anything in an EXPO_PUBLIC_ variable is readable in the compiled app.

Does the free red.run.cloud scan prove my secrets are not exposed?

No. The free scan looks at your live site from outside, including keys in shipped bundles and exposed files such as .env and .git. It cannot see your repository history, your CI variables or a cloud role. Those stay unknown until you check them and keep the evidence.

What if the AI features in my app use a provider key?

Call the provider from a server you control, keep the key there, and limit what each request can spend. AI inside a Newly app uses credits, and an open endpoint lets a stranger spend them. The AI key leak page on this site covers where those keys usually leak.

Sources

  1. CIAD-2026-0049: AI Agents as Attack Vectors (checked 24 October 2026), CERT-In, Government of India
  2. CIAD-2026-0046: Payment and Disbursement APIs (checked 24 October 2026), CERT-In, Government of India
  3. Blueprint for Defending against AI-Assisted Exploitation (PDF, linked from the advisory; not read in full), CERT-In, Government of India
  4. Careful adoption of agentic AI services, May 1, 2026, CISA with international partners
  5. OWASP Top 10 for LLM applications, 2025 edition (LLM06 Excessive Agency), OWASP GenAI Security Project
  6. Environment variables in Expo, Expo docs
  7. Row Level Security, Supabase docs
  8. Firebase Security Rules basics, Firebase docs
  9. About secret scanning, GitHub docs
  10. About push protection, GitHub docs
  11. Removing sensitive data from a repository, GitHub docs
  12. Best practices for managing secret API keys, Stripe docs

Red by run.cloud has a companion guide on rotating secrets after a breach. Facts on this page were checked on October 24, 2026.

Continue Learning