# WebSocket Attacks
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ЁЯТм [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## What are WebSockets
WebSocket рдХрдиреЗрдХреНрд╢рди рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ **HTTP** рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдиреНрд╣реЗрдВ **рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ** рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рджреНрд╡рд┐рджрд┐рд╢реАрдп рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдмрд┐рдирд╛ рд▓реЗрди-рджреЗрди рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред рдпрд╣ WebSockets рдХреЛ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╛рдпрджреЗрдордВрдж рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ **рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛ рдпрд╛ рд╕рд░реНрд╡рд░-рдкреНрд░рд╛рд░рдВрднрд┐рдд рд╕рдВрдЪрд╛рд░** рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд▓рд╛рдЗрд╡ рд╡рд┐рддреНрддреАрдп рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдоред
### Establishment of WebSocket Connections
WebSocket рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг [**рдпрд╣рд╛рдВ**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc) рдкрд╣реБрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, WebSocket рдХрдиреЗрдХреНрд╢рди рдЖрдорддреМрд░ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
```javascript
var ws = new WebSocket("wss://normal-website.com/ws");
```
`wss` рдкреНрд░реЛрдЯреЛрдХреЙрд▓ **TLS** рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд WebSocket рдХрдиреЗрдХреНрд╢рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ `ws` рдПрдХ **рдЕрд╕реБрд░рдХреНрд╖рд┐рдд** рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реИрдВрдбрд╢реЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рд╣реИрдВрдбрд╢реЗрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ:
```javascript
GET /chat HTTP/1.1
Host: normal-website.com
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: wDqumtseNBJdhkihL6PW7w==
Connection: keep-alive, Upgrade
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
Upgrade: websocket
```
рд╕рд░реНрд╡рд░ рдХрд╛ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:
```javascript
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
```
The connection remains open for message exchange in both directions once established.
**Key Points of the WebSocket Handshake:**
- The `Connection` and `Upgrade` headers signal the initiation of a WebSocket handshake.
- The `Sec-WebSocket-Version` header indicates the desired WebSocket protocol version, usually `13`.
- A Base64-encoded random value is sent in the `Sec-WebSocket-Key` header, ensuring each handshake is unique, which helps to prevent issues with caching proxies. This value is not for authentication but to confirm that the response is not generated by a misconfigured server or cache.
- The `Sec-WebSocket-Accept` header in the server's response is a hash of the `Sec-WebSocket-Key`, verifying the server's intention to open a WebSocket connection.
These features ensure the handshake process is secure and reliable, paving the way for efficient real-time communication.
### Linux console
You can use `websocat` to establish a raw connection with a websocket.
```bash
websocat --insecure wss://10.10.10.10:8000 -v
```
рдпрд╛ websocat рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
```bash
websocat -s 0.0.0.0:8000 #Listen in port 8000
```
### MitM websocket connections
рдпрджрд┐ рдЖрдк рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ **HTTP websocket** рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рддреЛ рдЖрдк [ARP Spoofing Attack ](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ MitM рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред\
рдПрдХ рдмрд╛рд░ рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдкрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
```bash
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v
```
### Websockets enumeration
рдЖрдк **рдЯреВрд▓** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ websockets рдореЗрдВ рдЬреНрдЮрд╛рдд** **vulnerabilities** **рдХреЛ рдЦреЛрдЬрдиреЗ, рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред**
### Websocket Debug tools
* **Burp Suite** MitM websockets рд╕рдВрдЪрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдирд┐рдпрдорд┐рдд HTTP рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
* [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite рдПрдХреНрд╕рдЯреЗрдВрд╢рди** рдЖрдкрдХреЛ Burp рдореЗрдВ Websocket рд╕рдВрдЪрд╛рд░ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, **рдЗрддрд┐рд╣рд╛рд╕** рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ, **interception rules** рд╕реЗрдЯ рдХрд░рдХреЗ, **match and replace** рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, **Intruder** рдФрд░ **AutoRepeater** рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** "**WebSocket/Socket.io Proxy**" рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдпрд╣ рдЯреВрд▓, рдЬреЛ Node.js рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, **рдХреИрдкреНрдЪрд░, рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ, рдХрд╕реНрдЯрдо** рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рднреА WebSocket рдФрд░ Socket.IO рд╕рдВрдЪрд╛рд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
* [**wsrepl**](https://github.com/doyensec/wsrepl) рдПрдХ **рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ websocket REPL** рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреЗрдирдЯреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ **рдЖрдиреЗ рд╡рд╛рд▓реЗ websocket рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдирдП рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ** рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рд╕рдВрдЪрд╛рд░ рдХреЛ **рд╕реНрд╡рдЪрд╛рд▓рд┐рдд** рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдврд╛рдВрдЪрд╛ рд╣реИред
* [**https://websocketking.com/**](https://websocketking.com/) рдпрд╣ рдПрдХ **рд╡реЗрдм рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╡реЗрдм рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ** рдХреЗ рд▓рд┐рдП **websockets** рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЪрд╛рд░/рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдмреАрдЪ, рдпрд╣ рдПрдХ **рд╡реЗрдм рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╡реЗрдм рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ** рдХреЗ рд▓рд┐рдП **websockets** рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
## Websocket Lab
[**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ websockets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реЗрдм рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ рдФрд░ [**рдЗрд╕ рдкреЛрд╕реНрдЯ**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) рдореЗрдВ рдЖрдк рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
## Cross-site WebSocket hijacking (CSWSH)
**Cross-site WebSocket hijacking**, рдЬрд┐рд╕реЗ **cross-origin WebSocket hijacking** рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)** рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ WebSocket рд╣реИрдВрдбрд╢реЗрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ **vulnerability** рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм WebSocket рд╣реИрдВрдбрд╢реЗрдХ рдХреЗрд╡рд▓ **HTTP cookies** рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдмрд┐рдирд╛ **CSRF tokens** рдпрд╛ рд╕рдорд╛рди рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЗред
рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕рдХреЛ рдПрдХ **рджреБрд╖реНрдЯ рд╡реЗрдм рдкреГрд╖реНрда** рд╣реЛрд╕реНрдЯ рдХрд░рдХреЗ рд╢реЛрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдХрдордЬреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ WebSocket рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдкреАрдбрд╝рд┐рдд рдХреЗ рд╕рддреНрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрди рддрдВрддреНрд░ рдореЗрдВ CSRF рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдХрдореА рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред
### Simple Attack
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм **websocket** рдХрдиреЗрдХреНрд╢рди **рд╕реНрдерд╛рдкрд┐рдд** рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ **cookie** **рд╕рд░реНрд╡рд░** рдХреЛ **рднреЗрдЬреА** рдЬрд╛рддреА рд╣реИред **рд╕рд░реНрд╡рд░** рдЗрд╕реЗ **рд╡рд┐рд╢рд┐рд╖реНрдЯ** **рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛** рдХреЛ рдЙрд╕рдХреЗ **websocket** **рд╕рддреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд** рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП **рдЙрдкрдпреЛрдЧ** рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рднреЗрдЬреА рдЧрдИ рдХреБрдХреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдлрд┐рд░, рдпрджрд┐ **рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП** **websocket** **рд╕рд░реНрд╡рд░** **рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдмрд╛рддрдЪреАрдд рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИ** рдпрджрд┐ рдПрдХ msg "**READY"** рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ **рд╕рд░рд▓ XSS** рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП (**cookie** **рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ** рдкреАрдбрд╝рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП **рднреЗрдЬреА** рдЬрд╛рдПрдЧреА) "**READY**" рднреЗрдЬрдиреЗ рд╕реЗ **рдмрд╛рддрдЪреАрдд** рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ **рдкреНрд░рд╛рдкреНрдд** рдХрд░ рд╕рдХреЗрдЧрд╛ред
```markup
```
### рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рди + рдПрдХ рдЕрд▓рдЧ рдЙрдкрдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рдХреБрдХреА
рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) рд╣рдорд▓рд╛рд╡рд░ рдиреЗ **рдПрдХ рдЙрдкрдбреЛрдореЗрди рдореЗрдВ рдордирдорд╛рдирд╛ Javascript рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣рд╛** рдЬрд╣рд╛рдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рдВрдЪрд╛рд░ рд╣реЛ рд░рд╣рд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ **рдЙрдкрдбреЛрдореЗрди** рдерд╛, **рдХреБрдХреА** **рднреЗрдЬреА рдЬрд╛ рд░рд╣реА рдереА**, рдФрд░ рдЪреВрдВрдХрд┐ **рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдиреЗ рдУрд░рд┐рдЬрд┐рди рдХреА рд╕рд╣реА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА**, рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рдФрд░ **рдЗрд╕рд╕реЗ рдЯреЛрдХрди рдЪреБрд░рд╛рдирд╛** рд╕рдВрднрд╡ рдерд╛ред
### рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдЪреБрд░рд╛рдирд╛
рдЖрдк рдЬрд┐рд╕ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдирдХрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП .html рдлрд╝рд╛рдЗрд▓реЗрдВ) рдФрд░ рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдЬрд╣рд╛рдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рдВрдЪрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
```javascript
//This is the script tag to load the websocket hooker
//These are the functions that are gonig to be executed before a message
//is sent by the client or received from the server
//These code must be between some