Skip to content

Commit 1f8e5bf

Browse files
committed
Updating for ep13-clipboard-attacks
1 parent e537c5e commit 1f8e5bf

File tree

1 file changed

+188
-0
lines changed

1 file changed

+188
-0
lines changed

ep13-clipboard-attacks/readme.org

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
#+TITLE: Browser Clipboard Attacks
2+
#+DATE: Attacks/Defense
3+
#+AUTHOR: Zach Roof
4+
* Browser Clipboard Attacks/Defense :ep_3:
5+
:PROPERTIES:
6+
:CUSTOM_ID: h-6C0AE174-9CC6-48AF-9C2D-61D94246BF20
7+
:END:
8+
** Table Of Contents :toc_3_gh:injection:noexport:
9+
:PROPERTIES:
10+
:CUSTOM_ID: h-E2FCBD6C-BE30-4131-A6AE-844E0BE39093
11+
:END:
12+
- [[#browser-clipboard-attacksdefense][Browser Clipboard Attacks/Defense]]
13+
- [[#talk-scope][Talk Scope]]
14+
- [[#css-attack-ex][CSS Attack Ex]]
15+
- [[#css-attack-ex-cont][CSS Attack Ex (CONT.)]]
16+
- [[#clipboard-apis-documentexeccommand][Clipboard APIs: document.execCommand()]]
17+
- [[#javascript-attack-ex][Javascript Attack Ex]]
18+
- [[#clipboard-apis-clipboard-api][Clipboard APIs: Clipboard Api]]
19+
- [[#future-js-clipboard-attacks][Future JS Clipboard Attacks?]]
20+
- [[#clipboard-fingerprinting][Clipboard Fingerprinting]]
21+
- [[#mitigations-zero-width-characters][Mitigations: Zero-width Characters]]
22+
- [[#mitigations-terminal-attacks][Mitigations: Terminal Attacks]]
23+
- [[#mitigations-terminal-attacks-cont][Mitigations: Terminal Attacks (CONT.)]]
24+
- [[#other-vectorsissues][Other Vectors/Issues]]
25+
- [[#additional-resources][Additional Resources]]
26+
27+
** Talk Scope
28+
:PROPERTIES:
29+
:CUSTOM_ID: h-853FB39F-D352-437D-BFA7-1B19A6A40BC7
30+
:END:
31+
#+ATTR_REVEAL: :frag (default)
32+
1. Live example of a CSS clipboard attack
33+
- Can give the attacker remote code execution
34+
2. Live example of a Javascript clipboard issue
35+
- Understand how invisible characters in your clipboard can invade your privacy
36+
3. Learn how clipboard attack mitigations can be bypassed
37+
3. Learn secure ways of interacting with our clipboard
38+
39+
** CSS Attack Ex
40+
:PROPERTIES:
41+
:CUSTOM_ID: h-2925C23B-AAD6-42D6-A7EF-A5D9A2BBF8A5
42+
:END:
43+
#+ATTR_REVEAL: :frag (default)
44+
+ Env Setup
45+
+ ~docker run -it ubuntu bash~
46+
+ ~apt-get update && apt-get install -y git~
47+
+ Will give you a safe terminal prompt
48+
+ [[https://sts.tools/clipboard-attacks-css]]
49+
+ Paste in Version #1 and Version #2 into the terminal
50+
+ What differences do you notice?
51+
52+
** CSS Attack Ex (CONT.)
53+
:PROPERTIES:
54+
:CUSTOM_ID: h-2461EC89-6955-48B6-8DD6-75D81C09B7E2
55+
:END:
56+
#+ATTR_REVEAL: :frag (default)
57+
+ Phishing
58+
+ Attacker puts link in ~<div>~
59+
+ ~Check out this new bitcoin exchange at https://exchange.example.com~
60+
+ User can't click the link, so they copy/paste
61+
+ Attacker places ~https://evil-exchange.example.com~ into the clipboard
62+
+ Further obfuscation
63+
+ Could remove itself from ~$HOME/.bash_history~
64+
+ How does the CSS Vector compare with the Javascript Vector?
65+
66+
** Clipboard APIs: document.execCommand()
67+
:PROPERTIES:
68+
:CUSTOM_ID: h-5A0E8A03-62B7-4B04-AC7E-12AE8D6D5110
69+
:END:
70+
#+ATTR_REVEAL: :frag (default)
71+
+ [[https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand][document.execCommand()]]
72+
+ Cross-Browser Clipboard Access
73+
#+BEGIN_SRC js :noweb yes :export code
74+
document.execCommand('cut');
75+
document.execCommand('copy');
76+
document.execCommand('paste');
77+
#+END_SRC
78+
+ You can use the ~cut~ and ~copy~ commands without any special permission if
79+
you are using them in a short-lived event handler for a user action (for
80+
example, a click handler) - [[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard][Mozilla]]
81+
#+ATTR_REVEAL: :frag (default)
82+
+ ~onclick~ within ~<body>~
83+
+ Much more invasive compared to CSS Vector
84+
85+
** Javascript Attack Ex
86+
:PROPERTIES:
87+
:CUSTOM_ID: h-ACDE2BD1-EE0F-48E7-850A-9085C00E9BCC
88+
:END:
89+
+ https://sts.tools/clipboard-attacks-js
90+
+ Ad networks that allow Javascript execution
91+
#+ATTR_REVEAL: :frag (default)
92+
+ On all bitcoin sites, copy malicious bitcoin address to clipboard
93+
+ "How to Buy X Cryptocurrency" Article
94+
+ Override clipboard to contain attacker controlled bitcoin address
95+
96+
** Clipboard APIs: Clipboard Api
97+
:PROPERTIES:
98+
:CUSTOM_ID: h-F9BEC0B5-CE10-4B14-A0B3-6739D95251C7
99+
:END:
100+
#+ATTR_REVEAL: :frag (default)
101+
+ Experimental technology
102+
+ Meant to give more granular permissions
103+
+ Replacing ~execCommand~
104+
+ Additional Resources
105+
+ Chrome Dev Fiddle
106+
+ https://sts.tools/chrome-team-fiddle
107+
108+
** Future JS Clipboard Attacks?
109+
:PROPERTIES:
110+
:CUSTOM_ID: h-BA9F5016-B0DC-494C-9C9E-C4DBDDBD5D26
111+
:END:
112+
#+ATTR_REVEAL: :frag (default)
113+
+ Potential future attacks as clipboard apis advance
114+
+ What if Javascript could easily copy an image to the clipboard?
115+
#+ATTR_REVEAL: :frag (default)
116+
+ Image Compression Bombs
117+
+ DoS attack
118+
+ To calculate how much memory an image will require to render, simply
119+
multiply the pixel ratio by the bit-depth –– a 50Kx50K pixel, 8-bit (RGB)
120+
image will require about 2.5GB (50,000 x 50,000 x 1 byte = 250,000,000
121+
bytes) - https://bomb.codes/bombs
122+
+ Other Javascript considerations?
123+
+ Clipboard Fingerprinting
124+
125+
** Clipboard Fingerprinting
126+
:PROPERTIES:
127+
:CUSTOM_ID: h-BAB35CDE-C049-4401-BC8F-6B6D88678491
128+
:END:
129+
#+ATTR_REVEAL: :frag (default)
130+
+ Example: https://umpox.github.io/zero-width-detection/
131+
+ Zero-width characters
132+
+ Invisible characters that are not usually displayed
133+
+ How does this work?
134+
#+ATTR_REVEAL: :frag (default)
135+
1. Username is converted to binary
136+
2. Binary username is converted to zero-width characters
137+
3. Inserted zero-width username into the text
138+
+ More info within link above
139+
140+
** Mitigations: Zero-width Characters
141+
:PROPERTIES:
142+
:CUSTOM_ID: h-675CE99A-A8F1-4B97-9B1F-E82D42CACBCE
143+
:END:
144+
+ https://github.com/chpmrc/zero-width-chrome-extension
145+
146+
** Mitigations: Terminal Attacks
147+
:PROPERTIES:
148+
:CUSTOM_ID: h-336B9DC4-EEA4-4292-AAA6-918C2F9D0A90
149+
:END:
150+
#+ATTR_REVEAL: :frag (default)
151+
+ "Paste Into Vim"
152+
+ [[https://unix.stackexchange.com/questions/355610/is-vim-immune-to-copy-paste-attack][Can have issues]]
153+
+ Paste into CLI utility
154+
+ Pasting ~^Z~ will return to the shell
155+
+ Bracketed Paste Mode
156+
+ When set, pasted text is delimited with control sequences so that the
157+
program can differentiate pasted text from typed-in text
158+
+ What if the attack string contains the closing delimiter?
159+
160+
** Mitigations: Terminal Attacks (CONT.)
161+
:PROPERTIES:
162+
:CUSTOM_ID: h-AA600304-2E71-4E9D-A462-5F8DEAB509AF
163+
:END:
164+
+ Takeaway
165+
#+ATTR_REVEAL: :frag (default)
166+
+ Just inspect the text outside of an execution context :)
167+
+ Chrome address bar doesn't respect newlines
168+
+ iterm ~Advanced Paste Mode~
169+
170+
* Other Vectors/Issues
171+
:PROPERTIES:
172+
:CUSTOM_ID: h-FAF23498-E67F-4C39-B40E-7FB0FBB7356D
173+
:END:
174+
#+ATTR_REVEAL: :frag (default)
175+
+ Copy Pest
176+
+ https://www.youtube.com/watch?v=t7sUajttbDM
177+
+ https://www.slideshare.net/x00mario/copypest
178+
+ Facebook iOS app reading information from clipboard
179+
+ https://news.ycombinator.com/item?id=16034854
180+
181+
* Additional Resources
182+
:PROPERTIES:
183+
:CUSTOM_ID: h-269EC506-6D6C-46D4-8EFC-077CFEED9EC0
184+
:END:
185+
+ Clipboard API
186+
+ https://w3c.github.io/clipboard-apis
187+
+ https://developers.google.com/web/updates/2018/03/clipboardapi
188+
+ https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy