From c020bd318ac5e672a645913b87f19919848fd5ff Mon Sep 17 00:00:00 2001 From: Olivier Date: Sun, 23 Aug 2026 10:44:02 +0200 Subject: [PATCH] Fix scan timeouts and privileged shutdown --- dist/librenet-scanner_0.1.0_all.deb | Bin 23324 -> 0 bytes dist/librenet-scanner_1.0.0_amd64.deb | Bin 0 -> 80968 bytes pyproject.toml | 3 + src/librenet_scanner/privileged_helper.py | 9 ++- src/librenet_scanner/privileges.py | 26 ++++++-- src/librenet_scanner/scanner.py | 76 ++++++++++++++-------- src/librenet_scanner/ui.py | 12 +++- tests/test_v0419.py | 2 +- tests/test_v0421.py | 1 + tests/test_v0423.py | 24 +++++++ 10 files changed, 116 insertions(+), 37 deletions(-) delete mode 100644 dist/librenet-scanner_0.1.0_all.deb create mode 100644 dist/librenet-scanner_1.0.0_amd64.deb diff --git a/dist/librenet-scanner_0.1.0_all.deb b/dist/librenet-scanner_0.1.0_all.deb deleted file mode 100644 index e7c124c374d6b0c99d918ef9e10b51cec3940627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23324 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 diff --git a/dist/librenet-scanner_1.0.0_amd64.deb b/dist/librenet-scanner_1.0.0_amd64.deb new file mode 100644 index 0000000000000000000000000000000000000000..ac490e3efc404e72639fed00d87338f7463b4bcd GIT binary patch literal 80968 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

