Skip to content
cccskills
FreePublished on GitHub

decompression-bomb

Detect decompression bomb vulnerabilities where compressed input can expand to exhaust memory, targeting buffer-based decompression without size limits.

The English summary is being prepared. Showing the original description.

See how to install

Files included (4)

  • SKILL.md2.8 KB
  • references/false-positive-indicators.md959 B
  • references/poc-skeleton.md2.5 KB
  • references/sinks.md1.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Decompression Bomb Detection

When to Use

Audit archive/compression libraries, file upload handlers, content-encoding processors, and any package that decompresses user-supplied data.

Key Insight

Buffer-based decompression is vulnerable: the entire decompressed output is loaded into memory at once. A 1KB compressed payload can expand to 1GB+.

Stream-based MAY have backpressure: but only if the consumer applies it. Many stream implementations still buffer the entire output.

Process

Step 1: Find Decompression Sinks

# JavaScript
grep -rn "zlib\.gunzip\|zlib\.inflate\|zlib\.unzip\|zlib\.brotli" .
grep -rn "gunzipSync\|inflateSync\|unzipSync\|brotliDecompress" .
grep -rn "pako\|fflate\|lz-string\|snappy" .
grep -rn "decompress\|decompressSync\|uncompress" .

# Python
grep -rn "zlib\.decompress\|gzip\.decompress\|bz2\.decompress" .
grep -rn "lzma\.decompress\|snappy\.decompress" .

# Go
grep -rn "gzip\.NewReader\|zlib\.NewReader\|flate\.NewReader" .
grep -rn "compress/gzip\|compress/zlib\|compress/flate" .

Step 2: Check for Size Limits

grep -rn "maxSize\|maxOutput\|maxLength\|MAX_SIZE\|outputLimit\|sizeLimit" .
grep -rn "ratio\|compressionRatio\|maxRatio" .

Step 3: Check Buffer vs Stream

Buffer-based (VULNERABLE):

zlib.gunzipSync(input)                    // Entire output in memory
zlib.gunzip(input, (err, result) => {})   // Callback with full buffer

Stream-based (CHECK):

input.pipe(zlib.createGunzip()).pipe(output)  // Streaming, may have backpressure

Even stream-based can be vulnerable if:

  • Output is collected into a buffer: const chunks = []; stream.on('data', c => chunks.push(c))
  • No backpressure is applied
  • Consumer reads faster than it can process

Step 4: Verify Exploitability

  1. Can the attacker supply compressed data? (file upload, HTTP content-encoding, archive processing)
  2. Is there an input size limit that would prevent the bomb?
  3. Is there a decompressed size limit?
  4. Is the process memory-limited?

CVSS Guidance

  • Unauthenticated OOM crash: HIGH 7.5
  • Authenticated OOM crash: MEDIUM 6.5
  • Stream-based with memory growth: MEDIUM 5.3
  • With input size limits that bound expansion: may not be exploitable

References

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

You are helping a penetration tester exploit misconfigured Active Directory

The English summary is being prepared. Showing the original description.

ajtazer/heckit2Updated Oct 7, 2026

You are helping a penetration tester enumerate an Active Directory domain and

The English summary is being prepared. Showing the original description.

ajtazer/heckit2Updated Oct 7, 2026

You are helping a penetration tester establish persistent access in Active

The English summary is being prepared. Showing the original description.

ajtazer/heckit2Updated Oct 7, 2026

You are helping a penetration tester exploit ADCS through template/CA access

The English summary is being prepared. Showing the original description.

ajtazer/heckit2Updated Oct 7, 2026

You are helping a penetration tester establish persistence through AD CS

The English summary is being prepared. Showing the original description.

ajtazer/heckit2Updated Oct 7, 2026

You are helping a penetration tester exploit misconfigured AD CS certificate

The English summary is being prepared. Showing the original description.

ajtazer/heckit2Updated Oct 7, 2026

See all skills by ajtazer

Report a problem with this skill