Skip to content

[V0.8.2] WP-B1: Boundary-Validation für preferred_browser (#47) #52

Closed

Description

@Toqsick

Issue: #47 · Verdict: confirmed · Severity: Low (Persistenz-Primitiv, kein Write-Pfad) · Fix-Plan: security-fixplan-42-50.md → WP-B1, eingewebt in Release V0.8.2 (AppLauncher-TDD-Umfeld).

Befund: _configuredBrowser() (app_launcher.dart:122-129) liest den Config-Key ohne Validierung; detectBrowser() stellt den Wert der kKnownBrowsers-Allowlist voran; als Gate dient nur _which(bin) — GNU which akzeptiert absolute Pfade → jeder which-auflösbare Wert wird via Process.start(detached) gestartet.

Fix (Teil des app_launcher.dart-Komplett-Ersatzes von V0.8.2): trim, Allowlist-Membership (kKnownBrowsers), / ablehnen; null → sauberer Fallback.

Tests: Config-Pfad-Gruppe in test/app_launcher_test.dart (heute keine): validierter Wert, nicht-allowlisteter Binary-Name, Pfad-Value, trailing-space-Value (fällt still auf Fallback).

Commit: „fix(launcher): validate preferred_browser against the known-browsers allowlist" (oder Teil des V0.8.2-Launcher-Commits).

Gates: globales CI-Gate-Set (check-versions, dart format, flutter analyze/test, Python-Unittests).

Activity

  1. Toqsick commented on Oct 23, 2026

    @Toqsick
    OwnerAuthor

    Abnahme — erledigt (WP-B1)

    Work-Package B1 ist umgesetzt. Umsetzung in main als add73e3 (PR #118, Squash); Original-Branch-Commits 388811d (XDG-Stufe) und b8ace20 (Allowlist-Validierung) auf dem superseded Branch hardening/0.8.x-browser-xdg.

    Befund aus diesem Paket: _configuredBrowser() las den Config-Key ohne Validierung, detectBrowser() stellte den Wert der kKnownBrowsers-Allowlist voran, und als Gate diente nur _which(bin) — das akzeptiert absolute Pfade.

    Fix: trim, Allowlist-Membership (kKnownBrowsers), / ablehnen; null → sauberer Fallback. Umsetzung in sanitizePreferredBrowser() (lib/services/app_launcher.dart:133-138), angewendet an beiden Aufrufstellen (:119, :177).

    Die vier verlangten Config-Pfad-Tests — test/app_launcher_test.dart:251-267: validierter Wert (:252-254), trailing-space-Value (:256-258), nicht-allowlisteter Binary-Name (:260-263), Pfad-Value (:265-267).

    Globale CI-Gates (gelten für jedes Work-Paket), am 2026-10-23 gegen add73e3 mit echten Exitcodes: check-versions.sh OK · dart format --set-exit-if-changed lib test 123 Dateien 0 geändert · flutter analyze 0 Findings · flutter test 223 Tests grün · additional/python-Unittests 58 Tests grün. Checkliste im Fixplan abgehakt: security-fixplan-42-50.md.

    Commit: im Squash add73e3 enthalten; Original-Commit-Nachricht fix(launcher): validate preferred_browser against the known-browsers allowlist bzw. als Teil des V0.8.2-Launcher-Commits — so vom Issue zugelassen.

    Nachweis: docs/handoff/v0.8.2-xdg-browser-abschluss.md — folgt mit PR #154.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions