eugeneware / eugeneware/html2png
Security: vulnerable dependency image-size (CVE-2025-71329/71330) — maintained drop-in available
- Dominant language
- JavaScript
- Stars
- 29
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
## Context
This package depends on npm **`image-size`**. Upstream is **archived** and the latest release (**2.0.2**) remains affected by:
- **CVE-2025-71329** — DoS via infinite loop (JXL/HEIF/JP2 zero-size boxes)
- **CVE-2025-71330** — DoS via infinite loop (ICNS zero entry length)
`npm audit fix` will **not** switch package names automatically.
## Maintained drop-in
Community MIT fork with the same public API as `image-size@2.0.2`:
- **npm:** https://www.npmjs.com/package/image-size-next (`image-size-next@2.1.0`)
- **GitHub:** https://github.com/lcf2212dev/image-size-next
- **Announcement:** https://github.com/lcf2212dev/image-size-next/blob/main/ANNOUNCE.md
Not affiliated with the original `image-size` maintainer — honest community fork only.
## Migration options
**A — Direct dependency**
```bash
npm install image-size-next
```
```diff
- import { imageSize } from 'image-size'
+ import { imageSize } from 'image-size-next'
```
**B — Force transitive resolution (npm 8.3+)**
```json
{
"overrides": {
"image-size": "npm:image-size-next@2.1.0"
}
}
```
## Ask
Happy to open a PR for **`html2png`** if useful. Thanks for maintaining open source.
cc @eugeneware
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating html2png's image-size dependency and its usages, then compare the maintained image-size-next package with the current image-size@2.0.2 API. Check the package with npm audit and verify that the dependency resolves to the maintained fork without breaking the existing html2png behavior; done means the vulnerable dependency is no longer installed and the package still works.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- security
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100