diff --git a/TLS-Scanner-Core/src/main/java/de/rub/nds/tlsscanner/core/probe/TlsProbe.java b/TLS-Scanner-Core/src/main/java/de/rub/nds/tlsscanner/core/probe/TlsProbe.java index 7b0eb32aa..1a5212880 100644 --- a/TLS-Scanner-Core/src/main/java/de/rub/nds/tlsscanner/core/probe/TlsProbe.java +++ b/TLS-Scanner-Core/src/main/java/de/rub/nds/tlsscanner/core/probe/TlsProbe.java @@ -33,8 +33,25 @@ public final void executeState(State... states) { } public final void executeState(Iterable states) { - parallelExecutor.bulkExecuteStateTasks(states); - extractStats(states); + try { + parallelExecutor.bulkExecuteStateTasks(states); + extractStats(states); + } catch (de.rub.nds.tlsattacker.core.exceptions.TransportHandlerConnectException e) { + LOGGER.warn("Connection failed during probe execution: {}", e.getMessage()); + // Don't propagate the exception, allowing the scan to continue with other probes + } catch (RuntimeException e) { + if (e.getMessage() != null + && e.getMessage().contains("Cannot add Tasks to already shutdown executor")) { + LOGGER.warn( + "ParallelExecutor was shutdown during execution, skipping remaining tasks"); + } else { + LOGGER.error("Exception during probe execution: {}", e.getMessage(), e); + } + // Log the exception but don't crash the scanner + } catch (Exception e) { + LOGGER.error("Exception during probe execution: {}", e.getMessage(), e); + // Log the full exception but don't crash the scanner + } } @Override diff --git a/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/Main.java b/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/Main.java index 9e2c5f657..c1c64b8a0 100644 --- a/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/Main.java +++ b/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/Main.java @@ -53,6 +53,16 @@ public static void main(String[] args) throws IOException { .getFullReport()); } catch (ConfigurationException e) { LOGGER.error("Encountered a ConfigurationException aborting.", e); + } catch (RuntimeException e) { + if (e.getCause() + instanceof + de.rub.nds.tlsattacker.core.exceptions.TransportHandlerConnectException) { + LOGGER.error( + "Scanner terminated due to connection failure: {}", + e.getCause().getMessage()); + } else { + LOGGER.error("Scanner terminated unexpectedly", e); + } } } catch (ParameterException e) { LOGGER.error("Could not parse provided parameters", e); diff --git a/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/probe/bleichenbacher/BleichenbacherAttacker.java b/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/probe/bleichenbacher/BleichenbacherAttacker.java index 1e047909c..d5c6fdf12 100644 --- a/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/probe/bleichenbacher/BleichenbacherAttacker.java +++ b/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/probe/bleichenbacher/BleichenbacherAttacker.java @@ -230,6 +230,12 @@ private PublicKeyContainer getServerPublicKey() { try { publicKey = CertificateFetcher.fetchServerPublicKey(tlsConfig); } catch (CertificateParsingException ignored) { + } catch (de.rub.nds.tlsattacker.core.exceptions.TransportHandlerConnectException e) { + LOGGER.warn("Unable to connect to server for public key retrieval: {}", e.getMessage()); + return null; + } catch (Exception e) { + LOGGER.warn("Failed to retrieve server public key: {}", e.getMessage()); + return null; } if (publicKey == null) { LOGGER.debug("Could not retrieve PublicKey from Server - is the Server running?");