Skip to Main Content
Talk Intermediate Apache License 2.0 First Talk

The Identity You Didn't Know You Granted: How MCP Quietly Breaks Per-User RBAC in LLM-Powered SOC Tools

Proposal status is Rejected
Session Description

Everyone's bolting LLMs onto their security stack right now — "just ask your logs a question in plain English." We wanted to actually build that, so we did: queryCopilot, an open-source Kibana plugin that takes an analyst's question, turns it into a real KQL query, and runs it against Elasticsearch. It uses MCP — the protocol everyone's adopting to give models access to data — for live query execution.

Then we did the thing people skip: we tried to break our own tool. And the scariest bug wasn't some exotic AI thing. It was plumbing. When a query runs through an MCP server, that server talks to Elasticsearch as one fixed identity — but Kibana decides who-can-see-what per user. So the second an analyst's query goes through MCP, your per-user permissions just… stop mattering. Everyone effectively gets the container's access. We can show it live: a low-privilege analyst pulling logs they should never be allowed to see.

There's more. An internal endpoint we assumed was admin-only is actually wide open to anyone logged in, because the permission it claims to require was never registered with the platform — so the check does nothing. And we'll show a log line with "ignore previous instructions" hidden inside it reaching the model — and why, this time, it doesn't break anything.

We're not going to just stand there and dunk on our own code, though. For every problem we'll show the fix, and you'll leave with a checklist you can run against whatever AI tooling you're building. The honest punchline: the part we were most scared of — handling people's API keys — turned out fine. The real holes were in the boring stuff. Auth. Identity. Input. They always are.

If you're putting an LLM anywhere near your security data, this is the trust boundary nobody's talking about yet.

Key Takeaways
  • A trust boundary to check in your own stack: when an MCP server — or any service account — executes queries, it runs as one fixed identity, and silently bypasses the per-user RBAC your platform thinks it's enforcing.

  • A bug class that's easy to ship and hard to see: an authorization tag that's declared but never registered is a silent no-op, leaving "admin-only" routes open to any authenticated user. We'll show how to verify enforcement, not just annotation.

  • Why validation that checks length isn't validation that bounds risk — and what an index-pattern filter actually has to reject (system indices, cross-cluster targets) before it's safe.

  • How attacker-controlled log data turns into prompt injection — and the design that keeps it contained: a validated output contract that still executes under the caller's permissions.

  • A reusable checklist for handling user-supplied API keys safely — log scrubbing, no client exposure, no browser persistence, encryption at rest — plus the reminder that the real holes sit in auth, identity, and input bounds, not the AI.

References

Session Categories

Introducing a FOSS project or a new version of a popular project
Engineering practice - productivity, debugging
Technology / FOSS licenses, policy
Talk License: Apache License 2.0

Which track are you applying for?

Security

Speakers

MAITHILY RAJPURE
MAITHILY RAJPURE AI Security Engineering Intern | Trust Lab @ IIT Bombay

Maithily Rajpure is a Computer Engineering student specializing in Cybersecurity and an AI Engineering Intern at IIT Bombay's Trust Lab, where she works on secure AI systems for Security Operations Centers (SOCs). Her work focuses on LLM security, authorization, trust boundaries, and building practical AI-powered security tooling.

She is a contributor to queryCopilot, an open-source Kibana plugin that enables analysts to investigate security logs using natural language. While building it, her team uncovered subtle but critical security flaws involving MCP-based architectures, identity propagation, authorization bypasses, and prompt injection in real-world SOC workflows.

At DevRoom, Maithily will share lessons learned from breaking and hardening their own system, demonstrating why the biggest security risks in AI-powered infrastructure often come not from the model itself, but from overlooked assumptions about identity, permissions, and trust boundaries.

Harshit Gupta
Harshit Gupta AI security engineering intern | Trust Lab @ IIT Bombay

Harshit Gupta is a Full Stack Developer and Computer Science student specializing in Mobile and Web Application Development, with a strong interest in application security, AI systems, and developer tooling. He has worked on building AI-powered applications and security-focused platforms, including queryCopilot, an open-source Kibana plugin that enables natural language querying of Elasticsearch through LLMs and the Model Context Protocol (MCP).

His work focuses on understanding the trust boundaries introduced by AI integrations, particularly where authentication, authorization, and user-controlled input intersect with large language models. Through hands-on research and offensive testing of his own systems, he explores how seemingly ordinary engineering decisions can create significant security risks in LLM-powered applications.

At this session, Harshit shares practical findings from building and breaking real-world AI security tooling, demonstrating how identity propagation failures, authorization gaps, and prompt injection risks emerge in modern SOC environments—and, more importantly, how to fix them.