
Reproducer für CVE-2023-3635 in Okio 2.9.0, der zeigt, wie der Versionskatalog von React Native eine verwundbare Abhängigkeit festlegt und Android-Apps betrifft.
Reproducer für facebook/react-native#58148:
React Natives eigenes packages/react-native/gradle/libs.versions.toml pinnt okhttp = "4.9.2" /
okio = "2.9.0", und okio 2.9.0 ist von
CVE-2023-3635 / GHSA-w33c-445m-f8w7 betroffen,
behoben in okio 3.4.0.
Es wurde kein App-Code bearbeitet, um dies zu erzeugen. ReproducerApp ist die vollständig unveränderte Ausgabe
von npx @react-native-community/cli init, generiert gegen [email protected] (das aktuelle
latest dieser Vorlage, passend zu main's 0.87.0-main). Der verwundbare Pin stammt aus React Natives eigenem
Versionskatalog, nicht aus irgendetwas, das eine konsumierende App tut.
Zum Reproduzieren, von ReproducerApp/android aus:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep -iE "okhttp|okio"
Ausgabe (vollständiger Lauf gespeichert 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 landen auf dem tatsächlich ausgelieferten releaseRuntimeClasspath der App (nicht nur Test-Tooling),
transitiv eingebunden über com.facebook.fresco:imagepipeline-okhttp3 und React Natives eigenes
react-android-Artefakt.
Dies ist dein neues React Native Reproducer-Projekt.
Dieses Projekt wurde mit npx @react-native-community/cli init erstellt und ist eine Vanilla-React-Native-App.
[!IMPORTANT]
Stelle sicher, dass du das React Native - Environment Setup abgeschlossen hast, damit du lokal eine funktionierende Umgebung hast.
Zuerst musst du Metro starten, den JavaScript-Bundler, der mit React Native geliefert wird.
Um Metro zu starten, führe den folgenden Befehl vom Stammverzeichnis deines React-Native-Projekts aus:
# mit npm
npm start
# ODER mit Yarn
yarn start
Lass den Metro Bundler in seinem eigenen Terminal laufen. Öffne ein neues Terminal vom Stammverzeichnis deines React-Native-Projekts. Führe den folgenden Befehl aus, um deine Android- oder iOS-App zu starten:
# mit npm
npm run android
# ODER mit Yarn
yarn android
Stelle zuerst sicher, dass du die Abhängigkeiten installierst mit:
cd ios && bundle install && bundle exec pod install
Dann kannst du die iOS-App ausführen mit:
# mit npm
npm run ios
# ODER mit Yarn
yarn ios
Wenn alles korrekt eingerichtet ist, solltest du deine neue App kurz darauf in deinem Android-Emulator oder iOS-Simulator laufen sehen, sofern du deinen Emulator/Simulator korrekt eingerichtet hast.
Dies ist eine Möglichkeit, deine App auszuführen — du kannst sie auch direkt aus Android Studio bzw. Xcode heraus ausführen.
Nachdem du die App nun erfolgreich ausgeführt hast, lass uns sie ändern.
Öffne App.tsx in deinem bevorzugten Texteditor und bearbeite einige Zeilen.
Für Android: Drücke die R-Taste zweimal oder wähle "Reload" aus dem Developer Menu (Ctrl + M (unter Windows und Linux) oder Cmd ⌘ + M (unter macOS)), um deine Änderungen zu sehen!
Für iOS: Drücke Cmd ⌘ + R in deinem iOS-Simulator, um die App neu zu laden und deine Änderungen zu sehen!