OWASP / OWASP/openshield

Implement enterprise application identity and OAuth security rules

Open
#254 3 comments 0 reactions 1 assignee View on GitHub

@safidnadaf is already working on this.

Since Aug 14, 2026.

Dominant language
Python
Stars
57
Forks
68
Avg merge
3d 15h
Merged PRs (30d)
17

Description

Objective

Implement the Azure Entra application identity and OAuth security rule pack with evidence-backed findings and conservative handling of incomplete Microsoft Graph data.

Scope

Implement these controls:

  1. An application has high-risk Microsoft Graph permissions.
  2. An application has tenant-wide admin consent without approved justification.
  3. An unverified publisher application has privileged permissions.
  4. Application credentials have an excessive validity period.
  5. An application contains multiple active secrets without documented need.
  6. A stale application retains credentials or privileged permissions.
  7. A service principal allows access without required user assignment.
  8. A federated identity credential uses an overly broad subject or trust condition.
  9. An application permits public-client authentication unnecessarily.
  10. Application ownership contains inactive, guest, or unsuitable accounts.

Collection architecture

  • Microsoft Graph applications and service principals.
  • Microsoft Graph owners, directory roles, app-role assignments, delegated permissions, and admin consent.
  • Application passwords, certificates, federated identity credentials, publisher verification, and account status.
  • Tenant policy and documented exception metadata where required.

Required implementation behavior

  • Use paginated collectors and preserve resource identifiers and tenant context.
  • Return NOT_APPLICABLE when an application, credential type, or feature is absent.
  • Return UNKNOWN for permission failures, API errors, partial inventory, or ambiguous ownership.
  • Return FAIL only when unsafe configuration is positively evidenced.
  • Never expose secret values.
  • Include observed/expected state, evidence source and collection time, remediation, required permissions, severity, confidence, and UNKNOWN reason.

Delivery order

  1. Permissions, admin consent, publisher, and user-assignment rules.
  2. Credential age, duplicate-secret, stale-application, and ownership rules.
  3. Federated credential trust and public-client authentication rules.

Acceptance criteria

  • Every rule has collector, evaluator, remediation, documentation, and verified mappings.
  • Tests cover compliant, non-compliant, empty, paginated, malformed, stale, missing-owner, duplicate-credential, permission-failure, and API-failure cases.
  • No API or authorization error creates a false PASS or FAIL.
  • No TBD framework mappings remain.
  • Scanner, serialization, compliance scoring, and CI-equivalent tests pass.
  • An origin-branch PR references this issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.