Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extra internal validation #169

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

DemiMarie
Copy link
Contributor

This adds some extra internal validation.

@marmarek
Copy link
Member

CI says you broke legitimate case here...

@DemiMarie DemiMarie force-pushed the unnecessary-revalidate branch from 16c589e to f57261b Compare June 20, 2024 20:04
@marmarek
Copy link
Member

PipelineRetry

Copy link

codecov bot commented Jun 24, 2024

Codecov Report

Attention: Patch coverage is 80.00000% with 12 lines in your changes missing coverage. Please review.

Project coverage is 79.16%. Comparing base (6077a10) to head (988d99f).

Files with missing lines Patch % Lines
daemon/qrexec-daemon.c 52.94% 8 Missing ⚠️
daemon/qrexec-daemon-common.c 71.42% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #169      +/-   ##
==========================================
- Coverage   79.17%   79.16%   -0.02%     
==========================================
  Files          54       54              
  Lines        9953     9996      +43     
==========================================
+ Hits         7880     7913      +33     
- Misses       2073     2083      +10     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@DemiMarie DemiMarie force-pushed the unnecessary-revalidate branch from f57261b to 55c1e06 Compare January 4, 2025 23:26
@marmarek
Copy link
Member

marmarek commented Jan 6, 2025

Tests fail. And formatting need an update too

@DemiMarie DemiMarie force-pushed the unnecessary-revalidate branch from 55c1e06 to 034537b Compare January 8, 2025 01:01
Previously it could produce invalid qrexec commands.

A username ending with ":nogui" is allowed in the policy engine
response, though not on the command line.  This is because it may be
used by some to work around a limitation of the Windows agent: the
Windows agent handles

    user:nogui:QUBESRPC SERVICE+ARG SOURCE

differently than it handles

    user:QUBESRPC SERVICE+ARG SOURCE

and (unlike the Linux agent) this difference cannot be worked around by
changing service configuration.  R5.0 will block this as well.
If the target domain passed on the command line or the normalized target
returned by the policy engine contain a space, ill-formed command lines
would be produced.

To fix this, ensure that both the VM name passed on the command line and
the normalized target returned by the policy engine are non-empty and
contain only printable ASCII characters.  The actual set of valid
characters is smaller, but the input is trusted, so be conservative to
ensure there are no regressions or maintenance problems.  Together with
the previous commit, this change ensures that all commands generated by
qrexec-daemon will be parsed correctly by parse_qubes_rpc_command().

This also ensures that a newline in the VM name passed on the command
line does not result in a malformed request being passed to the policy
daemon.
Use a validating function instead.
It turns out that the Windows agent uses "|" as an internal delimiter,
and programs under both Linux and Windows may assume that there are no
forbidden characters in $QREXEC_REMOTE_DOMAIN and either
$QREXEC_REQUESTED_TARGET_NAME or $QREXEC_REQUESTED_TARGET_KEYWORD.  Only
allow expected characters.
@DemiMarie DemiMarie force-pushed the unnecessary-revalidate branch from 034537b to 988d99f Compare January 8, 2025 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants