
Reproductor para CVE-2023-3635 en Okio 2.9.0, que demuestra cómo el catálogo de versiones de React Native fija una dependencia vulnerable, afectando a las aplicaciones de Android.
Reproductor para facebook/react-native#58148:
El propio packages/react-native/gradle/libs.versions.toml de React Native fija okhttp = "4.9.2" /
okio = "2.9.0", y okio 2.9.0 está afectado por
CVE-2023-3635 / GHSA-w33c-445m-f8w7,
corregido en okio 3.4.0.
No se editó ningún código de la aplicación para producir esto. ReproducerApp es la salida completamente sin modificar
de npx @react-native-community/cli init, generada contra [email protected] (el latest actual de esta plantilla,
que coincide con 0.87.0-main de main). La fijación vulnerable proviene del propio catálogo de versiones de React Native,
no de nada que haga una aplicación consumidora.
Para reproducirlo, desde ReproducerApp/android:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep -iE "okhttp|okio"
Salida (ejecución completa guardada en 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 terminan en el releaseRuntimeClasspath real que se envía con la aplicación (no solo en herramientas de prueba),
incorporados de forma transitiva a través de com.facebook.fresco:imagepipeline-okhttp3 y del propio artefacto react-android de React Native.
Este es tu nuevo proyecto Reproducer de React Native.
Este proyecto se ha creado con npx @react-native-community/cli init y es una aplicación vanilla de React Native.
[!IMPORTANT]
Asegúrate de haber completado la Configuración del entorno de React Native para tener un entorno de trabajo local funcional.
Primero, necesitarás iniciar Metro, el bundler de JavaScript que viene con React Native.
Para iniciar Metro, ejecuta el siguiente comando desde la raíz de tu proyecto de React Native:
# usando npm
npm start
# O usando Yarn
yarn start
Deja que Metro Bundler se ejecute en su propia terminal. Abre una nueva terminal desde la raíz de tu proyecto de React Native. Ejecuta el siguiente comando para iniciar tu aplicación de Android o iOS:
# usando npm
npm run android
# O usando Yarn
yarn android
Primero, asegúrate de instalar las dependencias con:
cd ios && bundle install && bundle exec pod install
Luego puedes ejecutar la aplicación de iOS con:
# usando npm
npm run ios
# O usando Yarn
yarn ios
Si todo está configurado correctamente, deberías ver tu nueva aplicación ejecutándose en tu Emulador de Android o Simulador de iOS en breve, siempre que hayas configurado tu emulador/simulador correctamente.
Esta es una forma de ejecutar tu aplicación: también puedes ejecutarla directamente desde Android Studio y Xcode respectivamente.
Ahora que has ejecutado la aplicación con éxito, vamos a modificarla.
Abre App.tsx en tu editor de texto preferido y edita algunas líneas.
Para Android: Pulsa la tecla R dos veces o selecciona "Reload" en el Developer Menu (Ctrl + M (en Windows y Linux) o Cmd ⌘ + M (en macOS)) para ver tus cambios.
Para iOS: Pulsa Cmd ⌘ + R en tu Simulador de iOS para recargar la aplicación y ver tus cambios.