googleapis / googleapis/google-cloud-node

@google-cloud/storage@7.19.0 pulls vulnerable @tootallnate/once@2.0.0 via teeny-request@9

Aperta
#7,979 3 commenti 2 reazioni 0 assegnatari Vedi su GitHub
api: storage priority: p2 type: process
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.