home / skills / multiversx / mx-ai-skills / variant_analysis
This skill helps you identify similar vulnerabilities across the codebase by abstracting patterns and locating variants.
npx playbooks add skill multiversx/mx-ai-skills --skill variant_analysisReview the files below or copy the command above to add this skill to your agents.
---
name: variant_analysis
description: Finding "variants" of known bugs in other parts of the codebase.
---
# Variant Analysis
This skill helps you multiply the value of a single finding by locating similar vulnerabilities elsewhere.
## 1. The Pivot
Once you find a bug (e.g., "Missing usage of `checked_add` in function A"):
- **Abstract the Pattern**: "Arithmetic operation on user input without checks".
- **Search**: `grep` for other occurrences of the same pattern.
## 2. Common MultiversX Variants
- **Missing Payable Check**:
- Found: One endpoint accepts payment but doesn't check `call_value()`.
- Variant Search: Check ALL `#[payable]` endpoints.
- **Unbounded Iteration**:
- Found: Iterating a `VecMapper` in `compute_reward`.
- Variant Search: `grep -r "iter()"` on all mappers.
- **Async Callback Revert**:
- Found: Callback `X` doesn't revert state on failure.
- Variant Search: Check ALL `#[callback]` functions.
## 3. Automation
- Use `mvx_static_analysis` (Semgrep) to create a temporary rule for the variant.
This skill locates variants of a known bug across a codebase to multiply the impact of a single finding. It helps security engineers and developers turn one confirmed issue into a broader sweep for similar patterns, reducing missed vulnerabilities and improving code quality. The goal is fast, repeatable discovery of likely duplicates and near-misses.
Start by abstracting the root cause of the discovered bug into a concise pattern (for example, "arithmetic on user input without bounds checks" or "payable endpoints missing call_value checks"). Then run targeted searches across the repository using simple tools (grep, ripgrep) or create temporary static-analysis rules (Semgrep/mvx_static_analysis) to find other occurrences. Triage results and prioritize variants that match the original failure mode or could lead to similar exploitability.
How specific should the search pattern be?
Start broad to catch more variants, then refine to reduce false positives. Use context (annotations, function names, types) to improve precision.
When should I automate a variant search?
Automate once you confirm multiple variants or when the pattern recurs across modules; add a temporary rule to CI, then evolve it into a permanent check if useful.