Claude Code Plugins

Community-maintained marketplace

Feedback

Timing attacks and other side-channel exploitation techniques

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name side-channels
description Timing attacks and other side-channel exploitation techniques

Side-Channel Attacks

Concept: Extract secrets by observing indirect signals (timing, errors, etc.).


Timing Side-Channel

Signals:

  • Comparison that exits early on mismatch
  • Observable response time differences
  • Per-character validation

Why it works:

// Vulnerable: early exit
for (int i = 0; i < len; i++) {
    if (input[i] != secret[i])
        return FAIL;  // Time varies by position
}

Attack Recipe

1. Establish baseline:

Measure response time for known-wrong inputs
Calculate average/median for comparison

2. Byte-by-byte oracle:

For each position:
  For each candidate byte:
    Measure response time (multiple samples)
  Select byte with longest average time

3. Noise reduction:

  • Multiple samples per candidate
  • Use median (more robust than mean)
  • Remove outliers
  • Run from same network as target

Strategies

Local binary:

  • Minimal noise
  • Direct timing measurement
  • Few samples needed

Remote server:

  • Network jitter requires many samples
  • Statistical analysis helps
  • Median over 20-100 samples

Rate limited:

  • Add delays between attempts
  • Prioritize likely characters
  • Parallel connections if allowed

Other Oracles

Error-based:

Different errors reveal different failure modes
- "Invalid length" vs "Bad character" vs "Wrong value"
Each error type leaks information

Padding oracle:

Decrypt ciphertext by observing padding errors
Valid vs invalid padding reveals information

Pitfalls

Issue Solution
High jitter More samples, statistical methods
Flat timing Target uses constant-time comparison
Rate limits Slow down, parallelize
Tiny differences Higher precision timer, more samples

Detection

If all inputs produce same timing regardless of correctness:

  • Target uses constant-time comparison
  • Timing attack won't work
  • Need different approach