Среда ОС: macOS High Sierra 10.13.4 Узел: 10.1.0 Пряжа: Не найдено npm: 5.6.0 Сторож: 4.9.0 Xcode: Xcode 9.3.1 Версия сборки 9E501 Android Studio: 3.2 AI-181.5540.7.32.5014246
Packages: (wanted => installed)
react: 16.3.1 => 16.3.1
react-native: 0.55.4 => 0.55.4
Описание Мы используем инструмент Codified Security для обнаружения проблем безопасности в подписанном apk, и мы получаем следующие проблемы безопасности:
- Приложение создает временнуюfile: Вам необходимо это исправить, потому что:
Конфиденциальные данные могут быть записаны во временный файл.Вы можете исправить это, изменив это в своем коде.
Избегайте создания временных файлов.Перечисление общей слабости
CWE-295 - Программное обеспечение не проверяет или неправильно проверяет сертификат.
Проблема была обнаружена в:
com/facebook/cache/disk/DefaultDiskStorage.java
try { paramString = new InserterImpl(paramString, paramObject.createTempFile(localFile)); return paramString; localStringBuilder.append(resourceId); localStringBuilder.append("."); return File.createTempFile(localStringBuilder.toString(), ".tmp", paramFile); }
com/facebook/react/modules/camera/ImageEditingManager.java
paramContext = localFile; } return File.createTempFile("ReactNative_cropped_image_", getFileExtensionForType(paramString), paramContext); } if ((localObject != null) && (! ((String)localObject).isEmpty())) { File localFile = ImageEditingManager.createTempFile(mContext, (String)localObject); ImageEditingManager.writeCompressedBitmapToFile(paramVarArgs, (String)localObject, localFile);
com/google/android/gms/common/data/BitmapTeleporter.java
try { localFile = File.createTempFile("teleporter", ".tmp", zali); }
Обнаружено использование TCP-сокета
Это необходимо исправить, поскольку: TCP-сокеты необходимо шифровать, в противном случае они могут быть уязвимы для следующих механизмов атаки: DoS-атаки, повторные атаки, человек посередине(MITM) атаки, подслушивание и последующее олицетворение.Настоятельно рекомендуется использовать TLS или другие методы для защиты вашего соединения.Перечисление общей слабости CWE-941 - Программное обеспечение создает канал связи, чтобы инициировать исходящий запрос субъекту, но не правильно указывает предполагаемое место назначения для этого субъекта.Более подробную информацию можно увидеть на веб-сайте CWE
Соответствие PCI.
Это приложение может нарушать PCI-DSS 2.2.3, 2.3 и 4.1.SSL и ранние TLS (версии ниже 1.2) не считаются сильной криптографией.Соответствие HIPAA.Безопасность передачи Это приложение может нарушать требования шифрования HIPAA.SSL и ранние TLS (версии ниже 1.2) не считаются сильной криптографией.Соответствие GDPR.Это приложение может нарушать требования шифрования GDPR.SSL и ранние TLS (версии ниже 1.2) не считаются сильной криптографией.Соответствие OWASP.OWASP M3: недостаточная защита транспортного уровня Это приложение может нарушать требования шифрования OWASP.
SSL и ранние TLS (версии ниже 1.2) не считаются сильной криптографией.Проблема была найдена в:
okio/Okio.java
import java.io.InterruptedIOException; import java.io.OutputStream;
import java.net.Socket;
import java.net.SocketTimeoutException;
okhttp3/Connection.java
package okhttp3; import java.net.Socket;
okhttp3/ConnectionPool.java
import java.lang.ref.Reference; import java.net.Socket;
import java.util.ArrayDeque;
okhttp3/OkHttpClient.java
import java.net.Proxy;
import java.net.ProxySelector; import java.net.Socket;
import java.net.UnknownHostException
okhttp3/interal/Internal.java
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.UnknownHostException;
okhttp3/internal/Util.java
import java.lang.reflect.Array; import java.net.IDN;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.IDN;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.Charset;
okhttp3/internal/connection/RealConnection.java
import java.net.Proxy; import java.net.Proxy.Type;
import java.net.Socket;
import java.net.SocketException
Object localObject2 = route.address();
if ((((Proxy)localObject1).type() != Proxy.Type.DIRECT)
&& (((Proxy)localObject1).type() != Proxy.Type.HTTP)) {
localObject1 = new Socket((Proxy)localObject1);
} else {
okhttp3/internal/connection/StreamAllocation.java
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import java.net.Socket;
import java.util.List;
okhttp3/internal/http2/Http2Connection.java
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Collection;
okhttp3/internal/platform/AndroidPlatform.java
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.security.cert.Certificate;
okhttp3/internal/platform/Platform.java
import java.lang.reflect.Field;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
okhttp3/internal/ws/RealWebSocket.java
import java.io.IOException;
import java.net.ProtocolException;
import java.net.Socket;
import java.util.ArrayDeque;
com/facebook/react/modules/network/TLSSocketFactory.java
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
Пожалуйста, предложите, как мы можем решить эти проблемы.
Спасибо