9mD?;yhirP`lVAg9Lx z0sB0>#P{k106Rd$ztQf?_m0j!77 z(YH;TtRCi;Ki`HQhyjNk$=V==M}CQEF6YJEcKR9q&Gb{NE3j)>m;lldkk)9X*tSgq zOPZ7Q@ApHRW$AQ%E|d^e@mCoJRs%3k*ykqdr0(;2_#oxSA`HN)>6q9Z2n8x1%STQQ znX`}*24I+zj9CAbBbf($5&@RNB zabGL-gDJ9r+B#^75qsWeJP73{-#@YXIsi8-#fMOGHJ3{r+D5kLmjg| zl8Ny;7KwU9^F8CZ=?P=++kB;PL5>`#nSaTXZO&=xR2vT9T5@!O!pJ7)BR9+m&w=u4asQnK0%0R7>{FR}Ps9v0o;MpSaR1I7i8}CvCyBaqE zIQfYW?|2ni$x+EcSW<$gG6+z#AOT%;muRg3?|>4llIJTb@EGY@P>3nE)-XpxX2tgC z;Y1++w+NV_e22*GSBl)Sj2%G{Sb+E1D21dn;LFOkH6CK3nvP9xmBw#T#&o4$H8Pe2 z+rnbGsf=Mi+PX$eGM&%M{T_j_7nf*$W*r986?DzB46g}@SQ`|_4VUO0D%3;$T7EZ|+ zVb&|%rCcb9)5)9-d`ka6p-U(i$l-?`L>lq-etq?LF1_d~X&NLB&GPyCyV-p_D6Hp?X1NXQAJwj%n)`XGsx(}`t!FX

H=vJT{kEaPJcc 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 WfWRAExN)Vi#Ao{g000001X)^9f2Fnn literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 7d88c88..021046f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,3 +19,6 @@ package-dir = {"" = "src"} [tool.setuptools.packages.find] where = ["src"] + +[tool.pytest.ini_options] +pythonpath = ["src"] diff --git a/src/librenet_scanner/privileged_helper.py b/src/librenet_scanner/privileged_helper.py index ccaecaf..fb1e845 100644 --- a/src/librenet_scanner/privileged_helper.py +++ b/src/librenet_scanner/privileged_helper.py @@ -135,7 +135,8 @@ def command_for(operation: str, args: list[str]) -> list[str]: target = validate_target(args[0]) return [ nmap(), "-sS", "-sV", "-O", "--osscan-guess", "--version-light", - "--open", "-T4", "--top-ports", "100", "-oX", "-", target, + "--open", "-T4", "--max-retries", "1", "--host-timeout", "60s", + "--top-ports", "100", "-oX", "-", target, ] if operation == "nmap-deep-hosts": @@ -145,7 +146,8 @@ def command_for(operation: str, args: list[str]) -> list[str]: hosts = validate_host_list(args) return [ nmap(), "-Pn", "-n", "-sS", "-sV", "-O", "--osscan-guess", - "--version-light", "--open", "-T4", "--top-ports", "1000", + "--version-light", "--open", "-T4", "--max-retries", "1", + "--host-timeout", "60s", "--top-ports", "1000", "-oX", "-", *hosts, ] @@ -155,7 +157,8 @@ def command_for(operation: str, args: list[str]) -> list[str]: host = validate_target(args[0], network_allowed=False) return [ nmap(), "-Pn", "-n", "-sS", "-sV", "-O", "--osscan-guess", "--version-light", - "--open", "-T4", "--top-ports", "1000", "-oX", "-", host, + "--open", "-T4", "--max-retries", "1", "--host-timeout", "60s", + "--top-ports", "1000", "-oX", "-", host, ] raise ValueError("Opération privilégiée non autorisée") diff --git a/src/librenet_scanner/privileges.py b/src/librenet_scanner/privileges.py index 572ffb9..9603eac 100644 --- a/src/librenet_scanner/privileges.py +++ b/src/librenet_scanner/privileges.py @@ -1,7 +1,6 @@ from __future__ import annotations import os -import shutil from dataclasses import dataclass @@ -19,14 +18,29 @@ class PrivilegeDiagnostic: def find_pkexec() -> str | None: - return shutil.which("pkexec") or ("/usr/bin/pkexec" if os.path.isfile("/usr/bin/pkexec") else None) + path = "/usr/bin/pkexec" + try: + info = os.stat(path) + except OSError: + return None + if os.path.isfile(path) and os.access(path, os.X_OK) and info.st_uid == 0 and not (info.st_mode & 0o022): + return path + return None def find_helper() -> str | None: - override = os.environ.get("LIBRENET_PRIVILEGED_HELPER", "").strip() - if override and os.path.isfile(override) and os.access(override, os.X_OK): - return override - if os.path.isfile(HELPER_PATH) and os.access(HELPER_PATH, os.X_OK): + # Le chemin du helper est une frontière de privilèges : ne pas permettre à + # l'environnement de l'utilisateur de le remplacer par un exécutable arbitraire. + try: + info = os.stat(HELPER_PATH) + except OSError: + return None + if ( + os.path.isfile(HELPER_PATH) + and os.access(HELPER_PATH, os.X_OK) + and info.st_uid == 0 + and not (info.st_mode & 0o022) + ): return HELPER_PATH return None diff --git a/src/librenet_scanner/scanner.py b/src/librenet_scanner/scanner.py index 640a8c8..67c8cb6 100644 --- a/src/librenet_scanner/scanner.py +++ b/src/librenet_scanner/scanner.py @@ -34,6 +34,9 @@ NAABU_BATCH_TIMEOUT_SECONDS = 10.0 NAABU_CONNECT_TIMEOUT = "800ms" NAABU_RATE = "2500" NAABU_CONCURRENCY = "100" +RAPID_DISCOVERY_MAX_SECONDS = 45.0 +DEEP_SCAN_MAX_SECONDS = 180.0 +HOST_SCAN_MAX_SECONDS = 60.0 COMMON_PORTS = ( "21,22,23,25,53,80,110,135,139,143,389,443,445,465,515,587,631,636,993,995," @@ -589,7 +592,7 @@ class ScanWorker(QThread): if not ips: return [] prefix = "Base Approfondi" if self.request.profile == "Approfondi" else "Standard" - suffix = " — REPLI Naabu" if fallback else " — moteur adaptatif" + suffix = " — REPLI Nmap" if fallback else " — moteur adaptatif" if self.request.privileged: args = privileged_command("nmap-standard", *ips) label = f"{prefix} — ports Nmap SYN (Admin){suffix}…" @@ -753,14 +756,13 @@ class ScanWorker(QThread): def _discover_hosts(self, *, start_percent: int = 4, end_percent: int = 52) -> set[str]: """Découverte robuste et additive des hôtes. - IMPORTANT : le mode administrateur ne remplace plus la découverte normale. - Il ajoute ARP/Nmap privilégiés aux résultats non privilégiés. Ainsi activer - les privilèges ne peut pas réduire le nombre d'hôtes détectés. + IMPORTANT : le mode administrateur ne remplace pas la découverte normale. + Il ajoute les informations ARP privilégiées aux résultats Nmap utilisateur, + sans relancer une seconde découverte complète. """ span = max(20, end_percent - start_percent) arp_end = start_percent + round(span * 0.20) normal_end = start_percent + round(span * 0.62) - admin_end = start_percent + round(span * 0.84) neighbor_percent = start_percent + round(span * 0.94) local_hosts = self._emit_local_host() @@ -777,34 +779,24 @@ class ScanWorker(QThread): "Découverte Nmap utilisateur échouée", start_percent=arp_end, end_percent=normal_end, + timeout_seconds=min( + RAPID_DISCOVERY_MAX_SECONDS, + max(12.0, 8.0 + len(target_ipv4_hosts(self.request.target)) / 32.0), + ), ) if self.isInterruptionRequested(): return union_host_ips(local_hosts, arp_hosts, normal_hosts) - privileged_hosts: list[Host] = [] - if self.request.privileged and not self.isInterruptionRequested(): - try: - cmd = privileged_command("nmap-discover", self.request.target) - except RuntimeError as exc: - self.warning.emit(str(exc)) - else: - privileged_hosts = self._nmap_optional( - cmd, - "Découverte des hôtes — Nmap (Admin complémentaire)…", - "Découverte Nmap Admin complémentaire échouée", - start_percent=normal_end, - end_percent=admin_end, - ) - - known_ips = union_host_ips(arp_hosts, normal_hosts, privileged_hosts) + # Le mode Admin enrichit la découverte locale via ARP, mais ne relance pas + # une seconde découverte Nmap identique. Les privilèges sont réservés aux + # opérations qui en ont réellement besoin (SYN, OS et ARP). + known_ips = union_host_ips(arp_hosts, normal_hosts) known_ips.update(union_host_ips(local_hosts)) if self.isInterruptionRequested(): return known_ips self._neighbor_hosts(known_ips, percent=neighbor_percent) details = f"local {len(local_hosts)} · ARP {len(arp_hosts)} · Nmap {len(normal_hosts)}" - if self.request.privileged: - details += f" · admin {len(privileged_hosts)}" self._set_progress(end_percent, f"Découverte : {len(known_ips)} hôte(s) unique(s) — {details}") return known_ips @@ -838,12 +830,18 @@ class ScanWorker(QThread): else: deep_args = [ "nmap", "-Pn", "-n", "-sT", "-sV", "--version-light", - "--open", "-T4", "--top-ports", "1000", + "--open", "-T4", "--max-retries", "1", "--host-timeout", "60s", + "--top-ports", "1000", "-oX", "-", *ips, ] deep_label = "Enrichissement approfondi — Nmap TCP et services…" + deep_timeout = min( + DEEP_SCAN_MAX_SECONDS, + max(90.0, 30.0 + len(ips) * 1.5), + ) deep_hosts = self._nmap( - deep_args, deep_label, start_percent=62, end_percent=96 + deep_args, deep_label, start_percent=62, end_percent=96, + timeout_seconds=deep_timeout, ) if deep_hosts: self.hosts_found.emit(deep_hosts) @@ -927,6 +925,7 @@ class HostScanWorker(QThread): else: args = [ "nmap", "-Pn", "-n", "-sT", "-sV", "--version-light", "--open", "-T4", + "--max-retries", "1", "--host-timeout", "60s", "--top-ports", "1000", "-oX", "-", self.ip, ] try: @@ -961,10 +960,16 @@ class HostScanWorker(QThread): for reader in readers: reader.start() stop_sent = False + started = time.monotonic() + timed_out = False while self._proc.poll() is None: if self.isInterruptionRequested() and not stop_sent: self.stop() stop_sent = True + elif not stop_sent and time.monotonic() - started >= HOST_SCAN_MAX_SECONDS: + timed_out = True + self.stop() + stop_sent = True try: self._proc.wait(timeout=0.10) except subprocess.TimeoutExpired: @@ -973,7 +978,26 @@ class HostScanWorker(QThread): reader.join(timeout=1.0) stdout, stderr = "".join(stdout_parts), "".join(stderr_parts) else: - stdout, stderr = self._proc.communicate() + timed_out = False + try: + stdout, stderr = self._proc.communicate(timeout=HOST_SCAN_MAX_SECONDS) + except subprocess.TimeoutExpired: + timed_out = True + try: + os.killpg(self._proc.pid, signal.SIGTERM) + except (ProcessLookupError, PermissionError, OSError): + pass + try: + stdout, stderr = self._proc.communicate(timeout=1.5) + except subprocess.TimeoutExpired: + try: + os.killpg(self._proc.pid, signal.SIGKILL) + except (ProcessLookupError, PermissionError, OSError): + pass + stdout, stderr = self._proc.communicate() + if timed_out: + self.failed.emit(f"Délai maximal dépassé ({HOST_SCAN_MAX_SECONDS:.0f} s).") + return if self.isInterruptionRequested(): return if self._proc.returncode != 0: diff --git a/src/librenet_scanner/ui.py b/src/librenet_scanner/ui.py index d931bf3..54f65a5 100644 --- a/src/librenet_scanner/ui.py +++ b/src/librenet_scanner/ui.py @@ -136,8 +136,9 @@ class PrivilegeAuthWorker(QThread): encoding="utf-8", errors="replace", check=False, + timeout=30.0, ) - except (OSError, RuntimeError) as exc: + except (OSError, RuntimeError, subprocess.TimeoutExpired) as exc: self.result.emit(False, str(exc)) return if proc.returncode == 0: @@ -1039,6 +1040,15 @@ class MainWindow(QMainWindow): self.statusBar().showMessage("Disposition réinitialisée", 3000) def closeEvent(self, event) -> None: + # Une fenêtre Qt ne doit pas détruire un QThread encore actif. Les workers + # arrêtent aussi leur groupe de processus, y compris le helper pkexec. + self.stop_scan() + workers = [self.worker, self.host_worker, self.auth_worker, self.vendor_lookup_worker] + for worker in workers: + if worker and worker.isRunning() and not worker.wait(3500): + self.statusBar().showMessage("Arrêt du scan encore en cours…", 5000) + event.ignore() + return self._save_ui_layout() super().closeEvent(event) diff --git a/tests/test_v0419.py b/tests/test_v0419.py index ed72036..8f9f310 100644 --- a/tests/test_v0419.py +++ b/tests/test_v0419.py @@ -37,7 +37,7 @@ class EngineStatus0419Tests(unittest.TestCase): self.assertIn("découverte rapide Nmap/ARP", source) self.assertIn("ports Naabu SYN (Admin)", source) self.assertIn("ports Nmap SYN (Admin)", source) - self.assertIn("REPLI Naabu", source) + self.assertIn("REPLI Nmap", source) if __name__ == "__main__": diff --git a/tests/test_v0421.py b/tests/test_v0421.py index d3ee6bb..a063947 100644 --- a/tests/test_v0421.py +++ b/tests/test_v0421.py @@ -112,6 +112,7 @@ class StandardBehavior0421Tests(unittest.TestCase): args = worker._nmap.call_args.args[0] self.assertIn("-sV", args) self.assertIn("1000", args) + self.assertGreaterEqual(worker._nmap.call_args.kwargs["timeout_seconds"], 90.0) class Diagnostics0421Tests(unittest.TestCase): diff --git a/tests/test_v0423.py b/tests/test_v0423.py index ed050b0..0a692c5 100644 --- a/tests/test_v0423.py +++ b/tests/test_v0423.py @@ -138,6 +138,30 @@ class PerformancePipeline0423Tests(unittest.TestCase): self.assertEqual(cmd[:6], ["nmap", "-sn", "-n", "-T4", "--max-retries", "1"]) self.assertIsNotNone(worker._nmap.call_args.kwargs["timeout_seconds"]) + def test_rapid_discovery_has_a_wall_clock_timeout(self): + worker = self.worker() + worker.request.profile = "Rapide" + worker._emit_local_host = Mock(return_value=[]) + worker._emit_arp = Mock(return_value=[]) + worker._neighbor_hosts = Mock(return_value=[]) + worker._set_progress = Mock() + worker._nmap_optional = Mock(return_value=[]) + worker._discover_hosts(start_percent=4, end_percent=96) + timeout = worker._nmap_optional.call_args.kwargs["timeout_seconds"] + self.assertIsNotNone(timeout) + self.assertLessEqual(timeout, scanner.RAPID_DISCOVERY_MAX_SECONDS) + + def test_admin_rapid_discovery_does_not_repeat_nmap(self): + worker = self.worker(privileged=True) + worker.request.profile = "Rapide" + worker._emit_local_host = Mock(return_value=[]) + worker._emit_arp = Mock(return_value=[]) + worker._neighbor_hosts = Mock(return_value=[]) + worker._set_progress = Mock() + worker._nmap_optional = Mock(return_value=[]) + worker._discover_hosts(start_percent=4, end_percent=96) + worker._nmap_optional.assert_called_once() + def test_naabu_failure_does_not_rescan_dead_addresses_with_nmap(self): worker = self.worker() live = {f"192.168.10.{i}" for i in range(1, scanner.NAABU_ACTIVE_HOST_THRESHOLD + 1)}