Skip to main contentChat with us

ISO 27001:2022 Annex A  ·  Technological Control

A.8.18
Use of privileged utility programs

To prevent powerful utility programs from being used — by administrators, developers, or attackers — to bypass the security controls that systems and applications are supposed to enforce.

Last reviewed: June 12, 2026  ·  Authored by TÜV SÜD & BSI Certified Lead Auditors

Control Definition

The organization must restrict and tightly control any utility program capable of overriding system or application controls — identifying which utilities exist, limiting their use to the smallest practical set of trusted, authorized individuals, authorizing and logging each use, and removing or disabling utilities wherever there is no business need for them.

Control Objective

To prevent powerful utility programs from being used — by administrators, developers, or attackers — to bypass the security controls that systems and applications are supposed to enforce.

What This Really Means

Every operating system and platform ships with tools that ignore the rules. A disk editor rewrites data without touching file permissions. A debugger attached to a production process reads memory the application would never expose. A raw database console updates records directly, skipping every validation rule, approval workflow, and audit trail your application enforces. Password recovery tools, partition managers, system-level scripting consoles — these are the locksmith's tools of IT: legitimate in skilled hands, devastating in the wrong ones. A.8.18 exists because all your carefully built application controls are only as strong as your control over the tools that can step around them.

The control asks for four things in practice. First, know what you have: inventory the utilities present across your estate and record which systems carry them. Second, restrict them: limit each utility to named individuals with a documented business justification, not "everyone in IT." Third, control each use: elevation should be time-bound — checked out through a PAM workflow or just-in-time mechanism, ideally tied to a ticket — and every session logged. Fourth, remove what you don't need: if a production server has no reason to carry a debugger or disk editor, strip it from the build.

Do not read this control as being about dusty 1990s disk utilities. Its modern equivalents are the paths engineers use to bypass the application layer every day: kubectl exec into a production pod, a psql or mongosh session straight against the production database, a cloud provider's serial console or cloud shell, PowerShell running unrestricted on a domain controller. Any tool that lets a human act below or around the application's own controls is in scope.

What auditors treat as the heart of A.8.18: can you produce the list of privileged utilities and direct-access paths in your environment, show exactly who is authorized to use each one and why, and then produce the log of recent uses? An organization that controls admin accounts well but has never named its utilities — or cannot show a single recorded direct-database session — has not implemented this control.

Why It Matters

Utility programs are the shortcut past every other control you have built. An application can enforce maker-checker approval on payments, field-level validation, and a complete audit trail — and none of it matters if a dozen people can open a raw database console and edit the table directly. The same logic applies to attackers: once inside, they reach for exactly these tools, because utilities that override controls do the heavy lifting of privilege escalation, persistence, and data theft.

When privileged utilities are uncontrolled, organizations face:

  • Control bypass by design – Application-level integrity checks, approval workflows, and audit trails become decorative when data can be modified directly through a database client or disk-level tool
  • Forensic blind spots – Changes made through utilities typically leave no application log, so investigations cannot reconstruct what was altered, by whom, or when
  • A ready-made attacker toolkit – Debuggers, password recovery tools, and scripting consoles left on production systems hand an intruder the instruments for credential theft and lateral movement
  • Insider fraud exposure – Direct, unlogged data manipulation is the classic mechanism of insider fraud, particularly in financial and payroll systems
  • Audit nonconformities – Discovering that every engineer holds a standing production database connection string, with no register and no session logs, is a finding auditors raise quickly and rate seriously

Regional Compliance Context

For organizations in scope of India's CERT-In directions, the 180-day log retention requirement effectively extends to privileged utility use on India-connected systems: if direct database sessions and elevated console activity are not logged at all, you cannot reconstruct an incident — and the 6-hour reporting clock starts from when you notice it, not from when you finally piece events together. Make utility and privileged-session logs part of your retained log set.

BFSI organizations should also note that RBI master directions and SEBI's CSCRF expect demonstrable oversight of privileged activity on critical systems. Unlogged direct access to core banking, trading, or customer databases is the kind of gap regulators and certification auditors converge on from different directions.

Implementation Guidance

1

Inventory the Privileged Utilities in Your Estate

Scan servers, endpoints, and images for tools capable of overriding controls: disk and partition editors, debuggers, password recovery tools, raw database clients, system-level scripting consoles, and hypervisor management tools. Include the modern paths — kubectl exec, cloud shells, serial consoles, and standing production database credentials. Record the result in a privileged utility register listing each utility, the systems carrying it, and its business purpose.

2

Remove or Disable Utilities Without a Business Need

