diff --git a/hive-ag3nt/assets/screen.html b/hive-ag3nt/assets/screen.html
index 29b7622..31c1db1 100644
--- a/hive-ag3nt/assets/screen.html
+++ b/hive-ag3nt/assets/screen.html
@@ -221,12 +221,18 @@ canvas { display: block; cursor: default; }
if (types.indexOf(1) !== -1) prefer = 1; // plain None
else if (types.indexOf(19) !== -1) prefer = 19; // VeNCrypt
else prefer = types[0];
+ // Only handle known-safe types; reject everything else.
+ if (prefer !== 1 && prefer !== 19) {
+ dbg('no supported security type in [' + Array.from(types).join(', ') + '] — need 1 (None) or 19 (VeNCrypt)', 'err');
+ setStatus('unsupported security types: [' + Array.from(types).join(', ') + ']', 'error');
+ ws.close();
+ return false;
+ }
dbg('→ choosing security type ' + prefer +
- (prefer === 1 ? ' (None)' : prefer === 19 ? ' (VeNCrypt)' : prefer === 2 ? ' (VncAuth)' : ''));
+ (prefer === 1 ? ' (None)' : ' (VeNCrypt)'));
send(new Uint8Array([prefer]));
if (prefer === 1) state = 'security-result';
- else if (prefer === 19) state = 'vencrypt-version';
- else state = 'security-vnc-challenge';
+ else state = 'vencrypt-version';
return true;
}
case 'security-vnc-challenge': {