googleapis / googleapis/google-cloud-node
@google-cloud/storage@7.19.0 pulls vulnerable @tootallnate/once@2.0.0 via teeny-request@9
- Lingua principale
- TypeScript
- Stelle
- 3.2k
- Fork
- 713
- Merge medio
- 2g 9h
- PR unite (30g)
- 104
Descrizione
## Summary
`@google-cloud/storage@7.19.0` (latest) transitively depends on the vulnerable
`@tootallnate/once@2.0.0` package through the following dependency chain:
```
@google-cloud/storage@7.19.0
→ teeny-request@9.x
→ http-proxy-agent@5.x
→ @tootallnate/once@2.0.0
```
## Vulnerability
`@tootallnate/once` versions prior to 3.0.1 are vulnerable to **Incorrect Control
Flow Scoping (CWE-705)**. When `AbortSignal` is used, Promises remain permanently
pending after abort, causing stalled requests and degraded availability.
## Suggested Fix
Update the `teeny-request` dependency from `^9.x` to `^10.0.0`. `teeny-request@10`
uses `http-proxy-agent@7` which does not depend on `@tootallnate/once` at all:
```
teeny-request@10.x
→ http-proxy-agent@7.x (no @tootallnate/once dependency)
```
This is the same approach taken by `@google-cloud/firestore@8.x` (via `google-gax@5`
→ `retry-request@8` → `teeny-request@10`), which successfully eliminates the
vulnerable transitive dependency.
## Context
We discovered this while updating `@google-cloud/firestore` in `firebase-admin-node`
from `^7.11.0` to `^8.0.0` to resolve the same vulnerability. The firestore package
is fixed in v8, but storage still carries the vulnerable chain.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Individua i metadati del pacchetto @google-cloud/storage e le dichiarazioni delle dipendenze per teeny-request, quindi esamina l’albero delle dipendenze risolto alla ricerca del pacchetto vulnerabile @tootallnate/once. Aggiorna l’intervallo di teeny-request come appropriato e verifica che l’albero risultante non includa più @tootallnate/once, mentre i controlli di storage continuano ad avere esito positivo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- node.js, typescript
- Ambito
- backend, security
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100