Ciro Iriarte created GUACAMOLE-2305:
---------------------------------------

             Summary: Sensitive connection parameter values streamed via "argv" 
are shown in the UI
                 Key: GUACAMOLE-2305
                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-2305
             Project: Guacamole
          Issue Type: Bug
          Components: guacamole
            Reporter: Ciro Iriarte


When the server streams a connection parameter back to the client through an
"argv" stream, {{ManagedClient}} reflects the received value into the UI-visible
arguments model, which backs the connection parameters panel.

There is no filtering by parameter name, so when the streamed parameter holds a
secret -- a password, a passphrase, a private key -- the value becomes readable
by any user able to view that connection. This matters most where a connection 
is
configured centrally with credentials the user is not otherwise meant to see.

This is a display concern only. Mutating an immutable argument toward guacd is
already rejected server-side, so the issue is what a user can *read*, not what
they can send.

h3. Proposed fix

Skip reflection for parameter names matching
{{password|passphrase|private-key|client-key|secret|token}}, case-insensitive.
Public material ({{host-key}}, {{public-key}}, {{pubkey}}) is deliberately not
matched, since it is not secret and is useful to display.

Patch is one file, 20 lines added, applies cleanly to current main.

h3. Open questions

# *Is the client the right layer?* Filtering in the web application is
defence-in-depth. If guacd should not be streaming sensitive values back at all,
the durable fix belongs there and this becomes a belt-and-braces measure. I do
not know whether any protocol relies on streaming these back.
# *Name matching is a heuristic.* {{token}} in particular could match a 
parameter
that is not secret, and a protocol could name a sensitive parameter something 
the
pattern misses. An explicit per-protocol flag in the protocol descriptor would 
be
precise rather than heuristic, at the cost of touching every protocol 
definition.
The regex is the cheap version; happy to do the precise one instead if 
preferred.

Found while auditing a SPICE protocol implementation built on Guacamole
(GUACAMOLE-261). The issue is not SPICE-specific -- it is in shared web
application code and applies to any protocol that streams parameters back via
"argv".



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to