
Reproduttore per CVE-2023-3635 in Okio 2.9.0, che dimostra come il catalogo delle versioni di React Native blocchi una dipendenza vulnerabile, influenzando le app Android.
Reproducer per facebook/react-native#58148:
il file packages/react-native/gradle/libs.versions.toml di React Native fissa okhttp = "4.9.2" /
okio = "2.9.0", e okio 2.9.0 è affetto da
CVE-2023-3635 / GHSA-w33c-445m-f8w7,
corretta in okio 3.4.0.
Nessun codice dell'app è stato modificato per produrre questo. ReproducerApp è l'output completamente invariato
di npx @react-native-community/cli init, generato con [email protected] (l'attuale latest di questo template,
che corrisponde a 0.87.0-main del ramo main). La versione vulnerabile fissata proviene dal catalogo versioni di React Native stesso,
non da qualcosa che fa un'app che lo utilizza.
Per riprodurre, da ReproducerApp/android:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep -iE "okhttp|okio"
Output (esecuzione completa salvata in gradle-dependencies-output.txt):
com.squareup.okhttp3:okhttp-urlconnection:4.9.2
com.squareup.okhttp3:okhttp:4.9.2 (*)
com.squareup.okio:okio:2.9.0 (*)
com.squareup.okhttp3:okhttp:3.14.9 -> 4.9.2
com.squareup.okio:okio:2.8.0 -> 2.9.0
okhttp/okio finiscono nell'effettivo releaseRuntimeClasspath distribuito dall'app (non solo negli strumenti di test),
trascinati transitivamente tramite com.facebook.fresco:imagepipeline-okhttp3 e l'artefatto react-android di React Native stesso.
Questo è il tuo nuovo progetto Reproducer di React Native.
Questo progetto è stato creato con npx @react-native-community/cli init ed è un'app React Native vanilla.
[!IMPORTANT]
Assicurati di aver completato la Configurazione dell'ambiente React Native per avere un ambiente funzionante in locale.
Per prima cosa, dovrai avviare Metro, il bundler JavaScript che viene fornito con React Native.
Per avviare Metro, esegui il seguente comando dalla radice del tuo progetto React Native:
# usando npm
npm start
# OPPURE usando Yarn
yarn start
Lascia che Metro Bundler giri nel suo proprio terminale. Apri un nuovo terminale dalla radice del tuo progetto React Native. Esegui il seguente comando per avviare la tua app Android o iOS:
# usando npm
npm run android
# OPPURE usando Yarn
yarn android
Per prima cosa, assicurati di installare le dipendenze con:
cd ios && bundle install && bundle exec pod install
Poi puoi eseguire l'app iOS con:
# usando npm
npm run ios
# OPPURE usando Yarn
yarn ios
Se tutto è configurato correttamente, dovresti vedere la tua nuova app in esecuzione nel tuo Emulatore Android o Simulatore iOS a breve, purché tu abbia configurato correttamente l'emulatore/simulatore.
Questo è un modo per eseguire la tua app — puoi anche eseguirla direttamente da Android Studio e Xcode rispettivamente.
Ora che hai eseguito con successo l'app, modifichiamola.
Apri App.tsx nell'editor di testo che preferisci e modifica alcune righe.
Per Android: premi due volte il tasto R oppure seleziona "Reload" dal Developer Menu (Ctrl + M (su Windows e Linux) o Cmd ⌘ + M (su macOS)) per vedere le tue modifiche!
Per iOS: premi Cmd ⌘ + R nel tuo Simulatore iOS per ricaricare l'app e vedere le tue modifiche!