Skip to content

[V0.8.2.5] WP-S2: Root-Queue-Env härten + Transparenz (#44) #55

Closed

Description

@Toqsick

Issue: #44 · Verdict: confirmed · Severity: Medium (Defense-in-Depth) · Fix-Plan: security-fixplan-42-50.md → WP-S2, Release V0.8.2.5 (TDD in additional/python/tests/).

Befund: build_environment() (command_queue.py:65-73) merged Queue-env ungefiltert über os.environ; Popen(..., user=0) ehrt LD_PRELOAD/LD_LIBRARY_PATH/LD_AUDIT bei uid==euid; PATH-Hijack über non-absolute argv[0] (empirisch bestätigt). Kein Befehls-Approval-Dialog existiert (nur generischer polkit-Prompt) — Transparenz ist eigener Wert, kein Approval-Fix. „Alle Builder nutzen absolute Pfade" ist falsch: rm/ln/sed/timeshift/flatpak nutzen bare argv[0], Shell-Entries tragen den Skript-String in argv[0] — ein naiver Guard bricht diese Flows.

Fix (dreischichtig, TDD):

  1. RED — additional/python/tests/ (nach test_command_queue.py-Schema): Env-Map mit LD_PRELOAD wird von build_environment() bei uid==0 gefiltert; parse_command() lehnt non-absolute argv[0] für Nicht-Shell-Entries ab.
  2. GREEN — (1) LD_*/BASH_ENV/ENV/IFS-Strip (oder Allowlist) in build_environment() für uid==0; (2) argv[0]-Guard nach Kanonisierung der ~8 bare-name-Sites (absolute Pfade einsetzen; Shell-Entries via Flag ausnehmen); (3) env in displayCommand/Kommandotabelle sichtbar machen (Transparenz).
  3. Regression: bestehende Queue-Flows (Timeshift/Flatpak/Snap-Entries) laufen unverändert.

Gates: Python-Unittests; manuell: eine Queue-Runde (Timeshift-Apply) läuft normal.

Commit: „fix(queue): strip linker env for root commands and make queue env visible".

Activity

  1. Toqsick commented on Sep 23, 2026

    @Toqsick
    OwnerAuthor

    WP-S2 umgesetzt in d8592a8 (lokal, kein Push — Push-Freigabe = #41).

    Gates (alle grün): tool/check-versions.sh · dart-format-Gate · flutter analyze 0 Findings · flutter test 184/184 · Python-Unittests 49/49 (10 neue: 4× BuildEnvironment, 3× ParseCommand-Guard + Shell-Exemption, 3× displayCommand-env).

    Umgesetzt: Env-Filter für Root-Kommandos (LD_*/BASH_ENV/ENV/IFS aus geerbter + Queue-env), argv[0]-Guard gegen PATH-Hijack (Shell-Entries via useShell ausgenommen), 15 bare-name-Queue-Sites auf absolute Pfade, env in der Kommandotabelle sichtbar.

    Offen (Basti, manuell): eine Queue-Runde (Timeshift-Apply) läuft normal. Issue bleibt bis V0.8.2.5 offen.

  2. Toqsick commented on Oct 23, 2026

    @Toqsick
    OwnerAuthor

    Abnahme — erledigt (WP-S2)

    Work-Package S2 ist umgesetzt: Root-Queue-Env gehärtet und transparent gemacht.

    Der vollständige Nachweis steht in #44 (dieses Paket ist dessen Umsetzung) —
    Commit d8592a8 „fix(queue): strip linker env for root commands and make queue env visible",
    LD_*-Strip in additional/python/command_queue.py:78-95, argv[0]-Guard in :47-50,
    Tests in additional/python/tests/test_command_queue.py:57-96.

    Gates am 2026-10-23 (frisch, echte Exitcodes): flutter analyze → No issues found! ·
    flutter test → 223 Tests grün · dart format --set-exit-if-changed lib test → 123 Dateien, 0 geändert ·
    Python-Unittests 58 + 96 grün · packages/la_core 0 Findings / 25 Dateien / 68 Tests.

    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