azure-apim-nv-plaintext-exposure: Azure API Management Non-Encrypted Named Values Exposure

日期: 2025-08-01 | 影响软件: Azure API Management | POC: 已公开

漏洞描述

Ensure that all the named values used to define secret data within Azure API Management policies are encrypted in order to prevent the exposure of credentials and secrets.

PoC代码[已公开]

id: azure-apim-nv-plaintext-exposure
info:
  name: Azure API Management Non-Encrypted Named Values Exposure
  author: princechaddha
  severity: high
  description: |
    Ensure that all the named values used to define secret data within Azure API Management policies are encrypted in order to prevent the exposure of credentials and secrets.
  impact: |
    Using plaintext for sensitive information in named values can expose credentials and secrets to unauthorized access, increasing the risk of data breaches.
  remediation: |
    Convert all named values storing secrets to use the secret (encrypted) type in Azure API Management to mitigate the risk of exposing sensitive information.
  reference:
    - https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-properties
  tags: cloud,devops,azure,microsoft,api-management,azure-cloud-config

flow: |
  code(1);
  for (let ServiceData of iterate(template.serviceList)) {
    ServiceData = JSON.parse(ServiceData);
    set("name", ServiceData.name);
    set("resourceGroup", ServiceData.resourceGroup);
    code(2);
    for (let namedvalue of iterate(template.nvList)) {
      set("nv", namedvalue);
      code(3);
    }
  }

self-contained: true
code:
  - engine:
      - sh
      - bash
    source: |
      az apim list --output json --query '[*].{name:name, resourceGroup:resourceGroup}'

    extractors:
      - type: json
        name: serviceList
        internal: true
        json:
          - '.[]'

  - engine:
      - sh
      - bash
    source: |
      az apim nv list --service-name $name --resource-group $resourceGroup --query '[].name'

    extractors:
      - type: json
        name: nvList
        internal: true
        json:
          - '.[]'

  - engine:
      - sh
      - bash
    source: |
      az apim nv show --service-name $name --resource-group $resourceGroup --named-value-id $nv --query 'secret'

    matchers-condition: and
    matchers:
      - type: word
        words:
          - "false"

    extractors:
      - type: dsl
        dsl:
          - 'name + " in " + resourceGroup + " has named values exposed in plaintext"'
# digest: 490a0046304402206aa6631506699e9fb29cfd960d75b4e8aa09662033b723a5771e4b11a0611696022062815277722a6d88063a4f8ffa55f37c16b952fd73c8af48a40b20313972542c:922c64590222798bb761d5b6d8e72950

相关漏洞推荐