For each entry in the register, ask whether the system genuinely needs it. Strip debuggers, compilers, and admin utilities from production builds where they serve no purpose, and bake the removals into your golden images and hardening baselines (A.8.9) so they do not creep back. Document the justification for every utility you keep.

3

Restrict Remaining Utilities to Named Individuals

Authorize each retained utility for specific named people with a recorded justification — typically a handful of administrators or DBAs, not a whole team. Require separate administrative accounts for utility use rather than daily-driver accounts, and reflect the authorizations in your access control matrix so they are revalidated alongside privileged access reviews (A.8.2).

4

Make Elevation Time-Bound, Not Standing

Route utility use through a PAM or just-in-time elevation workflow: access is checked out against a ticket, granted for a defined window (hours, not months), and expires automatically. Define a break-glass procedure for emergencies with mandatory after-the-fact review. Standing local admin rights and permanent database credentials are what this step exists to eliminate.

5

Log and Monitor Every Use

Ensure each utility execution and privileged session produces a record — command logging at minimum, full session recording for high-risk paths like production database consoles. Ship these logs to your SIEM and alert on utility execution outside approved change windows or by unauthorized accounts (A.8.16). A log nobody can tamper with is the evidence that makes this control auditable.

6

Channel Ad-Hoc Production Access Through Controlled Paths

Close the side doors: SSH to production, kubectl exec, and direct database connections should pass through a bastion host or PAM proxy that authenticates the individual, requires a ticket reference, and records the session. Remove production connection strings from laptops, wikis, and CI variables that engineers can read. The goal is not to forbid these tools but to make the logged path the only path.

7

Review Quarterly and Reconcile the Register

Recertify the named-user list each quarter as part of your access review cycle: do these people still need these utilities? Reconcile the register against what is actually installed (a software inventory or baseline-drift report does this cheaply) and sample the usage logs for sessions without a matching ticket. Feed exceptions into your incident or nonconformity process.

Audit Evidence

During your ISO 27001 certification audit, auditors will expect to see the following evidence to demonstrate compliance with A.8.18:

Documentation

  • Privileged utility register listing each utility, the systems where it exists, authorized users, and business justification
  • Access control or privileged access procedure that explicitly covers utility programs and direct production access paths
  • PAM or elevation records showing time-bound checkout with ticket references for sampled utility sessions
  • Utility session logs or recordings (database console sessions, kubectl exec, bastion sessions) retained per policy
  • Quarterly review records showing recertification of authorized users and reconciliation of the register against installed software

Interviews

  • System administrators and DevOps engineers on how they obtain elevated access to run utilities and what gets logged when they do
  • Database administrators on who can open a direct session against production data, how it is approved, and where the session record lives
  • CISO or IT manager on how the utility inventory is maintained and how authorization decisions are made and revoked

Observations

  • An engineer without authorization attempts to run a restricted utility or open a production database console — the auditor watches it be blocked or generate an alert
  • Live walkthrough of the PAM or just-in-time workflow: checkout, approval, time-bound session, and the resulting recording
  • A sampled production server or container image inspected for utilities not listed in the register or baseline

Practitioner Insights

Surendra Pal Singh

The pattern I see across audits is organizations that manage privileged accounts quite well but have never once named their privileged utilities. When I ask "show me everyone who can open a raw console against the production database, and the logs of the last ten sessions," the room goes quiet — the access exists, it is just invisible. A.8.18 usually fails on scoping, not tooling. Build the register first; a certification auditor's opening move on this control is to test whether you can even enumerate the tools that bypass your applications.

Surendra Pal Singh · CISO, DPO, CISA, ISO 27001, 27701, 42001 Lead Auditor
Saundhi Chauhan

In startups the honest answer is that every engineer has kubectl access and a production database string sitting in a local config file — and the first draft policy I get to review bans utilities the team demonstrably uses every day, which an auditor will see through in minutes. The pragmatic fix is not prohibition, it is routing: put a bastion or PAM proxy in front of the database and the cluster, make elevation just-in-time, and delete the standing credentials. Write the policy to match that logged path, and your evidence generates itself.

Saundhi Chauhan · ISO 27001, 27701 Lead Auditor

Common Challenges & Solutions

Challenge

Nobody actually knows which utilities exist across hundreds of servers, containers, and laptops.

Solution

Do not attempt a manual census. Use the software inventory you already have — endpoint management, EDR, or CMDB discovery — and diff production systems against your golden images to surface what was added after build. Start with production and crown-jewel systems only; the register for those is what auditors sample first.

Challenge

Developers occasionally need real production access to debug live incidents, and a blanket ban just drives workarounds.

Solution

