Chase Bank Fingerprinting is a Security Issue
October 10, 2026
Today, my browser notified me that Chase bank was trying to access local services on my computer. I've seen this kind of message before, but never dug into why I was seeing the dialog. Today, I decided to dig into it a little.
This is the code Chase was running:
var tmx = tmx || {}; //namespace
self.MESSAGE = "message";
self.OPEN = "open";
self.ERROR = "error";
self.CLOSE = "close";
self.INTERVAL = "_interval";
self.SOCKET = "wss://127.0.0.1:";
self.DATA = "DATA";
self.TIMEEXCEEDED = " - time exceeded";
self.SEP = " : ";
self.pstMsg=null;self.isDone=false;self.PortTestTimeOut=null;self.testPort=null;self.localStartTime=null;self.localWs=null;self.logFunc=null;
self.addEventListener(self.MESSAGE,function(td_Jk){self.testPort=td_Jk.data[0];self.PortTestTimeOut=td_Jk.data[1];td_gJ();});var td_La=function(td_rJ){postMessage([self.OPEN,self.testPort]);};var td_Gp=function(td_Ic){var td_xB=td_J()-self.localStartTime;
postMessage([self.ERROR,self.testPort+self.INTERVAL,td_xB]);};var td_Yk=function(td_yS){var td_fj=td_J()-self.localStartTime;postMessage([self.CLOSE,self.testPort+self.INTERVAL,td_fj]);};function td_gJ(){tmx.debug(self.testPort+self.SEP+self.PortTestTimeOut);
try{self.localWs=new WebSocket(self.SOCKET+self.testPort);self.localWs.onopen=td_La;self.localWs.onerror=td_Gp;self.localWs.onclose=td_Yk;self.localStartTime=td_J();setTimeout(td_zE,5);}catch(td_zL){tmx.debug(self.ERROR+self.SEP+td_zL.message);
}}function td_zE(){var td_jh=td_J()-self.localStartTime;if(self.localWs.readyState===0){if(td_jh>self.PortTestTimeOut){tmx.debug(self.testPort+self.TIMEEXCEEDED);postMessage([self.DATA,self.testPort+self.INTERVAL,self.PortTestTimeOut]);
td_Dy();}else{setTimeout(function(){td_zE();},10);}}else{postMessage([self.DATA,self.testPort+self.INTERVAL,td_jh]);td_Dy();}}function td_Dy(){self.isDone=true;if(self.localWs!==null){self.localWs.close();
self.localWs=null;}}
tmx.debug = function(){}
tmx.trace = function(){}
function td_J(){return Date.now();}
The offending operation was trying to open a WebSocket port on line 15 of the above code. I asked Grok why Chase would be doing this. The response I got was that it's fingerprinting my machine.
I take serious objection to this. While this particular WebSocket call may have failed since port 5279 was likely not open, what if it was? What if I had something sensitive running on that port?
Websites should not have access to local resources on one's computer unless there is a very good reason, and Chase's desire to fingerprint my machine is not a good reason. Frankly, I'm stunned to learn today that websites do this at all. This is a security issue, Chase. Stop it.