Skip to content
Back to skills

Audit Secrets Crypto

ASecurity

Audit Joomla extensions for exposed secrets, weak or predictable security tokens, unsafe password handling, and cryptographic designs that do not provide their claimed property. Use when reviewing credentials, key material, token generation and comparison, or encryption in a Joomla extension, or when explicitly invoked for a secrets and cryptography audit.

  • 6 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 6, 2026
developmentjavascriptgojavasqlgitapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add Joomla-Bible-Study/claude-skill-joomla --skill audit-secrets-crypto --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Audit Secrets Crypto?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Audit Secrets Crypto
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/joomla-bible-study-audit-secrets-crypto/badge)](https://www.skillsdirectory.com/skills/joomla-bible-study-audit-secrets-crypto)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: audit-secrets-crypto
description: Audit Joomla extensions for exposed secrets, weak or predictable security tokens, unsafe password handling, and cryptographic designs that do not provide their claimed property. Use when reviewing credentials, key material, token generation and comparison, or encryption in a Joomla extension, or when explicitly invoked for a secrets and cryptography audit.
---

# Audit Joomla secrets and cryptography

Audit distributed files and runtime flows for secret exposure, weak authentication tokens, unsafe
password handling, and cryptographic designs that do not provide the property they claim.

## Boundaries

This audit owns credentials and key material, random token generation, token comparison, password
storage, signing, encryption, and key lifecycle.

- Secrets exposed **specifically through** logs, errors, caches, exports, or response headers also
  belong to `audit-sensitive-output`. Cross-reference a shared root cause rather than duplicating it:
  a token that is predictable is this audit's, a correctly-generated token written to a log is
  theirs.
- Whether a webhook request is *authorised* belongs to `audit-authz`; whether its signature is
  *constructed and compared correctly* belongs here.

## What to inspect

- Committed passwords, API tokens, private keys, signing secrets, connection strings, and realistic
  production credentials in source, fixtures, SQL, manifests, build files, and packaged artifacts.
- Secrets embedded in URLs, browser-visible markup, JavaScript, client configuration, exception text,
  telemetry, or values readable by users who do not need them. In Joomla specifically: values reaching
  `$doc->addScriptOptions()` are in the page source for anyone who can load it.
- Tokens, nonces, reset links, API keys, and filenames generated from predictable values — time,
  counters, `rand()`, `mt_rand()`, `uniqid()`, hashes of public data, or too few random bytes. Use
  `random_bytes()` / Joomla's `UserHelper::genRandomPassword()`, not the above.
- Secret and token comparison that leaks timing or tolerates type juggling, truncation, case folding,
  or ambiguous encodings — `==` on two hashes, or a comparison that returns early. `hash_equals()` is
  the answer.
- Plaintext or reversibly encrypted passwords, obsolete password hashes, static IVs or nonces,
  unauthenticated encryption, reused nonces, hard-coded encryption keys, confused signing and
  encryption, and home-grown algorithms.
- Rotation, revocation, expiry, and key separation **where the extension's design claims those
  properties**. An extension that promises revocable API tokens and cannot revoke one is a finding.

### What is not a finding

Examples, obvious placeholders, public keys, hashes, and test-only fixtures provably excluded from
the release package. Joomla-generated secrets are not findings merely because they look like random
strings. Use entropy or format checks for discovery only, then verify the context.

**Never print a complete discovered secret.** Identify its location and type, and show at most a
minimal redacted fingerprint.

## Workflow

### Step 1 — Audit

Report findings ordered by severity:

- **CRITICAL** — a live or plausibly live privileged credential or private key in distributed or
  public material, or trivial forgery of a high-impact authentication token.
- **HIGH** — predictable reset, API, or session-equivalent tokens; plaintext password storage; or
  broken encryption/signature logic exposing protected data or authority.
- **MEDIUM** — secrets exposed to an unnecessarily broad authenticated audience, weak lifecycle
  controls, or exploitation requiring substantial samples or access.
- **LOW** — legacy or fragile cryptography with no demonstrated security impact in its current use.

For every finding state the intended security property, the material or operation involved, the
exposure or failure mode, the attacker's prerequisites, the impact, and a migration-safe mitigation —
with file and line references.

Recommend revocation or rotation where exposure may already have occurred, **without performing it**.

Report and await user feedback. Do not change code in this step.

### Step 2 — Feedback round

The user is a subject matter expert and may reclassify or overrule a finding after giving more
context.

### Step 3 — Plan fixes

Once the user is done giving feedback, check for remaining items to fix.

If none, say so and stop.

Otherwise break the fixes into smaller, individually implementable plans and write them to the
`.gitignore`'d `.plans` directory, clearing any existing files there first. Then propose running
those plans in parallel via subagents, on a cheaper/faster model — the planning work is already done.

---

*Adapted for this suite from the `audit-secrets-crypto` workflow in
[nikosdion/pm-skill-demo](https://github.com/nikosdion/pm-skill-demo), MIT licensed,
Copyright (c) 2026 Nicholas K. Dionysopoulos. The MIT permission notice accompanies this adaptation;
full text at <https://github.com/nikosdion/pm-skill-demo/blob/main/LICENSE>.*

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.