
Reprodutor para CVE-2023-3635 no Okio 2.9.0, demonstrando como o catálogo de versões do React Native fixa uma dependência vulnerável, afetando aplicativos Android.
Reprodutor para facebook/react-native#58148:
o próprio packages/react-native/gradle/libs.versions.toml do React Native fixa okhttp = "4.9.2" /
okio = "2.9.0", e o okio 2.9.0 é afetado por
CVE-2023-3635 / GHSA-w33c-445m-f8w7,
corrigido no okio 3.4.0.
Nenhum código de aplicação foi editado para produzir isto. ReproducerApp é a saída completamente inalterada
de npx @react-native-community/cli init, gerada contra [email protected] (o latest atual deste
template, correspondente ao 0.87.0-main do main). A versão vulnerável fixada vem do próprio catálogo
de versões do React Native, não de qualquer coisa que uma aplicação consumidora faça.
Para reproduzir, a partir de ReproducerApp/android:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep -iE "okhttp|okio"
Saída (execução completa salva em 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 chegam ao releaseRuntimeClasspath real enviado pela aplicação (não apenas ferramentas de teste),
puxados transitivamente via com.facebook.fresco:imagepipeline-okhttp3 e o próprio artefacto
react-android do React Native.
Este é o seu novo projeto React Native Reproducer.
Este projeto foi criado com npx @react-native-community/cli init e é uma aplicação React Native vanilla.
[!IMPORTANT]
Certifique-se de que concluiu a Configuração do Ambiente React Native para ter um ambiente de trabalho funcional localmente.
Primeiro, precisará de iniciar o Metro, o bundler JavaScript que vem com o React Native.
Para iniciar o Metro, execute o seguinte comando a partir da raiz do seu projeto React Native:
# usando npm
npm start
# OU usando Yarn
yarn start
Deixe o Metro Bundler a correr no seu próprio terminal. Abra um novo terminal a partir da raiz do seu projeto React Native. Execute o seguinte comando para iniciar a sua aplicação Android ou iOS:
# usando npm
npm run android
# OU usando Yarn
yarn android
Primeiro, certifique-se de que instala as dependências com:
cd ios && bundle install && bundle exec pod install
Depois pode executar a aplicação iOS com:
# usando npm
npm run ios
# OU usando Yarn
yarn ios
Se tudo estiver configurado corretamente, deverá ver a sua nova aplicação a correr no seu Emulador Android ou Simulador iOS em breve, desde que tenha configurado o seu emulador/simulador corretamente.
Esta é uma forma de executar a sua aplicação — também pode executá-la diretamente a partir do Android Studio e do Xcode, respetivamente.
Agora que executou a aplicação com sucesso, vamos modificá-la.
Abra App.tsx no seu editor de texto preferido e edite algumas linhas.
Para Android: Prima a tecla R duas vezes ou selecione "Reload" no Developer Menu (Ctrl + M (no Windows e Linux) ou Cmd ⌘ + M (no macOS)) para ver as suas alterações!
Para iOS: Prima Cmd ⌘ + R no seu Simulador iOS para recarregar a aplicação e ver as suas alterações!