P.K. SHARMA

Cyber security intelligence, AI governance, practitioner analysis

Flagship assessment

Agent Least-Privilege Assessment

A focused assessment of what your AI agents can actually do: the tools they hold, the data they reach, and the blast radius when one is compromised or misled.

Agentic AI systems hold credentials, call tools, and act on live data. Most organisations cannot answer one simple question about them: if this agent is compromised or misled, what is the worst it can do? This assessment answers it precisely, then closes the gap.

Frameworks covered

OWASP LLM Top 10

Excessive agency, insecure output handling, and prompt injection

MITRE ATLAS

Adversary techniques against agentic and ML systems

Least privilege

Classic access control principles applied to non-human identity

NIST AI RMF

Findings mapped into Measure and Manage

How the engagement runs

  1. 1

    Agent inventory

    Every agent in the estate: what it is, who owns it, which identity it runs as, and whether anyone is still using it.

  2. 2

    Capability and blast radius mapping

    For each agent, the tools it holds, the data it reaches, and the concrete worst case if it is compromised or misled into acting.

  3. 3

    Attack path demonstration

    Prompt injection and confused-deputy paths run against your actual configuration, so the risk is demonstrated rather than asserted.

  4. 4

    Least-privilege target model

    The permission set each agent should hold, mapped against what it holds today, with the delta quantified.

  5. 5

    Remediation and review gate

    A prioritised reduction plan your engineers can execute, plus a standing review gate so new tool grants do not reopen the gap.

What you walk away with

  • Agent inventory with ownership and identity mapping
  • Blast radius analysis per agent
  • Demonstrated attack paths with reproduction steps
  • Least-privilege target model and permission delta
  • Prioritised remediation plan
  • Tool-grant review gate for ongoing use

How this plays out

Example scenario

An internal agent platform had accumulated broad tool permissions during development, and nobody could say what a compromised agent could reach.

The work: Blast radius analysis per agent, then a least-privilege target model and a permission rebuild in priority order.

Agent permissions cut by more than half with no workflow breakage, and a standing review gate for every new tool grant.

Example scenario

A customer support agent held a shared service account with write access well beyond the tickets it was meant to handle.

The work: Per-task scoped credentials replaced the shared account, and the confused-deputy path was demonstrated to the engineering team directly.

The same attack now lands on nothing, and shared service accounts were removed across the remaining agents.

Start the conversation

A short call to understand your situation; a clear scope if the engagement fits, and a straight answer if it does not.

Book an assessment

Share this

Send it to whoever owns the budget or the risk.

← All services

The question this answers

Not whether your agent can be misled. Assume it can, because the mechanism that makes it useful is the same one that makes it persuadable, and no model version removes that.

The question is what it is holding when that happens.

The same attack, run twice

Standing session, broad rightsInjected textin a fetched pageAgentEmailCustomer databasePaymentsAdmin APIFour systems reached. Nothing malfunctioned: the agent used real credentials correctly.Per-task credential, scoped to the jobInjected textidentical payloadAgentEmail, read onlyCustomer databasePaymentsAdmin APINot held, so not reachable. The dashed systems are out of scope for this task.The model, the prompt and the injection are identical in both rows.Only the credential changed, and that is the whole mitigation.
Identical model, identical prompt, identical injected text. The only variable is the credential the agent was carrying. Nothing in the second row detected the attack; it simply had nothing to reach.

An agent with a standing session and broad rights turns one poisoned sentence into several compromised systems. The same agent with a per-task credential scoped to the job it is doing produces an attack that lands on almost nothing. No detection is involved in the difference, which is the point: this is the control that holds when everything upstream of it has already failed.

What gets examined

Every credential the agent can present, and what each one actually reaches. Not the intended use, the actual grant. An agent given a standing OAuth token holds everything that token permits, whether or not the feature was designed to use it.

Every tool it can call, and what the worst legitimate use of each looks like. A tool that sends email can send any email. A tool that reads a database reads whatever the connection string allows.

Every outbound path, including the ones nobody counts as network access: rendered images, generated links, webhook calls, anything that writes where somebody else can read.

And the observability question, which is what a successful attack would leave behind. If the answer is the assistant's replies only, tool calls are invisible and an incident is undetectable rather than merely undetected.

The finding that comes up most

Standing credentials, granted once at configuration and never re-evaluated.

They are the default in almost every framework because they are the shortest path to a working prototype, and prototypes become production without anybody revisiting the decision. The agent is configured once, runs whenever the application runs, and keeps whatever access it was given for as long as the configuration survives.

That is a standing grant rather than a session, and standing grants are what turn a single successful injection into a durable foothold.

What comes out of it

A map of what each agent can reach today, which most organisations have never written down. A ranked list of grants that can be narrowed without breaking the feature, because that is the work that actually reduces exposure. The confirmation points that belong on anything irreversible or outward-facing. And the logging gaps, which are usually cheaper to close than anything else on the list and do more for the ability to answer questions afterwards.

None of it depends on which model you use, and none of it changes when the model is upgraded. That is deliberate: this assesses the part of the system you control.

What it is not

It is not a red team engagement. Nothing here tries to make the model misbehave; the assessment assumes it already has. If you want the behaviour tested adversarially, that is a different piece of work and the two are complementary.

It is also not a code review. The question is what the running system is permitted to do, which is answered from configuration, credentials and grants rather than from source.