mike-jumper commented on code in PR #392:
URL: https://github.com/apache/guacamole-server/pull/392#discussion_r959000647


##########
src/protocols/rdp/settings.c:
##########
@@ -706,12 +707,31 @@ guac_rdp_settings* guac_rdp_parse_args(guac_user* user,
     if (strcmp(argv[IDX_SECURITY], "nla") == 0) {
         guac_user_log(user, GUAC_LOG_INFO, "Security mode: NLA");
         settings->security_mode = GUAC_SECURITY_NLA;
+
+        /*
+         * NLA is known not to work with FIPS; allow the mode selection but
+         * warn that it will not work.
+         */
+        if (guac_fips_enabled())
+            guac_user_log(user, GUAC_LOG_WARNING,
+                    "NLA security mode is selected, "
+                    "but is known not to work, as FIPS mode is enabled.");

Review Comment:
   I think we should additionally note the anticipated effect and, since we 
have it, the expected solution. For example:
   
   > NLA security mode was selected, but is known to be currently incompatible 
with FIPS mode (see https://github.com/FreeRDP/FreeRDP/issues/3412). Security 
negotiation with the RDP server may fail unless TLS security mode is selected 
instead.



##########
src/protocols/rdp/settings.c:
##########
@@ -1529,7 +1549,20 @@ void guac_rdp_push_settings(guac_client* client,
         case GUAC_SECURITY_ANY:
             rdp_settings->RdpSecurity = TRUE;
             rdp_settings->TlsSecurity = TRUE;
-            rdp_settings->NlaSecurity = guac_settings->username && 
guac_settings->password;
+
+            /* Explicitly disable NLA if FIPS mode is enabled - it won't work 
*/
+            if (guac_fips_enabled()) {
+
+                guac_client_log(client, GUAC_LOG_WARNING,
+                        "Disabling NLA security mode when FIPS mode is 
enabled.");
+                rdp_settings->NlaSecurity = FALSE;
+
+            }
+
+            /* Enable NLA security mode if both username and password are set 
*/
+            else
+                rdp_settings->NlaSecurity = guac_settings->username && 
guac_settings->password;

Review Comment:
   I think this is a holdover from back when we didn't support prompting for 
credentials and can be safely replaced with just `rdp_settings->NlaSecurity = 
TRUE;`.



##########
src/protocols/rdp/settings.c:
##########
@@ -1529,7 +1549,20 @@ void guac_rdp_push_settings(guac_client* client,
         case GUAC_SECURITY_ANY:
             rdp_settings->RdpSecurity = TRUE;
             rdp_settings->TlsSecurity = TRUE;
-            rdp_settings->NlaSecurity = guac_settings->username && 
guac_settings->password;
+
+            /* Explicitly disable NLA if FIPS mode is enabled - it won't work 
*/
+            if (guac_fips_enabled()) {
+
+                guac_client_log(client, GUAC_LOG_WARNING,
+                        "Disabling NLA security mode when FIPS mode is 
enabled.");

Review Comment:
   1. This should be at the info level. Nothing is failing or anticipated to 
fail here (yet); it's just a noteworthy piece of information.
   2. As written, this is always true. I suggest rephrasing to explicitly note 
the recognition of system state and the action taken: `FIPS mode is enabled. 
Excluding NLA security mode from security negotiation (see: 
https://github.com/FreeRDP/FreeRDP/issues/3412).`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to