Replace the ban with a fast, legitimate path: just-in-time elevation that grants a recorded session within minutes, tied to the incident ticket, expiring automatically. Add a break-glass account for true emergencies with mandatory next-day review. When the sanctioned route is quicker than the workaround, the shadow paths die on their own.

Challenge

Direct database access bypasses the application audit trail, and nobody currently logs those sessions at all.

Solution

Put a proxy in the path: a bastion, a PAM session gateway, or a database activity monitoring tool that captures every statement regardless of the client used. Restrict direct connections to named DBAs from designated jump hosts, block the database port from general networks, and ship the session logs to the SIEM where they cannot be edited by the same people they record.

Challenge

Utility use is logged, but nobody reviews the logs — unauthorized use surfaces months later, if ever.

Solution

Move from passive logging to targeted alerting: notify on utility execution outside change windows, by accounts not in the authorized list, or on systems where the register says the utility should not exist. Supplement with a monthly sample review that reconciles sessions against tickets. Ten minutes of monthly reconciliation is worth more than a terabyte of unread logs.

Challenge

Teams read this control as being about legacy disk editors and miss the cloud-native equivalents entirely.

Solution

Apply one test: can this tool act below or around the application's own controls? By that test, kubectl exec, cloud serial consoles, cloud shell, and IaC state manipulation are all in scope. Restrict them with IAM and RBAC, enable the platform audit logs (Kubernetes API audit, cloud control-plane logging), and list these paths in the same register as the traditional utilities.

Frequently Asked Questions

What counts as a "privileged utility program" under A.8.18?
Any tool capable of overriding system or application controls: disk and partition editors, debuggers, password recovery and cracking tools used by administrators, raw database clients, system-level scripting consoles, and hypervisor or firmware utilities. The modern equivalents matter just as much — kubectl exec into production workloads, cloud serial consoles and cloud shells, and standing direct connections to production databases. The defining test is capability, not age: if it lets someone act around the application layer, it is in scope.
Do we have to remove all utility programs from production systems?
No — the control requires restriction and tight control, not elimination. Remove or disable utilities where there is no business need (and bake that into your build baseline), then govern the rest: named authorized users, time-bound elevation, and logging of each use. A production server legitimately needs some administrative tooling; what it should never have is an unmanaged debugger or a database client anyone can launch.
Are PowerShell and bash in scope? We can hardly ban shells.
They are in scope as system-level scripting consoles, but the expectation is control, not prohibition. Practical measures include constrained language mode or Just Enough Administration on Windows, sudo policies with command restrictions on Linux, script-block and command logging shipped to the SIEM, and limiting unrestricted shells to administrative accounts. Auditors want to see that you have thought about who can run what at the shell level and that the activity is observable.
How is A.8.18 different from A.8.2 on privileged access rights?
A.8.2 is about the rights — who is allocated admin-level access, how it is approved, and how it is revalidated. A.8.18 is about a specific dangerous class of tools that such rights unlock, and adds tool-level obligations: an inventory of the utilities themselves, removal where unneeded, and logging of each use. The evidence differs accordingly: access provisioning records for A.8.2 versus a utility register plus execution logs for A.8.18.
We are a small SaaS company on AWS — what does this control look like for us?
Smaller and more achievable than it sounds. Replace direct SSH with SSM Session Manager or an equivalent recorded-session service, remove standing production database credentials in favor of short-lived ones issued through your identity provider or a secrets manager, restrict kubectl exec via RBAC, and keep CloudTrail and Kubernetes audit logs on. A one-page register covering those paths, plus quarterly review, will satisfy the control for most startups.
How often should we review who can use privileged utilities?
Quarterly recertification, folded into your existing privileged access review, is the common benchmark. Higher-risk environments — financial systems, anything in scope of RBI or SEBI oversight — typically add a monthly sample of utility session logs reconciled against tickets. At absolute minimum, review annually and whenever an authorized user changes role or exits, since orphaned utility authorizations are a finding auditors check for specifically.

Written By Expert Auditors

Saundhi Chauhan
Saundhi Chauhan
Lead Auditor
ISO 27001 Lead AuditorISO 27701 Lead Auditor
Surendra Pal Singh
Surendra Pal Singh
Chief Information Security Officer & Data Protection Officer
CISODPOCISAMCSEITILISO 27001 Lead AuditorISO 27701 Lead AuditorISO 42001 Lead Auditor
Last reviewed: June 2026Content verified by certified lead auditors

Get in touch

Book a free consultation or send us your requirements. We respond within 24 hours.

Quick Call

Pick a time slot

Send Requirements

Get a custom quote in 24 hours

We're Online

⚠️ Business inquiries only. Personal email addresses will be rejected.

24hr Response
Free Consultation
No Obligations