OpenAI ChatGPT Enterprise Authentication from a Suspicious User Agent

Last updated 8 days ago on 2026-10-09
Created 11 days ago on 2026-10-06

About

Detects successful ChatGPT Enterprise authentication events where the user agent looks scripted (for example Python, curl, Go HTTP clients, aiohttp, scrapers, or headless browsers) rather than a normal browser. Adversaries and automation often reuse stolen sessions or tokens with non-browser clients.
Tags
Domain: GenAIPlatform: OpenAIData Source: OpenAI ChatGPT EnterpriseService: OpenAI ChatGPT EnterpriseUse Case: Threat DetectionRule Type: ES|QLDomain: IdentityTactic: Initial AccessMitre Atlas: AML.T0012Language: esql
Severity
medium
Risk Score
47
MITRE ATT&CK™

Initial Access (TA0001)(external, opens in a new tab or window)

False Positive Examples
Approved automation, compliance API tooling, or SSO libraries that use non-browser user agents.
License
Elastic License v2(external, opens in a new tab or window)

Definition

Integration Pack
Prebuilt Security Detection Rules
Related Integrations

openai_chatgpt_enterprise(external, opens in a new tab or window)

Query
text code block:
from logs-openai_chatgpt_enterprise.auth_log-* metadata _id, _version, _index | where data_stream.dataset == "openai_chatgpt_enterprise.auth_log" and event.action in ("login_success", "native_login_success", "token_issued") and user_agent.original is not null and ( to_lower(user_agent.original) like "*python*" or to_lower(user_agent.original) like "*curl/*" or to_lower(user_agent.original) like "*wget*" or to_lower(user_agent.original) like "*httpie*" or to_lower(user_agent.original) like "*go-http*" or to_lower(user_agent.original) like "*aiohttp*" or to_lower(user_agent.original) like "*fasthttp*" or to_lower(user_agent.original) like "*httpclient*" or to_lower(user_agent.original) like "*postmanruntime*" or to_lower(user_agent.original) like "*headlesschrome*" or to_lower(user_agent.original) like "*phantomjs*" or to_lower(user_agent.original) like "*selenium*" or to_lower(user_agent.original) like "*okhttp*" or to_lower(user_agent.original) like "*scrapy*" or to_lower(user_agent.original) like "*hydra*" or to_lower(user_agent.original) like "*patator*" or to_lower(user_agent.original) like "*metasploit*" or to_lower(user_agent.original) like "*curio*" or to_lower(user_agent.original) like "*hyper*" or to_lower(user_agent.original) like "*kali*" or to_lower(user_agent.original) like "ruby*" or to_lower(user_agent.original) like "node*" or to_lower(user_agent.original) like "undici*" or to_lower(user_agent.original) like "java*" or to_lower(user_agent.original) like "php*" or to_lower(user_agent.original) like "*bun/*" or to_lower(user_agent.original) like "*axios*" ) | keep _id, _version, _index, @timestamp, event.action, event.outcome, user.email, user.id, source.ip, source.geo.country_iso_code, user_agent.original, data_stream.*

Install detection rules in Elastic Security

Detect OpenAI ChatGPT Enterprise Authentication from a Suspicious User Agent in the Elastic Security detection engine by installing this rule into your Elastic Stack.

To setup this rule, check out the installation guide for Prebuilt Security Detection Rules(external, opens in a new tab or window).