Safeguard
Application Security•

CWE-356 UI Does Not Warn of Unsafe Actions: What to Build In

CWE-356 is a product that does something risky for the user without saying so. Here is why missing warnings matter and what a useful one looks like.

Safeguard Security Team
2 min read

CWE-356, Product UI does not Warn User of Unsafe Actions, covers an interface that acts on the user's behalf without warning them first. That makes it easier for attackers to trick people into hurting their own system.

If you build anything that opens, runs, imports or installs content from somewhere else, this one is yours.

How it happens

The software has a dangerous capability. Opening a document that carries macros. Running a file from an unknown source. The designer decided the common case should be quick, so there is no prompt.

MITRE's example is blunt: if a user downloads a file from an unknown source and tries to run it, the interface should indicate that the file is unsafe. The observed CVEs show the older version of the story. CVE-1999-1055, CVE-1999-0794 and CVE-2000-0277 all describe products that did not warn the user when a document contained certain dangerous functions or macros.

What an attacker gains

MITRE lists the consequence as non-repudiation, specifically hiding activities. The user performed the action, and nothing in the interface made the risk visible. The attacker needs only to persuade someone to open the thing.

How to find it

No detection methods are listed. Walk through your product as an attacker's target would.

  • Which features execute or import content that came from outside?
  • Is there any moment where the user is told what is about to happen?
  • Does the interface mark content from untrusted origins differently from local content?

How to fix it

The record offers no mitigation list, so these steps come from the definition.

  1. Identify actions that run code, change settings or send data on the user's behalf.
  2. Put a clear warning before those actions, in plain language that names the consequence.
  3. Default to the safe option, and make the risky choice take a deliberate step.
  4. Mark content from untrusted sources so the warning has something to key on.

Quick check

Which kind of content does MITRE point to in its observed examples?

Documents containing dangerous functions or macros, where the product opened them without telling the user.

Sources

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.