Safeguard
Security Guides•

Is catalog-info.yaml trusted input for your Backstage catalog?

The catalog continuously ingests entity descriptors from configured sources. Anyone who can write to those sources can shape what the portal shows.

Safeguard Security Team
4 min read

Treat it as input from whoever can write to the repository, not as truth. The Backstage catalog continuously ingests entity descriptor YAML from configured sources and stores it. If a source is writable by many people, many people can influence the catalog's owners, links and relationships that others rely on.

How the catalog gets its data

The documentation says Backstage natively imports catalog data through entity descriptor YAML files, and that the catalog backend continuously ingests data from configured sources and stores it in its database. Entities can be added in static configuration, registered through the catalog import plugin, or discovered from a GitHub organization. Larger setups sync from another system through entity providers, or enrich entities with custom processors.

That design is convenient. It also means the catalog is a downstream consumer of whatever those sources contain.

What an attacker or a careless commit can change

Field or featureWhy it matters
OwnerTeams rely on it to route incidents and approvals
Links and annotationsPlugins read annotations to decide which dashboards, repos or pipelines to query
Relationships and dependenciesUsed to understand blast radius
Lifecycle and typeUsed to decide what is production
Registered locationsCan point the catalog at more files to ingest

None of those is code execution by itself. They are trust inputs. A plugin that takes an annotation value and uses it in a request, a path or a query now has attacker-influenced data flowing through it, which is the usual reason to ask whether plugin authors validated it.

Decisions to make

  1. Who may add or change descriptors? In most organizations, any developer with repository write access can. If catalog ownership drives incident routing, require review on those files through code owners.
  2. Which locations does the catalog ingest? Prefer explicit, bounded sources. Broad organization discovery is useful and also means every repository in scope can add entities.
  3. Are annotations treated as untrusted by plugins? Read how each installed plugin uses them.
  4. Is the catalog the source of truth for anything security relevant, such as which services are internet facing? If yes, verify against a second source.
  5. Can you spot drift? Compare the catalog against your cloud accounts and source host periodically.

A short review routine

Once a quarter, export the catalog and sort by oldest update. Entities nobody has touched for a long time are either stable or abandoned, and you want to know which. Check for services with no owner or with an owner team that no longer exists. Look for entities whose repository link no longer resolves. These are the cases that cost time during an incident.

If you use entity providers or processors, treat them as backend code. The same review that applies to scaffolder actions applies to them: dependency list, network calls, credentials.

Why this belongs in a security review

Developer portals are used when people are under pressure. During an incident, the owner field decides who gets paged and the dependency links decide where you look. Wrong data wastes the first minutes. That is a security and resilience concern, even when nobody has attacked anything.

Where Safeguard fits

Safeguard's asset discovery and SBOM and dependency scanning give you a second view of what exists and what it depends on, which is useful when checking a catalog against reality. See gold.safeguard.sh/scan for the free scan.

Quick check

Is the catalog database the source of truth?

It is a store built from configured sources. The truth lives in those sources, so protect them accordingly.

Does a bad descriptor mean code execution?

Not by itself. The risk is that plugins and people trust its fields, so validate how plugins use annotations and who can edit descriptors.

Sources

Last reviewed: 19 October 2026.

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.