Latest / Deep Tech Germany – AI, Robotics & Frontier Innovation by Startuprad.io™ / Web Security & DORA Compliance — cside's Simon Wijckmans
Transcript
- WEBVTT 00:00:05.217 --> 00:00:12.737 Welcome to StartupRad.io, your podcast and YouTube blog covering the German 00:00:12.737 --> 00:00:17.657 startup scene with news, interviews and live events. 00:00:19.677 --> 00:00:23.277 Hello and welcome everybody. This is Joe from StartupRad.io, 00:00:23.437 --> 00:00:27.657 your startup podcast, YouTube blog and internet radio station from Germany, 00:00:27.737 --> 00:00:33.917 Austria. What's the line bringing you the most news and important content from the region. 00:00:34.357 --> 00:00:39.417 This time, I do have somebody as an expert, Simon here with me. Hey, how are you doing? 00:00:40.657 --> 00:00:47.357 Hi. Simon here with me, who will be talking about some aspects of Dora. 00:00:47.557 --> 00:00:51.817 Dora is important enough that we decided to have two episodes on it. 00:00:51.937 --> 00:00:56.657 But don't worry, we're not going to pack them back to back. But we'll have two 00:00:56.657 --> 00:01:01.517 episodes here on different areas of the DORA regulation. 00:01:01.937 --> 00:01:05.597 Simon, before we get started, there is a little disclaimer. 00:01:05.837 --> 00:01:09.917 This is no legal advice. The content of this interview is provided for informational 00:01:09.917 --> 00:01:13.837 purposes only and does not constitute legal advice. 00:01:14.357 --> 00:01:17.877 Neither the interviewer nor the guest are licensed attorneys. 00:01:17.957 --> 00:01:22.897 The discussion is intended to offer our audience a framework to think about. 00:01:22.897 --> 00:01:27.697 Some of the more technical aspects of the EU regulation called DORA, 00:01:27.857 --> 00:01:29.817 Digital Operation Resilience Act. 00:01:30.077 --> 00:01:34.677 We strongly encourage you to consult with qualified legal and compliance professionals 00:01:34.677 --> 00:01:37.597 to address your specific requirements 00:01:37.597 --> 00:01:43.017 and implementations of DORA as they pertain to your organizations. 00:01:43.277 --> 00:01:48.217 Realize solely on information provided in this discussion could result in non-compliance 00:01:48.217 --> 00:01:51.157 or other legal and regulatory risk. 00:01:51.377 --> 00:01:55.317 Always seek professional guidance tailored to your unique circumstances. 00:01:56.237 --> 00:02:02.997 Now that we have that out of the way, DORA is at the time of recording in force. 00:02:03.117 --> 00:02:09.937 But as we talked before, the real enforcement, the real audit will only come next year. 00:02:10.037 --> 00:02:13.877 And the people are really getting started how to handle this, 00:02:14.057 --> 00:02:16.217 how to comply with the DORA Act. 00:02:16.217 --> 00:02:20.697 Can you tell us a little bit about you, a little bit about the DORA Act before 00:02:20.697 --> 00:02:25.517 we get into the subject where you are, the subject matter expert? 00:02:26.307 --> 00:02:30.007 Sure. Then first of all, thanks for having me. Yeah. So my background, 00:02:30.107 --> 00:02:31.967 I started my career at Microsoft at a young age. 00:02:32.067 --> 00:02:35.967 I was 16 at the time, built my career, worked at Cloudflare for a while, 00:02:36.607 --> 00:02:39.887 became a product manager there for more client-side related problems. 00:02:40.307 --> 00:02:43.567 As I grew, like I was solution architect first, I was spending a lot of time 00:02:43.567 --> 00:02:47.447 with customers and then I made it into my role, but more on the product side of things. 00:02:48.207 --> 00:02:51.107 Then I worked at Vercel, built their security products for a while, 00:02:51.227 --> 00:02:54.087 and then a small database company and came back to it. 00:02:54.187 --> 00:02:58.227 So I recognized that as we spent a lot of money and time on protecting our infrastructure 00:02:58.227 --> 00:03:03.087 by buying firewalls to protect the perimeter around our most critical assets. 00:03:04.067 --> 00:03:07.927 Protecting and detecting network flows within our own virtual networks, et cetera, 00:03:08.167 --> 00:03:11.927 and that we also monitor our open source dependencies through static registries 00:03:11.927 --> 00:03:15.667 like Node Package Manager, we have totally forgot about a very big part of the 00:03:15.667 --> 00:03:18.567 attack surface, and that's what's happening in the browser of the user when 00:03:18.567 --> 00:03:19.307 they visit your website. 00:03:19.507 --> 00:03:22.707 So I run a company called Seasite. We do client-side security. 00:03:22.867 --> 00:03:26.027 So basically making sure that whatever happens in the browser of the user as 00:03:26.027 --> 00:03:29.947 a result of your dependencies, your marketing tools, but also your own code 00:03:29.947 --> 00:03:32.427 is safe and is not going to add 00:03:32.427 --> 00:03:37.247 to a major compliance risk or potential downtime or issues in the future. 00:03:37.787 --> 00:03:42.567 So I already see we will be talking about the browser here. 00:03:43.327 --> 00:03:46.367 Is that what we've been talking about? 00:03:46.827 --> 00:03:53.167 Well, so I think that the scope for why Dora is relevant in our field is more 00:03:53.167 --> 00:03:57.627 because Dora talks about third-party services in a more broad concept. 00:03:57.887 --> 00:04:00.487 And it also talks about actively monitoring things. 00:04:00.787 --> 00:04:03.687 And so there's a lot of things happening currently in this space. 00:04:03.847 --> 00:04:07.807 PCI DSS is requiring to monitor client-side dependencies. 00:04:08.227 --> 00:04:11.847 And you may be wondering why. Well, because there were so many incidents for 00:04:11.847 --> 00:04:15.667 the last 10 years where credit card skimming originated from the browser, right? 00:04:15.827 --> 00:04:20.147 So thinking at the British Airways attack in 2018, a polyfill attack last year, 00:04:20.367 --> 00:04:22.547 there's a lot of attacks that execute in the browser. 00:04:23.287 --> 00:04:27.107 And the PCI, so the Payment Card Industry Digital Safety Standards, 00:04:27.367 --> 00:04:31.067 the organization behind that PCI-SSE has recognized that the majority of credit 00:04:31.067 --> 00:04:33.227 card skimming nowadays happens in the browser of a user. 00:04:33.967 --> 00:04:38.507 So when we talk about, like, finally financial organizations and institutions 00:04:38.507 --> 00:04:43.187 being pushed to have a more standardized security process, the client side is 00:04:43.187 --> 00:04:44.947 really very actively in scope. 00:04:45.167 --> 00:04:50.267 And even though the DORA Act is very broad, it is still actively saying things 00:04:50.267 --> 00:04:51.967 like actively monitoring, 00:04:52.387 --> 00:04:56.127 third-party dependency management, regardless of the attack surface, 00:04:56.227 --> 00:04:58.907 whether it's server side or client side, this is your, like, 00:04:58.987 --> 00:05:00.627 part of DORA. You need to monitor it. 00:05:01.047 --> 00:05:04.147 So that's the scope here. We are not a browser company. 00:05:04.307 --> 00:05:09.307 We don't build a secure browser. We're not a Zscaler or an island or anything like that. 00:05:09.767 --> 00:05:13.287 We sell to companies who need to protect their online asset, 00:05:13.407 --> 00:05:17.347 their website, and prevent it from performing attacks in browsers of users or 00:05:17.347 --> 00:05:21.687 things like crypto mining or credit card skimming or login credential theft 00:05:21.687 --> 00:05:23.827 or anything like that by any of the tools that they use. 00:05:25.317 --> 00:05:32.197 The way you're here today is because, of course, it applies to the usual banks, 00:05:32.377 --> 00:05:37.997 the usual insurance companies, but also the fintechs, all companies that are 00:05:37.997 --> 00:05:40.217 related to payment and so on and so forth. 00:05:40.877 --> 00:05:44.757 Therefore, I thought it was very interesting to have you here. 00:05:44.757 --> 00:05:51.497 And as you said, I've been a consultant on capital markets for more than a decade. 00:05:51.737 --> 00:05:57.277 And a lot of the cybersecurity, a lot of all the efforts were around the core systems. 00:05:57.557 --> 00:06:01.917 Barely anybody talked about the website in terms of cybersecurity. 00:06:04.917 --> 00:06:09.397 Here is something I do believe because we're also, as you said, 00:06:09.637 --> 00:06:16.757 most of the theft of private information actually takes place. 00:06:16.757 --> 00:06:20.477 And so I do believe it's an important piece here in the puzzle. 00:06:22.597 --> 00:06:26.017 As we said, we'll be a little bit more specific here. 00:06:26.617 --> 00:06:32.317 But my first question would be compliance readiness. what key steps need companies 00:06:32.317 --> 00:06:35.057 to take to ensure compliance with DORA, 00:06:35.237 --> 00:06:41.617 particularly when monitoring dynamic assets like a chatbot, like a capture system 00:06:41.617 --> 00:06:44.957 to satisfy the authorities, 00:06:45.237 --> 00:06:47.777 the auditors, and also, of course, your investors. 00:06:47.777 --> 00:06:51.617 Because if you do have DORA trouble, your investors won't be happy. 00:06:53.057 --> 00:06:58.057 Yeah, exactly. So, I mean, there's a lot of controls in DORA that overlap with 00:06:58.057 --> 00:07:00.697 other frameworks people should already be familiar with. 00:07:00.897 --> 00:07:06.857 So if you're ISO or you're SOC2 or your GDPR or PCI DSS, you're going to probably 00:07:06.857 --> 00:07:10.237 already have a really significant chunk of it ticked. So that's a good thing. 00:07:10.697 --> 00:07:16.877 I really looked at that DORA Act as an umbrella act that is just revisiting 00:07:16.877 --> 00:07:18.177 the things we should already be doing. 00:07:19.077 --> 00:07:23.277 When we talk specifically about third-party dependencies and their dynamic, 00:07:23.917 --> 00:07:26.257 unfortunately, those have kind of faded into the background. 00:07:26.257 --> 00:07:28.657 So a lot of these frameworks didn't call those out explicitly, 00:07:28.657 --> 00:07:32.397 and you can also tell that therefore the majority of security solutions out 00:07:32.397 --> 00:07:37.297 there that are targeting supply chain security, they don't actively monitor client-side scripts. 00:07:37.657 --> 00:07:41.897 We, however, do, and we do it in a way that is difficult, but it's the only 00:07:41.897 --> 00:07:43.817 right way to do it because this is a unique problem. 00:07:44.137 --> 00:07:48.497 When you go to a website, you will get a response from a third-party server 00:07:48.497 --> 00:07:51.377 that is outside of the control of that actual website that you visit. 00:07:51.377 --> 00:07:55.097 So in the case of a chatbot, let's say you're going to a website and they're 00:07:55.097 --> 00:07:56.437 using the intercom chatbot. 00:07:56.637 --> 00:07:59.597 Well, your browser is making a request to the intercom server. 00:08:00.400 --> 00:08:03.220 Well, God forbid, Intercom gets hacked, right? But there are so many of these 00:08:03.220 --> 00:08:07.700 chatbot companies out there, some with more senior security people than others, 00:08:07.840 --> 00:08:08.980 some with better protections than others. 00:08:09.380 --> 00:08:13.180 The result is that there could very easily be an attack that target only a small 00:08:13.180 --> 00:08:17.740 subset of people and therefore fly below the radar and make it very hard to detect. 00:08:18.200 --> 00:08:22.520 To put that into a real-life example, what you could pull off with a third-party 00:08:22.520 --> 00:08:28.440 JavaScript is an attack that targets 1% of users in France and then after office 00:08:28.440 --> 00:08:32.780 hours, right, only, and then the week after move to 1% of visitors in North America. 00:08:33.700 --> 00:08:38.880 Also after office hours, and then move to another area in the world and just fly below the radar. 00:08:39.040 --> 00:08:42.080 Because if a security analyst were to use a tool that does static analysis, 00:08:42.660 --> 00:08:45.400 that's not going to catch that dynamicness, right? 00:08:45.920 --> 00:08:49.580 So the way that Seaside does this, and that's fundamentally different from what 00:08:49.580 --> 00:08:52.740 we saw in the market, and that's also the reason why we started this as a business, 00:08:52.960 --> 00:08:54.440 is we actually put ourselves in the middle. 00:08:54.620 --> 00:08:57.940 So instead of you actually talking directly to these third-party services, 00:08:58.520 --> 00:09:01.260 we put ourselves in the middle and we offer you complete observability. 00:09:01.560 --> 00:09:05.840 So if somebody on an old Android phone goes to your website or somebody on a 00:09:05.840 --> 00:09:08.960 modern MacBook goes to the website and they get different versions of that script, 00:09:09.100 --> 00:09:11.540 which is often the case, we have all of that data. 00:09:11.680 --> 00:09:15.920 We analyze it through an LLM. We analyze it through an attributes engine that we built in the house. 00:09:16.120 --> 00:09:19.080 So we look for outliers in the behavior and how it has changed. 00:09:19.220 --> 00:09:23.840 So if any of these scripts become malicious and things start behaving weirdly, 00:09:24.480 --> 00:09:28.980 exfiltrating sensitive information, trying to get access to things it shouldn't 00:09:28.980 --> 00:09:30.720 have, like session tokens, for instance. 00:09:31.200 --> 00:09:35.180 That type of behavior we would very quickly flag. And this is directly a thing. 00:09:35.380 --> 00:09:38.160 When you talk about active monitoring of third-party dependencies, 00:09:38.460 --> 00:09:42.080 well, these third-party scripts you add to a website are third-party dependency. 00:09:42.340 --> 00:09:44.800 Because they are dynamic, active monitoring is required. 00:09:45.480 --> 00:09:48.060 Connect the dots, and there you go. That is a door requirement. 00:09:48.320 --> 00:09:51.080 And this is already a requirement, I think, under many other frameworks, 00:09:51.080 --> 00:09:56.060 but sometimes not as explicitly put forward. 00:09:56.220 --> 00:09:58.520 So if you look at PCI DSS, it's an explicit requirement. 00:09:58.760 --> 00:10:04.040 But under HIPAA, you can also expect the clauses regarding third-party security 00:10:04.040 --> 00:10:06.500 to be in scope there. But yes. 00:10:07.160 --> 00:10:12.000 We've been already getting a little bit ahead of ourselves. I want to talk about 00:10:12.000 --> 00:10:16.520 monitoring of those, what you call, dynamic assets. 00:10:16.520 --> 00:10:24.060 That's what I – the most advanced stuff I ever did was to write a little bit 00:10:24.060 --> 00:10:26.700 in Tuber Pascal. So please excuse me here. 00:10:26.800 --> 00:10:30.960 I'm not the technical guy, but this is also not the audience we're targeting 00:10:30.960 --> 00:10:36.560 here. How do you monitor all this external stuff that you have, 00:10:36.700 --> 00:10:41.260 for example, analytics, capture, newsletter, pop-up. 00:10:43.440 --> 00:10:49.900 Chatbot, podcast player, radio player, something like this? How do you actively monitor? 00:10:51.218 --> 00:10:59.678 Monitor those tools and what should the non-technical founders that are listening 00:10:59.678 --> 00:11:04.978 to us right now or how should they think about it in terms of cyber security because, 00:11:05.798 --> 00:11:10.918 I find it fascinating what you do here because that's also something that has 00:11:10.918 --> 00:11:13.938 not popped up in all the discussions that I had around the topic. 00:11:14.138 --> 00:11:19.458 It was more like the usual cyber attacks, really big things. 00:11:19.538 --> 00:11:25.418 For example, University Clinic here in Frankfurt was almost digitally shut down due to cybertech. 00:11:25.598 --> 00:11:29.718 That's the kind of stuff people are thinking about, not, for example, their website. 00:11:30.178 --> 00:11:34.938 Yeah, I mean, the thing is we interact with most online things through a website. 00:11:35.138 --> 00:11:39.658 Even if we don't realize it, a lot of mobile apps are actually websites under the hood. 00:11:40.738 --> 00:11:44.238 Progressive web apps, PWA is a technical term for that, or web views. 00:11:44.258 --> 00:11:47.998 It's essentially just a way for a developer to be able to build a thing in a 00:11:47.998 --> 00:11:49.778 language they're confident with, right? 00:11:49.918 --> 00:11:53.938 To build a website and it basically becomes a mobile app, right? 00:11:54.118 --> 00:11:58.078 So more things have become browsers. We already interact with most things through 00:11:58.078 --> 00:11:59.258 what is basically a browser. 00:11:59.658 --> 00:12:03.198 And at the same time, we have not protected the browser. So the way that it 00:12:03.198 --> 00:12:07.278 works, and this should be easy to do for people that are non-technical even, 00:12:07.518 --> 00:12:13.078 if you can add that button or you can add that like podcast or that A-B testing 00:12:13.078 --> 00:12:14.778 thing or that chatbot to your website, 00:12:15.258 --> 00:12:18.218 It's exactly the same thing you would do to install our solution. 00:12:18.778 --> 00:12:22.498 So we've got a couple of ways you can onboard, but the easiest is you just add 00:12:22.498 --> 00:12:25.818 our script to the website as the first one to load and you go through those 00:12:25.818 --> 00:12:29.718 other scripts you added and you put proxy.ccital.dev slash in front of them. 00:12:29.958 --> 00:12:31.598 That's it. And now it flows through us. 00:12:31.998 --> 00:12:34.458 So that code now comes through our systems. 00:12:36.040 --> 00:12:38.980 There's another way that you can onboard and that's using basically a plugin 00:12:38.980 --> 00:12:40.880 that you install, an NPM package. 00:12:41.280 --> 00:12:45.060 It's basically just to put it more technically a CLI that would automatically 00:12:45.060 --> 00:12:46.980 rewrite these scripts for you. 00:12:47.140 --> 00:12:49.780 You don't have to do anything more than just installing a thing, that would be it. 00:12:50.280 --> 00:12:53.200 In our dashboard you then see all of these scripts passing through us, 00:12:53.900 --> 00:12:55.540 but autonomously we review those. 00:12:55.840 --> 00:13:01.580 So the biggest clue that there is something going wrong is when notice these 00:13:01.580 --> 00:13:06.740 scripts change and there's changes that are not consistent with the behavior 00:13:06.740 --> 00:13:07.760 we'd expect from that script. 00:13:08.360 --> 00:13:11.620 It is normal for scripts to change and they are very dynamic. 00:13:11.840 --> 00:13:15.500 So as I explained earlier, if you have an old Android device, 00:13:15.540 --> 00:13:16.380 you're probably going to get 00:13:16.380 --> 00:13:20.260 a different version of a certain script than you will on a modern laptop. 00:13:20.640 --> 00:13:24.860 That dynamicness of a third-party script is actually a big part of the feature 00:13:24.860 --> 00:13:29.700 because it allows for those packages to be consistently working across very 00:13:29.700 --> 00:13:30.860 different environments, 00:13:31.400 --> 00:13:34.680 sometimes still even including Internet Explorer, right, which has been phased 00:13:34.680 --> 00:13:37.640 out for so many people, but it's still a very small percentage of the internet. 00:13:38.220 --> 00:13:41.760 I want to interrupt you, but do people actually still use Netscape? 00:13:43.100 --> 00:13:46.040 Netscape, I have not come across in significant enough numbers, 00:13:46.220 --> 00:13:49.960 but yeah, I mean, whatever device you currently have in front of you, 00:13:50.120 --> 00:13:53.860 unless you keep it in your house forever, will eventually end up somewhere being 00:13:53.860 --> 00:13:55.900 used by someone who's not as fortunate as us. 00:13:55.900 --> 00:13:59.120 So recycling of devices, especially in corporate environments, 00:13:59.460 --> 00:14:01.780 it has an incredibly long lifeline. 00:14:02.940 --> 00:14:07.680 Old compact computers from 20 years ago are probably in use somewhere in the world, right? 00:14:07.800 --> 00:14:11.140 Or either they get recycled or they make it all the way to Kenya, right? 00:14:11.320 --> 00:14:15.880 So the result is that old legacy things that we in the Western world can't even 00:14:15.880 --> 00:14:19.340 think about anymore, there's still a small percentage of the internet that use them. 00:14:19.940 --> 00:14:23.780 Of course, then the attack surface is different, right? but still very relevant 00:14:23.780 --> 00:14:27.460 to understand that backwards compatibility is something that with any modern 00:14:27.460 --> 00:14:29.800 web application is not something to neglect. 00:14:30.860 --> 00:14:33.840 And actually, this is a completely different thing to point out here, 00:14:33.960 --> 00:14:39.000 but as I noticed my grandparents aging, we also have to understand that users 00:14:39.000 --> 00:14:42.480 are also something that you shouldn't neglect backwards compatibility to. 00:14:43.040 --> 00:14:47.140 That's not something that Dorak talks about at all, but as we all get older... 00:14:47.980 --> 00:14:52.940 It's a very challenging way to say that. Yeah, I mean, if we all get older, 00:14:53.080 --> 00:14:56.280 we have to also think about how our older people are going to understand this. 00:14:56.520 --> 00:15:00.840 And this is the thing, like with these third party scripts, they are incredibly good at accessibility. 00:15:01.180 --> 00:15:04.840 They are incredibly good at backwards compatibility. And that is because of 00:15:04.840 --> 00:15:05.740 the dynamicness of them. 00:15:06.420 --> 00:15:09.840 But that's also very problem-based. So like really the only way that you can 00:15:09.840 --> 00:15:13.140 do proper client-side security is by having that stuff coming through you. 00:15:13.778 --> 00:15:16.918 By our system analyzing it 100% of the time. 00:15:17.298 --> 00:15:20.778 We, of course, hash it, right? So if the script is the same as it was before, 00:15:21.038 --> 00:15:24.838 we will not do the very painful and heavy lifting of reanalyzing it. 00:15:24.898 --> 00:15:26.178 If the hash is the same, we won't do it again. 00:15:26.538 --> 00:15:29.918 If the hash is different, though, that's when we reanalyze it in its entirety. 00:15:31.558 --> 00:15:34.838 And that then allows us to be quite confident in detections that we do. 00:15:34.978 --> 00:15:38.738 Of course, as every security solution out there, we're always looking for things 00:15:38.738 --> 00:15:40.838 we need to improve and detections that need to be added. 00:15:41.278 --> 00:15:44.478 But we at least have all the data. We don't think any of our competitors have 00:15:44.478 --> 00:15:45.638 the amount of data that we have. 00:15:46.038 --> 00:15:48.778 And that's also partly to thank the fact that we have a free tier. 00:15:48.958 --> 00:15:53.378 People can just sign up, use our products for free, and get a whole lot of visibility. 00:15:53.738 --> 00:15:57.058 And that would then help everybody to be safer, right? Because a lot of these 00:15:57.058 --> 00:16:00.618 scripts, they can even act differently depending on the website they are on. 00:16:00.778 --> 00:16:05.198 So if there's an analytic script on a bank's website, where that same analytic 00:16:05.198 --> 00:16:10.898 script is also on the local Baker's website, They can very easily make that 00:16:10.898 --> 00:16:14.738 script behave differently on a bank website as it does on the local baker's website. 00:16:14.918 --> 00:16:17.338 This is actually a very relevant thing to call out still. 00:16:18.598 --> 00:16:22.978 Any website out there, how weird you may think it is, will probably have some 00:16:22.978 --> 00:16:26.338 type of analytics tooling on it, including hospital websites. 00:16:26.338 --> 00:16:30.358 And so Kaiser Permanente, a large American insurance company last year, 00:16:30.758 --> 00:16:33.998 leaked all of their customers' healthcare information, all 13 million people's 00:16:33.998 --> 00:16:39.118 healthcare data, to a third party through their client-side script. 00:16:39.718 --> 00:16:43.778 And this was an honest mistake. They added the TikTok script to their website, 00:16:43.778 --> 00:16:46.958 thinking this was just TikTok's normal US-use script. 00:16:47.298 --> 00:16:50.518 It turned out to be the Chinese version, so the data was being sent to China. 00:16:51.078 --> 00:16:55.078 That's obviously a big HIPAA no-no, and that then caused a big trouble there. 00:16:55.078 --> 00:16:59.378 The problem is there's not enough governance around adding analytics tools to 00:16:59.378 --> 00:17:01.418 websites or these types of third-party scripts. 00:17:01.618 --> 00:17:03.958 And that's what these frameworks are trying to enforce. 00:17:04.218 --> 00:17:07.818 And that's a good thing because it basically protects the end user. 00:17:07.818 --> 00:17:12.558 Would you, again, for the non-technical entrepreneur, 00:17:12.918 --> 00:17:20.398 help us to think a little bit what steps an entrepreneur should take, 00:17:20.518 --> 00:17:26.758 thinking about vendor risk, third-party contracts, and really mapping the dependencies here? 00:17:28.344 --> 00:17:33.284 Yes. So honestly, as a non-technical person, this is a very hard assessment 00:17:33.284 --> 00:17:38.304 to make because they will not tell you whether the script is dynamic or not, 00:17:38.304 --> 00:17:43.284 or whether there's other methods you can use yourself to install it that are safer. 00:17:43.764 --> 00:17:45.784 So fortunately, there's a lot of trust you need to have there. 00:17:45.864 --> 00:17:49.064 But I think if a non-technical person, the best thing you can do is make sure 00:17:49.064 --> 00:17:54.984 that the tools you add to your website are being used by a significant portion of the internet. 00:17:55.824 --> 00:18:01.124 And that those tools are built by companies with a staff that looks confident 00:18:01.124 --> 00:18:02.664 and have a good security team. 00:18:03.004 --> 00:18:05.804 There's a few ways you can go ahead and figure that out. So first of all, 00:18:05.964 --> 00:18:11.284 if these scripts are being used on all of websites, there's this platform called public www.com. 00:18:11.484 --> 00:18:12.784 I think it's .net or whatever. 00:18:13.284 --> 00:18:17.104 You can type in the script in there and it will tell you how many websites also have that script. 00:18:17.304 --> 00:18:20.784 If that script is on another 100,000 websites, you're probably going to be okay, 00:18:21.104 --> 00:18:23.044 right? Because these companies, they have something to lose. 00:18:23.824 --> 00:18:27.024 Then if you have a look at the website of that script and you have a look at 00:18:27.024 --> 00:18:29.864 that tool and you see that they have a security center or a trust center, 00:18:30.204 --> 00:18:33.144 go have a look at their certifications, see what certifications they have. 00:18:33.684 --> 00:18:38.144 That probably will be a good indicator of them having good security compliance on their site. 00:18:38.284 --> 00:18:41.704 So then that particular vendor, you're probably okay adding to your website. 00:18:42.164 --> 00:18:46.164 However, the best thing you can do, and this is just because you don't know 00:18:46.164 --> 00:18:49.524 what those people then trust, there's third-party dependencies on their side, 00:18:50.044 --> 00:18:52.024 one script calls, another script calls, another script. 00:18:52.624 --> 00:18:55.624 Honestly, the best thing you can do, and I hate to sound like a marketing guy, but it's. 00:18:56.458 --> 00:18:59.958 Use our free tier because there's no other way to get the visibility because 00:18:59.958 --> 00:19:02.878 it's happening outside of your field of vision in the browser of your visitor. 00:19:03.138 --> 00:19:06.278 And that visitor can get a different thing than you get on your site. 00:19:06.638 --> 00:19:10.198 So there really is only that. That's the real reason why I wanted to build this 00:19:10.198 --> 00:19:11.958 thing. I didn't find any other way to do it. 00:19:12.118 --> 00:19:18.858 I'm thinking now about mapping those dependencies in terms of one connection as a lag. 00:19:19.018 --> 00:19:24.698 How many of those connections, how many degrees, how many of those lags have you found? 00:19:24.698 --> 00:19:30.758 Or do you usually find how many dependency, codependency, and so on and so forth 00:19:30.758 --> 00:19:34.698 do you usually see there? It really depends. 00:19:35.118 --> 00:19:39.998 So if you have, for instance, let's say you're, and this is a bit outside of 00:19:39.998 --> 00:19:42.798 the scope of Dora, right? Well, actually, we can make this about Dora. 00:19:43.098 --> 00:19:48.718 Let's say you're an insurance broker and you have an iframe on your webpage to book an appointment. 00:19:49.198 --> 00:19:54.058 And that tool that you added, that iframe, or I don't know, it could be a widget, 00:19:54.238 --> 00:19:56.518 right? Does third-party fetches to other things? 00:19:56.698 --> 00:19:58.658 It could very easily end up with a long list. 00:19:58.958 --> 00:20:03.398 So we saw this with, for instance, a little hotel booking widget that people 00:20:03.398 --> 00:20:06.578 add to their hotel's website so that when you're a hotel owner, 00:20:06.658 --> 00:20:08.258 you add this thing and they can book it through that. 00:20:08.718 --> 00:20:11.458 Well, that thing was calling like 50 other dependencies, right? 00:20:11.538 --> 00:20:15.898 So it was calling jQuery through a CDN, this thing through a CDN, 00:20:15.938 --> 00:20:18.818 that thing through a CDN, calling third-party assets here, there, 00:20:18.818 --> 00:20:22.338 and everywhere, adding analytics to it, even adding A-B testing to that widget 00:20:22.338 --> 00:20:24.458 because, of course, they're also looking to improve their product. 00:20:24.738 --> 00:20:27.178 And then those A-B testing things, they called up other stuff, 00:20:27.378 --> 00:20:30.258 it can become a very significant tree. 00:20:30.818 --> 00:20:35.778 So I've seen personally more than 50 of these dependencies on some scripts. 00:20:36.198 --> 00:20:41.038 Many of them are nice to themselves and only have one JavaScript file and no sub-dependencies. 00:20:41.878 --> 00:20:45.358 It really could be anything, right? And the problem is you will only really 00:20:45.358 --> 00:20:50.458 know when you start analyzing these things yourself, either manually or using a tool like us. 00:20:51.178 --> 00:20:54.138 And even when you're using a tool like us, you will see that it will largely 00:20:54.138 --> 00:20:56.038 differ, especially with A-B testing. 00:20:56.778 --> 00:21:00.538 If they then fetch a version and that version has more things to it, 00:21:00.598 --> 00:21:02.118 then it's going to be different across different browsers. 00:21:02.638 --> 00:21:06.898 There's a lot of noise here. So it's very hard. I can't just say normally it's 40. 00:21:07.158 --> 00:21:11.278 That's not how it works. It could be a very broad spectrum. 00:21:12.838 --> 00:21:19.378 I see. We will be back with you guys shortly after the break for our sponsor. 00:21:28.425 --> 00:21:35.085 Okay. Welcome back. I have Simon here still with me talking about the more technical aspects, 00:21:35.245 --> 00:21:43.605 especially in the browser of your company client-facing that falls under the DORA Act. 00:21:44.305 --> 00:21:47.045 When I was thinking about this, 00:21:47.225 --> 00:21:54.665 what is the average number of third-party dependencies you usually see? 00:21:54.845 --> 00:21:59.425 Because when you've been talking about a booking, a little booking app, 00:21:59.565 --> 00:22:06.005 a chatbot, a player, and I think I have at least 20 of them on my website and 00:22:06.005 --> 00:22:09.365 I don't even want to think about mapping them out. 00:22:11.185 --> 00:22:16.025 Yeah. So, I mean, the average I have seen from the websites that we crawl and 00:22:16.025 --> 00:22:18.165 that we have as our customer base is 53. 00:22:19.325 --> 00:22:24.705 You will find varying numbers about this, But it's very common for a commercial 00:22:24.705 --> 00:22:29.905 business with all types of pages and projects, et cetera, on their website to 00:22:29.905 --> 00:22:31.365 have a very broad scope of these, right? 00:22:31.465 --> 00:22:34.225 So you've got the analytics tools and a chatbot for support and the testing 00:22:34.225 --> 00:22:37.565 for legal and that pixel for engineering and A-B testing for that. 00:22:37.765 --> 00:22:41.125 And the marketing team has a podcast widget and all that stuff, right? 00:22:41.565 --> 00:22:46.185 Before you know it, you've got 53. And I think that that number will not really 00:22:46.185 --> 00:22:50.105 go down because it's funny when people tell me, oh, aren't third-party scripts 00:22:50.105 --> 00:22:55.345 on the way out? Well, no, because there will always be a reason for client-side dynamicness. 00:22:55.865 --> 00:22:59.445 And that will never be replaced by just an NPM package because they're still 00:22:59.445 --> 00:23:00.705 going to fetch it in the browser anyway. 00:23:01.085 --> 00:23:04.865 And that's another thing. If you install a dependency through something like 00:23:04.865 --> 00:23:08.145 Node Package Manager, which if you're an engineer, you definitely know, 00:23:08.205 --> 00:23:13.225 but as a non-technical person, it's just a marketplace of open source stuff you can add to a website. 00:23:13.225 --> 00:23:16.285 And now all of a sudden you have access to this big library of cool stuff. 00:23:16.605 --> 00:23:18.585 Well, those can do client-side fetches. 00:23:19.685 --> 00:23:23.185 That's not really solving anything because the client-side fetch is still there. 00:23:25.045 --> 00:23:29.005 In fact, actually, the thing that I find interesting about this attack factor 00:23:29.005 --> 00:23:33.205 is that even people that are non-technical, that are putting their faith in 00:23:33.205 --> 00:23:37.885 tools like WordPress, etc., well, we see a significant amount of client-side 00:23:37.885 --> 00:23:39.185 attacks coming through WordPress, 00:23:39.845 --> 00:23:41.565 especially through old themes. 00:23:41.985 --> 00:23:46.685 So those old dashboard themes that people use to build a pretty website. 00:23:48.065 --> 00:23:52.025 Yeah, if those people don't maintain those and some bad actor manages to get 00:23:52.025 --> 00:23:54.145 a hold of them, they will add malicious JavaScript to them. 00:23:54.645 --> 00:23:56.785 Before you know it, you've got an attack happening that way. 00:23:56.885 --> 00:24:02.405 Just like early in January, we spotted 5,000 websites were impacted through that. 00:24:02.585 --> 00:24:06.425 That's an, of course, significant amount of websites, but for WordPress, 00:24:06.625 --> 00:24:09.445 well, there's many millions of WordPress websites, but still 5,000 websites 00:24:09.445 --> 00:24:15.505 is quite a big deal. You could do a lot of very, very... 00:24:17.623 --> 00:24:23.023 Dumb stuff with all the data you get there. We've been talking about incidents 00:24:23.023 --> 00:24:28.183 here and there, talking about incident management and reporting here. 00:24:28.723 --> 00:24:35.683 How should they design the incident response process to address the issues that 00:24:35.683 --> 00:24:40.623 are stemming from the browser-based user interactions and ensure that they are 00:24:40.623 --> 00:24:43.203 doing Dura-compliant reporting here? 00:24:43.783 --> 00:24:48.683 Yeah, so my advice is regarding any type of client-side dependency that you 00:24:48.683 --> 00:24:52.823 add to keep track of when you added it and what state it was at the time, right? 00:24:53.863 --> 00:24:58.143 And then also makes it easier to understand, okay, at that date, 00:24:58.163 --> 00:25:01.943 we added that script, and then we saw a jump in sub-dependencies that were also 00:25:01.943 --> 00:25:03.783 added to the website as a result of that script. 00:25:03.963 --> 00:25:06.083 It makes it easier to trace back if there's an incident. 00:25:06.283 --> 00:25:11.623 The unfortunate thing about client-side security is if we see an attack at scale 00:25:11.623 --> 00:25:15.903 on a whole bunch of websites, it's sometimes not clear to us where it originated 00:25:15.903 --> 00:25:18.723 from because, I mean, the client-side code made it into the code, 00:25:18.823 --> 00:25:21.023 and that's usually through some server-side action originally. 00:25:21.563 --> 00:25:27.623 So it could be that a bad actor worked their way into your website through a backdoor somewhere. 00:25:28.203 --> 00:25:31.883 But that could be anywhere. It could be an open-source thing that you use. 00:25:31.903 --> 00:25:36.503 It could be that your credentials as an admin were stolen, that they got into 00:25:36.503 --> 00:25:38.803 your GitHub, or whatever. It could be anything. 00:25:38.963 --> 00:25:42.463 They could have hijacked an S3 bucket of another dependency that you added. 00:25:43.203 --> 00:25:47.723 It's very hard to trace back. So my advice is when there is a client-side script 00:25:47.723 --> 00:25:49.583 on your website that you do not recognize. 00:25:51.843 --> 00:25:55.163 Unfortunately, if you're not using a tool like ours and actively monitoring 00:25:55.163 --> 00:25:59.483 it, it's probably not a bad idea to be very quick in removing a whole bunch of dependencies. 00:26:00.583 --> 00:26:06.083 It's a bit like when your breaker, your fuse in your house, like the main one 00:26:06.083 --> 00:26:11.083 turns off and you then have to go figure out on which cycle in your house there is a problem. 00:26:11.083 --> 00:26:14.503 You turn all of them off and then you turn them back on one by one by one by 00:26:14.503 --> 00:26:15.923 one and see when the problem gets back. 00:26:16.143 --> 00:26:18.983 That's an unfortunate truth about client-side security as well, 00:26:19.063 --> 00:26:21.743 because you don't really know where it's coming from. You're probably going 00:26:21.743 --> 00:26:22.643 to have to do big cleanup. 00:26:22.843 --> 00:26:27.763 And that could be anything from starting over again to turning it off and turning 00:26:27.763 --> 00:26:29.663 it on one by one by one and then getting rid of it. 00:26:29.943 --> 00:26:33.883 It actually gets worse with people using third-party marketing firms. 00:26:34.723 --> 00:26:38.923 We have seen this a lot where people add a Google Tag Manager script to their 00:26:38.923 --> 00:26:41.563 website to then give to their marketing people, 00:26:42.379 --> 00:26:45.759 and then those marketing people add a bunch of scripts. And then a year later, 00:26:46.119 --> 00:26:48.859 you switch to another marketing company and those scripts are still on your 00:26:48.859 --> 00:26:51.639 website and you don't have control over the Google Tag Manager. 00:26:51.899 --> 00:26:55.079 So the only thing you can do is remove the entire Google Tag Manager and then 00:26:55.079 --> 00:26:57.659 see what breaks and then add those back one by one. 00:26:58.039 --> 00:27:00.499 That's a very sad thing that happens a lot, right? 00:27:01.039 --> 00:27:04.139 Those types of things that is unfortunately part of the incident response. 00:27:04.279 --> 00:27:07.199 You have to sometimes just go all the way back to then add it one by one. 00:27:07.199 --> 00:27:12.059 Could you also, when we already talked about incident response here, 00:27:12.439 --> 00:27:17.259 the regulatory reporting, because in the event of a breach or issue involving 00:27:17.259 --> 00:27:20.279 the dynamic assets we talked about here, 00:27:20.779 --> 00:27:25.519 what timers and protocols should you be following to meet DORA? 00:27:26.319 --> 00:27:29.819 Yeah, that's sort of part of the reporting there I found very vague, 00:27:29.959 --> 00:27:33.619 right? Because they have all types of requirements regarding reporting and different things. 00:27:33.719 --> 00:27:38.399 Look, my perspective on any type of reporting here is act on the side of caution. 00:27:38.559 --> 00:27:41.499 As soon as you've noticed there's some type of incident, put out a public note, 00:27:41.979 --> 00:27:46.199 send out an email to every customer, tell them, hey, we're investigating an 00:27:46.199 --> 00:27:49.699 issue regarding a client-side script on our website or something like that, right? 00:27:50.419 --> 00:27:53.559 We'll be back with more information in the next 24 hours, 48 hours, whatever. 00:27:54.179 --> 00:27:57.279 You do your thing. You do your research, you explain what happened, 00:27:57.439 --> 00:28:01.039 and you just err on the side of caution by being incredibly transparent about it. 00:28:01.859 --> 00:28:04.919 I worked at Cloudsphere. Cloudsphere was great at that. If there was any type 00:28:04.919 --> 00:28:08.659 of downtime incident, which luckily during my time there, there weren't major 00:28:08.659 --> 00:28:12.419 security incidents, but a downtime incident, it's better to be very open about 00:28:12.419 --> 00:28:16.299 everything and put out your learnings and what you're going to fix in the future. 00:28:16.499 --> 00:28:20.559 That's just a good thing because as those blog posts exist, the shame also goes 00:28:20.559 --> 00:28:23.819 away and people can actually become more comfortable in improving their systems 00:28:23.819 --> 00:28:25.259 over time and being open about it. it. 00:28:25.959 --> 00:28:28.139 Unfortunately, that's not how most companies do things. 00:28:28.859 --> 00:28:32.019 And then, of course, these rules come into play to try and push people to work 00:28:32.019 --> 00:28:34.499 that way, but they probably will not either anyway. 00:28:35.359 --> 00:28:38.439 But yeah, I think the reporting side of things, especially when I read the Dora 00:28:38.439 --> 00:28:43.299 Act, I found it a little bit all over the place and very broad umbrella. 00:28:43.679 --> 00:28:47.699 And especially with a client side security incident, the investigation timeframe 00:28:47.699 --> 00:28:52.279 of it can be very long because it doesn't, it could be that that script just 00:28:52.279 --> 00:28:54.919 doesn't do the thing anymore that it did during the attack time. 00:28:55.959 --> 00:28:59.419 So it's very difficult to investigate. I see. 00:29:00.799 --> 00:29:04.699 You were talking about confidence, transparency here. 00:29:05.339 --> 00:29:12.399 My last question is, how can entrepreneurs effectively communicate their Dora compliance strategy? 00:29:12.619 --> 00:29:17.979 Particularly, would you talk about dynamic asset, third-party dependencies to 00:29:17.979 --> 00:29:20.899 build trust with either their existing or new investors? 00:29:20.899 --> 00:29:27.179 Because I do believe If you're going through a large funding round at one point, 00:29:27.319 --> 00:29:30.719 there'll be legal compliance and it'll also take a look into DORA. 00:29:31.685 --> 00:29:35.765 So my experience with these things is that you should not be trying to do these things manually. 00:29:36.585 --> 00:29:41.465 We personally use Vanta. There are solutions like Vanta or Drata or Sprinto, 00:29:41.585 --> 00:29:45.645 et cetera, that allow you to document your controls and frameworks that you apply those to. 00:29:45.885 --> 00:29:50.225 And then how you provide evidence to those. And then there's trust pages specifically for them. 00:29:50.645 --> 00:29:55.405 It's better to have those things documented and cleanly put out there. 00:29:55.405 --> 00:29:59.545 So that if you ever have to report on those because either a specific customer 00:29:59.545 --> 00:30:04.505 asks for it or because you need to do it for an investor's round or because 00:30:04.505 --> 00:30:07.225 of an insurance quotation or anything like that, 00:30:07.445 --> 00:30:10.485 it's just there. You shouldn't be treating this as a one-off. 00:30:11.465 --> 00:30:14.565 The old-fashioned method of using a spreadsheet probably works. 00:30:14.685 --> 00:30:17.405 I don't like it. And I'll tell you why. 00:30:17.945 --> 00:30:21.765 Even if the spreadsheet is collaborative, your customers are going to look at 00:30:21.765 --> 00:30:26.125 you weirdly if you provide them with an ugly, manually maintained spreadsheets. 00:30:27.025 --> 00:30:30.725 People have gotten quite used to going to trust.thecompany.com, right? 00:30:31.325 --> 00:30:35.045 And then just seeing all of the security reports there. It's a cleaner way to do it. 00:30:36.085 --> 00:30:40.765 Yeah, and then one of the things that I think is interesting for people to realize, 00:30:40.945 --> 00:30:45.305 and especially as a product person, this is really what the entire career is 00:30:45.305 --> 00:30:47.665 about. You have to understand there's different personas you talk to. 00:30:47.945 --> 00:30:51.665 When you talk to a security engineer or a security analyst or a CISO, 00:30:51.665 --> 00:30:54.385 So they're probably going to go to trusttaughtyourcompany.com, right? 00:30:55.625 --> 00:31:00.085 They will also notice that there's a security webpage on your website, right? 00:31:00.265 --> 00:31:04.425 That webpage is more to talk about your generalistic view, your non-technical, 00:31:04.565 --> 00:31:06.645 non-specific security compliance strategy. 00:31:07.185 --> 00:31:10.965 That's also a good thing to have. And so there's even in SOC 2, I think, 00:31:11.685 --> 00:31:15.425 I'm not sure if it's a requirement or a best practice, but having a page like 00:31:15.425 --> 00:31:20.365 that is very helpful just so that multiple people with some that are more comfortable 00:31:20.365 --> 00:31:23.645 or less comfortable with technology have the ability to go there. 00:31:24.105 --> 00:31:27.845 That was a really good interview. Thank you very much. 00:31:28.285 --> 00:31:35.045 Actually, we scheduled our interview to be just shy of 30 minutes to attach 00:31:35.045 --> 00:31:36.445 you to another interview. 00:31:36.625 --> 00:31:39.405 And now you've talked for more than 30 minutes. 00:31:39.925 --> 00:31:44.505 Great. Thank you very much. We link everything down here in the show notes, 00:31:44.665 --> 00:31:48.285 a YouTube talk that you did on Slush, your LinkedIn profile, 00:31:48.285 --> 00:31:51.745 your website, where there's also free to you, and of course, 00:31:51.945 --> 00:31:54.365 the Vintalink. Thank you very much for having me. 00:31:55.185 --> 00:31:57.005 My pleasure. Have a good day. Bye-bye. 00:32:01.905 --> 00:32:11.145 That's all, folks. Find more news, streams, events, and interviews at www.startuprad.io. 00:32:11.485 --> 00:32:13.665 Remember, sharing is caring. 00:32:14.320 --> 00:32:27.178 Music.