ghsa-9c4x-5hgq-q3wh
Vulnerability from github
Published
2021-12-08 19:52
Modified
2021-12-14 15:32
Summary
Instance config inline secret exposure in Grafana
Details

Impact

Some inline secrets are exposed in plaintext over the Grafana Agent HTTP server:

  • Inline secrets for metrics instance configs in the base YAML file are exposed at /-/config
  • Inline secrets for integrations are exposed at /-/config
  • Inline secrets for Consul ACL tokens and ETCD basic auth when configured for the scraping service at /-/config.
  • Inline secrets for the Kafka receiver for OpenTelemetry-Collector tracing at /-/config.
  • Inline secrets for metrics instance configs loaded from the scraping service are exposed at /agent/api/v1/configs/{name}.

Inline secrets will be exposed to anyone being able to reach these endpoints.

Secrets found in these sections are used for:

  • Delivering metrics to a Prometheus Remote Write system
  • Authenticating against a system for discovering Prometheus targets
  • Authenticating against a system for collecting metrics (scrape_configs and integrations)
  • Authenticating against a Consul or ETCD for storing configurations to distribute in scraping service mode
  • Authenticating against Kafka for receiving traces

Non-inlined secrets, such as *_file-based secrets, are not impacted by this vulnerability.

Patches

Download v0.20.1 or any version past v0.21.2 to patch Grafana Agent. These patches obfuscate the listed impacted secrets from the vulnerable endpoints.

The patches also disable the endpoints by default. Pass the command-line flag --config.enable-read-api to opt-in and re-enable the endpoints.

Workarounds

If for some reason you cannot upgrade, use non-inline secrets where possible. Not all configuration options may have a non-inline equivalent.

You also may desire to restrict API access to Grafana Agent, with some combination of:

  • Restrict network interfaces Grafana Agent listens on through http_listen_address in the server block. 127.0.0.1 is the most restrictive, 0.0.0.0 is the default.
  • Configure Grafana Agent to use HTTPS with client authentication.
  • Use firewall rules to restrict external access to Grafana Agent's API.
Show details on source website


{
  "affected": [
    {
      "package": {
        "ecosystem": "Go",
        "name": "github.com/grafana/agent"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0.14.0"
            },
            {
              "fixed": "0.21.2"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2021-41090"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-200",
      "CWE-312"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2021-12-08T19:32:31Z",
    "nvd_published_at": "2021-12-08T17:15:00Z",
    "severity": "MODERATE"
  },
  "details": "### Impact\nSome inline secrets are exposed in plaintext over the Grafana Agent HTTP server:\n\n* Inline secrets for metrics instance configs in the base YAML file are exposed at `/-/config` \n* Inline secrets for integrations are exposed at `/-/config`\n* Inline secrets for Consul ACL tokens and ETCD basic auth when configured for the scraping service at `/-/config`.\n* Inline secrets for the Kafka receiver for OpenTelemetry-Collector tracing at `/-/config`.\n* Inline secrets for metrics instance configs loaded from the scraping service are exposed at `/agent/api/v1/configs/{name}`.\n\nInline secrets will be exposed to anyone being able to reach these endpoints.\n\nSecrets found in these sections are used for:\n\n* Delivering metrics to a Prometheus Remote Write system \n* Authenticating against a system for discovering Prometheus targets \n* Authenticating against a system for collecting metrics (scrape_configs and integrations)\n* Authenticating against a Consul or ETCD for storing configurations to distribute in scraping service mode \n* Authenticating against Kafka for receiving traces\n\nNon-inlined secrets, such as `*_file`-based secrets, are not impacted by this vulnerability. \n\n### Patches\n\nDownload [v0.20.1](https://github.com/grafana/agent/releases/tag/v0.20.1) or any version past [v0.21.2](https://github.com/grafana/agent/releases/tag/v0.21.2) to patch Grafana Agent. These patches obfuscate the listed impacted secrets from the vulnerable endpoints.\n\nThe patches also disable the endpoints by default. Pass the command-line flag `--config.enable-read-api` to opt-in and re-enable the endpoints.  \n \n### Workarounds\nIf for some reason you cannot upgrade, use non-inline secrets where possible. Not all configuration options may have a non-inline equivalent.\n\nYou also may desire to restrict API access to Grafana Agent, with some combination of:\n\n* Restrict network interfaces Grafana Agent listens on through `http_listen_address` in the `server` block. `127.0.0.1` is the most restrictive, `0.0.0.0` is the default. \n* Configure Grafana Agent to use HTTPS with client authentication. \n* Use firewall rules to restrict external access to Grafana Agent\u0027s API.",
  "id": "GHSA-9c4x-5hgq-q3wh",
  "modified": "2021-12-14T15:32:21Z",
  "published": "2021-12-08T19:52:40Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/grafana/agent/security/advisories/GHSA-9c4x-5hgq-q3wh"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2021-41090"
    },
    {
      "type": "WEB",
      "url": "https://github.com/grafana/agent/pull/1152"
    },
    {
      "type": "WEB",
      "url": "https://github.com/grafana/agent/commit/a5479755e946e5c7cddb793ee9adda8f5692ba11"
    },
    {
      "type": "WEB",
      "url": "https://github.com/grafana/agent/commit/af7fb01e31fe2d389e5f1c36b399ddc46b412b21"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/grafana/agent"
    },
    {
      "type": "WEB",
      "url": "https://github.com/grafana/agent/releases/tag/v0.20.1"
    },
    {
      "type": "WEB",
      "url": "https://github.com/grafana/agent/releases/tag/v0.21.2"
    },
    {
      "type": "WEB",
      "url": "https://security.netapp.com/advisory/ntap-20211229-0004"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "Instance config inline secret exposure in Grafana"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.