LWN: Comments on "CVE-less vulnerabilities" https://lwn.net/Articles/791855/ This is a special feed containing comments posted to the individual LWN article titled "CVE-less vulnerabilities". en-us Thu, 16 Jan 2025 00:50:29 +0000 Thu, 16 Jan 2025 00:50:29 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net CVE-less vulnerabilities https://lwn.net/Articles/794214/ https://lwn.net/Articles/794214/ jospoortvliet <div class="FormattedComment"> On top of that I want to challenge the perverse incentive a bit. Yes, it is there, but Red Hat also wants it’s software to be popular and used a lot, otherwise it had no large user base to draw customers from. So it isn’t a 100% bad incentive - it is ‘complicated’ and I’d argue it kind of balances out.<br> </div> Sat, 20 Jul 2019 11:05:22 +0000 CVE-less vulnerabilities https://lwn.net/Articles/793986/ https://lwn.net/Articles/793986/ nix <div class="FormattedComment"> Oh, I completely agree (I was in the same boat for fourteen years). But that's being incentivized by *something else*, and money is just something to let you eat while you do the something else. If you had enough money to do the something else, would you want more money for the sake of it? If not, you're not incentivized by money, I'd say. (An amazing number of people *are* incentivized by it: I don't understand what they get out of it, maybe they use it to keep score or something primate-status like that?)<br> </div> Wed, 17 Jul 2019 18:22:43 +0000 CVE-less vulnerabilities https://lwn.net/Articles/793005/ https://lwn.net/Articles/793005/ HelloWorld <div class="FormattedComment"> If there is no bug in the parser, you're not going to be able to break out of the sandbox by sending bad input, whether or not the sandbox has bugs. OTOH if the parser does have e. g. a code execution vulnerability, then the sandbox may or may not be able to mitigate that, but even if it doesn't, that's probably no worse than running the parser without a sandbox in the first place. So no, this isn't magical thinking at all.<br> </div> Mon, 08 Jul 2019 05:10:07 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792852/ https://lwn.net/Articles/792852/ Wol <div class="FormattedComment"> Cyberax is okay. I think we have some people here who prize belief over empirical evidence. At least you can argue with people who are persuaded by evidence.<br> <p> And while "security through obscurity" is a bad thing to *rely* on - as a deliberate *extra* feature on top of other measures it *is* good. Run a parser inside a sandbox on a hardened kernel - the attacker has to first discover the security measure before he can attack it, which gives you extra opportunity to discover *him*.<br> <p> Cheers,<br> Wol<br> </div> Thu, 04 Jul 2019 18:03:04 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792850/ https://lwn.net/Articles/792850/ Wol <div class="FormattedComment"> <font class="QuotedText">&gt; &gt; As well as you need fuzzing to test sandboxes. I would say for now fuzzing is the most effective way of finding bugs in programs.</font><br> <p> <font class="QuotedText">&gt; No. The most effective way is to write software in safe languages. E.g. a sandbox in Rust: <a rel="nofollow" href="https://github.com/firecracker-microvm/firecracker">https://github.com/firecracker-microvm/firecracker</a> - they had no CVEs so far.</font><br> <p> The only guaranteed secure way to write secure software is to prove it correct. Try doing that with C and its undefined behaviours - the end result will be quantum with bugs popping in and out of existence at random. And they do! I'm pretty sure there have been several occasions when an upgrade to GCC has caused bugs in software to pop INTO existence ... (because the compiler exploited a loophole in the definition of the language)<br> <p> Cheers,<br> Wol<br> </div> Thu, 04 Jul 2019 17:59:40 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792848/ https://lwn.net/Articles/792848/ Wol <div class="FormattedComment"> <font class="QuotedText">&gt; The automatic assumption here that most free software developers are mostly incentivized by money stands in stark contrast to almost every free software developer I have ever met. As a group we are to a large extent paid enough for free software hacking to be privileged sorts who usually don't need to worry about money,</font><br> <p> While I agree with the first half of that (free software developers are not incentivized by money), I'm not sure about the second. There are probably a fair few wannabe free software developers (myself included) who lack the time and opportunity precisely because we are NOT paid enough to indulge ourselves in what we want to do (write free software).<br> <p> Some people get lucky breaks - I'm not complaining - but some people don't.<br> <p> Cheers,<br> Wol<br> </div> Thu, 04 Jul 2019 17:23:51 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792519/ https://lwn.net/Articles/792519/ samuelkarp <div class="FormattedComment"> <font class="QuotedText">&gt; a sandbox in Rust: <a href="https://github.com/firecracker-microvm/firecracker">https://github.com/firecracker-microvm/firecracker</a> - they had no CVEs so far.</font><br> <p> Hey, thanks for the shout-out! This is somewhat of a sidebar, but hopefully I can help a bit. While Firecracker is used in production at AWS, it's a relatively young project. We've certainly tried to build Firecracker in a secure way (Rust is one part of that, a very limited device model is another part, and limiting privileges by default with seccomp and jailing is another), but the short amount of time it has been open-source means the security community hasn't had a lot of time to necessarily identify any issues in it. I think this may be a much stronger argument in the future as the project continues to mature and (hopefully!) security-minded folks have an opportunity to look deeper.<br> <p> (disclosure: I work for AWS and work with the Firecracker team; I am helping to build firecracker-containerd, a project focused on managing container workloads inside Firecracker microVMs.)<br> </div> Mon, 01 Jul 2019 21:13:26 +0000 The CII Best Practices badge *does* require dependency monitoring (at the silver level) https://lwn.net/Articles/792493/ https://lwn.net/Articles/792493/ david.a.wheeler <p> The "passing" badge doesn't require it, but the "silver" badge (the next level) of the CII Best Practices badge certainly does require that. The <a href="https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/other.md#dependency_monitoring">dependency_monitoring</a> criterion says: </p> <blockquote> Projects MUST monitor or periodically check their external dependencies (including convenience copies) to detect known vulnerabilities, and fix exploitable vulnerabilities or verify them as unexploitable. [dependency_monitoring] </blockquote> <blockquote> Details: This can be done using an origin analyzer / dependency checking tool such as OWASP's Dependency-Check, Sonatype's Nexus Auditor, Black Duck's Protex, Synopsys' Protecode, and Bundler-audit (for Ruby). Some package managers include mechanisms to do this. It is acceptable if the components' vulnerability cannot be exploited, but this analysis is difficult and it is sometimes easier to simply update or fix the part. </blockquote> <p> There are related criteria to support this, especially <a href="https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/other.md#external_dependencies">external_dependencies</a>, <a href="https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/other.md#updateable_reused_components">updateable_reused_components</a>, and <a href="https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/other.md#interfaces_current">interfaces_current</a>. In addition, all the test-related criteria in some sense support this, because to rapidly update a component you need to be able to be able <i>rapidly and thoroughly test</i> the result after the update. </p> <p> In short, the best practices badge <i>does</i> cover this. </p> Mon, 01 Jul 2019 18:39:15 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792481/ https://lwn.net/Articles/792481/ sorokin <div class="FormattedComment"> <font class="QuotedText">&gt; illustrating that sandboxing isn't just for untrusted code -- it's also for mostly-trusted code that is likely to handle hostile data (and where you might not totally trust the language sandbox).</font><br> <p> I completely agree with that point. In many cases this can be a completely adequate security measure.<br> <p> Actually my original comment was about testing. Looking back I regret that I even responded to Cyberax who is arguing just for the sake of arguing.<br> <p> </div> Mon, 01 Jul 2019 17:35:39 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792425/ https://lwn.net/Articles/792425/ james <blockquote> We were talking about sandboxing. Do you know any examples where people rely on python nor nodejs security to run untrusted code? I don't know of any. </blockquote> Well, this thread started with rra saying: <blockquote> Personally, I think it's no longer an acceptable security practice to run an image parser on untrusted input outside of a sandbox. </blockquote> illustrating that sandboxing isn't just for untrusted code -- it's also for mostly-trusted code that is likely to handle hostile data (and where you might <strong>not</strong> totally trust the language sandbox). <p> I know it's Perl, but I'd love the ability to run SpamAssassin in a sandbox (without making any complaints at all about either SpamAssassin or Perl security). Mon, 01 Jul 2019 09:44:14 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792398/ https://lwn.net/Articles/792398/ jschrod <div class="FormattedComment"> <font class="QuotedText">&gt; Are you speaking from experience, having used a faster moving distro before?</font><br> <p> Yes, we used to run openSUSEs Tumbleweed. It was not worth the hassle.<br> <p> The problem is actually not newly introduced errors. They are seldom enough, we were always able to handle them. The problem are incompatibilites in software upgrades that break one's files or -- especially bad -- one's workflow.<br> <p> For us, it's easier to schedule some time in block where one checks such incompatibilities for a new release (e.g., currently for Debian buster), adapts workflows, and tells all co-workers about these changes in a scheduled and timely fashion. The alternative is having to handle such incompatible changes all day as surprises ("Christine called in, she cannot work any more, fix it ASAP") on top of one's normal workload.<br> <p> Other companies, with more staff, may see this different than we do. (Although our customer's IT departments *are* larger, and they are even more conservative than we are.)<br> </div> Sun, 30 Jun 2019 18:38:27 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792397/ https://lwn.net/Articles/792397/ jschrod <div class="FormattedComment"> The problem was not in Debian's kernel update, as I suspected. Otherwise, more of those error stories would have been found. It was an incompatibility between my (quite old) smb.conf and that new kernel.<br> <p> Actually, I don't know if Debian would have reacted to a bug report about that. I wouldn't have opened one without being sure that there is no problem in my installation or my configuration -- and it was in the latter.<br> </div> Sun, 30 Jun 2019 18:29:38 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792396/ https://lwn.net/Articles/792396/ jschrod <div class="FormattedComment"> <font class="QuotedText">&gt; But someone running a handful of Samba servers, which sounds like jschrod's case, doesn't have those things.</font><br> <p> Yes, this is our case -- but even though we're a small company, we still do deployments of updates for important packages on canary systems first. They are used by some admins who know how to handle errors and roll back to a working system. (Canary deployments are done on VMs with snapshot/rollback capability.)<br> </div> Sun, 30 Jun 2019 18:26:31 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792395/ https://lwn.net/Articles/792395/ jschrod <div class="FormattedComment"> <font class="QuotedText">&gt; Running the latest at least as a smokescreen would allow you to catch it at the rc &gt; level rather than after it has been backported.</font><br> <p> We caught it when we deployed the new kernel on a canary system.<br> <p> For our environment (we are a small company) it isn't really needed to learn about such problems earlier. Such problems typically are sorted out within the week and don't disturb production -- here with the help of fellow lwn.net read mdg, even earlier. Usually, we can live with updating our production systems a few days later.<br> </div> Sun, 30 Jun 2019 18:23:15 +0000 Samba and kernel 4.9.0-9 https://lwn.net/Articles/792394/ https://lwn.net/Articles/792394/ jschrod <div class="FormattedComment"> Thanks a lot for this info, that solved it.<br> <p> Actually, the culprit seems to be SO_RCVBUF and SO_SNDBUF, testparm meanwhile warns about them. (Maybe I should establish a monitoring plugin that runs testparms and checks for warnings...) TCP_NODELAY is actually even default.<br> <p> This shows again how great the lwn.net community is!!<br> <p> Thanks, Joachim<br> </div> Sun, 30 Jun 2019 18:16:43 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792393/ https://lwn.net/Articles/792393/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; We were talking about sandboxing. Do you know any examples where people rely on python nor nodejs security to run untrusted code? I don't know of any.</font><br> You mentioned managed languages first. So stop moving goalposts.<br> <p> <font class="QuotedText">&gt; I can not comment about Chrome though.</font><br> The sandboxed code is single-threaded.<br> <p> You also seem to not understand the whole concept of sandboxes. Sandboxes limit the operations that the contained code can do, whether it's multithreaded or not. And it's not like regular uncontained libraries can't access threads by themselves, either directly or through injected exploit code.<br> <p> <font class="QuotedText">&gt; As well as you need fuzzing to test sandboxes. I would say for now fuzzing is the most effective way of finding bugs in programs.</font><br> No. The most effective way is to write software in safe languages. E.g. a sandbox in Rust: <a href="https://github.com/firecracker-microvm/firecracker">https://github.com/firecracker-microvm/firecracker</a> - they had no CVEs so far.<br> <p> The second most powerful way is to contain code in sandboxes.<br> </div> Sun, 30 Jun 2019 17:48:15 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792384/ https://lwn.net/Articles/792384/ nix <div class="FormattedComment"> <font class="QuotedText">&gt; You could even be trying to make my point for me: "As parsers are a lot simpler than sandboxes, a lot of bugs in them are eventually found and fixed, as evidenced by the very long list of CVEs relating to such bugs".</font><br> <p> You're suggesting that finding more bugs in some piece of software is evidence that it has fewer bugs than other software in which fewer bugs were found in the first place, and you don't think this might perhaps be motivated reasoning so contorted that you could probably find singularities in it?<br> <p> Thousands of image and other media parser bugs have been found (and continue to be found), even discounting the endless flood from Wireshark's network protocol dissectors. How many bugs have been found in Chrome's sandbox, which has annual events in which people basically get paid for finding holes in it? Is it as many as a dozen?<br> </div> Sun, 30 Jun 2019 10:24:39 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792380/ https://lwn.net/Articles/792380/ sorokin <div class="FormattedComment"> <font class="QuotedText">&gt; No. Quite a few sandboxes prohibit launching new threads, including the one used in Chrome, for example. Managed VMs can also be single-threaded just fine - see Python or Nodejs.</font><br> <p> We were talking about sandboxing. Do you know any examples where people rely on python nor nodejs security to run untrusted code? I don't know of any.<br> <p> I can not comment about Chrome though. I know that it is multithreaded, but perhaps its sandbox runs single-threaded code. I don't know. Ok perhaps this is a example of single-threaded sandboxed environment, still it is an exception. And overtime we will see fewer and fewer single-threaded programs.<br> <p> <font class="QuotedText">&gt; Enough to avoid security bugs. The only effective way to de-louse the C programs is fuzz testing, everything else simply doesn't work. And fuzzying can't find everything.</font><br> <p> As well as you need fuzzing to test sandboxes. I would say for now fuzzing is the most effective way of finding bugs in programs.<br> <p> </div> Sun, 30 Jun 2019 10:17:13 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792383/ https://lwn.net/Articles/792383/ nix <blockquote> Don't underestimate the amount of state that is only present in your mind as well... </blockquote> If that gets wiped on a desktop reboot you need to get looked at fast. :) going to sleep, on the other hand... <p> (It's actually almost inverted: going to sleep is <i>helpful</i> even though it results in loss of state: the state that is lost is mostly useless and the improvements gained in knowledge and clarity of thought and just not being tired any more and so on are much greater than the loss.) Sun, 30 Jun 2019 10:16:16 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792382/ https://lwn.net/Articles/792382/ nix <blockquote> Would you be confident running a 3 months old browser? Looking at the history of Firefox ESR it has seen almost as many upgrades as the stable series. You're upgrading anyways, why keep the old version? Because it has less features and gets less attention from developers? </blockquote> Well, perhaps the thing you're upgrading is a foundational element in the software stack (a browser might count as that: so might Qt, or the X server, or glibc, or etc etc) and you want bugfixes but a lot of things depend on this and you don't know exactly what things they might be doing, so you'd rather add new features and cleanups and the corresponding code churn, because better tooling or no better tooling, every time the code changes there is the possibility of new bugs. The old code has old bugs, sure, but you <i>already know</i> that those old bugs don't affect your workflow or you'd be upgrading more aggressively because the old software didn't work right for you (with the exception of security problems, of course, where the bugs will be exercised by an attacker, not by you). <p> So there really is an extra cost to upgrading to new-feature branches versus stable branches. (The downside is the the changes on the stable branch have probably been much less tested on that branch than they were in the new-feature branch they were likely developed against. Tradeoffs, tradeoffs...) Sun, 30 Jun 2019 10:13:54 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792381/ https://lwn.net/Articles/792381/ nix <div class="FormattedComment"> The automatic assumption here that most free software developers are mostly incentivized by money stands in stark contrast to almost every free software developer I have ever met. As a group we are to a large extent paid enough for free software hacking to be privileged sorts who usually don't need to worry about money, and freed from that tether most of us are interested in other things now (doing interesting things, writing code people will find useful, or just enjoying creating the software system itself).<br> <p> Certainly, in my case, even a really blatant financial incentive like telling me that you'd double my salary if I did $thing (where $thing is not something I'd have been happy to do already) would not have much effect, and the financial incentive there is pointless: you could probably get me to prioritize a $thing I'd be happy to do over other things I was planning just by asking me, acting as a prod that at least one person has an expressed preference so I might as well follow it.<br> <p> I suspect that if you *are* mostly incentivized by money, you've long since switched to become a VC vampire rather than a free software developer: God knows you'd have had enough opportunity to do so.<br> </div> Sun, 30 Jun 2019 10:08:26 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792378/ https://lwn.net/Articles/792378/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; OS kernel&lt;-&gt;userspace boundary is multithreaded. x86 VMs are multithreaded. Managed languages VMs are multithreaded.</font><br> No. Quite a few sandboxes prohibit launching new threads, including the one used in Chrome, for example. Managed VMs can also be single-threaded just fine - see Python or Nodejs.<br> <p> <font class="QuotedText">&gt; Enough for what? I'm telling that one type of programs is easy to write tests for and one is not.</font><br> Enough to avoid security bugs. The only effective way to de-louse the C programs is fuzz testing, everything else simply doesn't work. And fuzzying can't find everything.<br> </div> Sun, 30 Jun 2019 07:51:21 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792369/ https://lwn.net/Articles/792369/ sorokin <div class="FormattedComment"> <font class="QuotedText">&gt; Not really. Most of sandboxing environments are thread-agnostic or single-threaded. Unless you're looking at full VMs.</font><br> <p> OS kernel&lt;-&gt;userspace boundary is multithreaded. x86 VMs are multithreaded. Managed languages VMs are multithreaded.<br> <p> <font class="QuotedText">&gt; As history has shown, this is not enough.</font><br> <p> Enough for what? I'm telling that one type of programs is easy to write tests for and one is not.<br> <p> </div> Sun, 30 Jun 2019 07:47:43 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792368/ https://lwn.net/Articles/792368/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; 1. Most parsers are single-threaded while most sandboxing environments have to deal with some forms of concurrency. Which means they are difficult to test.</font><br> Not really. Most of sandboxing environments are thread-agnostic or single-threaded. Unless you're looking at full VMs.<br> <p> <font class="QuotedText">&gt; 2. In addition it is very easy to write tests for parsers, because normally they behave like pure functions: they have some input and they produce some output.</font><br> As history has shown, this is not enough.<br> </div> Sat, 29 Jun 2019 18:39:43 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792365/ https://lwn.net/Articles/792365/ sorokin <div class="FormattedComment"> This were exactly my thoughts, but I couldn't find a better words to express them. Thank you!<br> <p> I would like to add two more points:<br> 1. Most parsers are single-threaded while most sandboxing environments have to deal with some forms of concurrency. Which means they are difficult to test.<br> 2. In addition it is very easy to write tests for parsers, because normally they behave like pure functions: they have some input and they produce some output.<br> <p> </div> Sat, 29 Jun 2019 17:55:24 +0000 Samba and kernel 4.9.0-9 https://lwn.net/Articles/792360/ https://lwn.net/Articles/792360/ mbg <div class="FormattedComment"> jschrod, you're not alone -- I think I hit the same thing.<br> <p> Removing these options (long deprecated apparently) from my smb.conf seemed to fix it:<br> <p> socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192<br> </div> Sat, 29 Jun 2019 05:58:10 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792351/ https://lwn.net/Articles/792351/ Cyberax <div class="FormattedComment"> The situation right now is this. If you have a C-based parser then it contains remote holes, end of story. Old C-based parsers just have the most obvious holes discovered (usualy).<br> <p> Just look at libpng, libgzip, libjpeg, Apache, libcurl, ... for examples. Every one of them had multiple severe vulnerabilities in parsing.<br> <p> So if you are using a C-based parser for untrusted data (which in this world means "all data") then you have at least one security hole.<br> <p> Sandboxes are a way to mitigate this. They still can have bugs but there is just a handful of sandboxes, and some of them are written in languages that preclude most of regular C bugs.<br> <p> Of course, if you want to be in the perfect world then you should turn off all computers tomorrow and start a Manhatattan-project style mass rewrite of C software in saner languages.<br> </div> Fri, 28 Jun 2019 22:39:32 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792350/ https://lwn.net/Articles/792350/ rweikusat2 <div class="FormattedComment"> You "clearly" haven't yet managed to move past the shtick of supplanting assertions of insanity for arguments. Parsing your second sentence yields "I [ie, you] don't know if there were more critical errors in [somehow defined] parsers than in order kinds of software". Even assuming the "but it may well be the case" (aka "probably") as given, one can only wonder what this is now supposed to express. You could even be trying to make my point for me: "As parsers are a lot simpler than sandboxes, a lot of bugs in them are eventually found and fixed, as evidenced by the very long list of CVEs relating to such bugs".<br> <p> But that's really entirely besides the point. The base situation is still "it is unknown if $parser has security issues, hence it probably has" vs "it's unkown if $sandbox has security issues, hence, it's probably safe to use". These are still two appeals to ignorance used to justify both a statement "A" and the inverse statement "not A".<br> <p> NB: I do not claim that the parser must be safe or that the sandbox must be unsafe, only that absolutely nothing can be validly concluded from ignorance.<br> <p> </div> Fri, 28 Jun 2019 21:11:15 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792346/ https://lwn.net/Articles/792346/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; There is no way to 'understand' this 'perspective' as it's plainly self-contradictory: Compared to sandboxes, all of which have a history of security issues(!), most parsers are fairly simple.</font><br> You clearly live in a separate parallel reality. The never-ending list of critical CVEs in parsers is probably the longest list of vulnerabilities.<br> </div> Fri, 28 Jun 2019 20:25:06 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792342/ https://lwn.net/Articles/792342/ rahulsundaram <div class="FormattedComment"> <font class="QuotedText">&gt; That's now an appeal to popularity, another logical fallacy.</font><br> <p> How is empirical evidence an appeal to popularity? Just look at vulnerabilities in parsers vs sandboxes that protect them. It isn't that hard. If you are going to have the outlier position that goes against that evidence, make your case.<br> </div> Fri, 28 Jun 2019 18:10:39 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792338/ https://lwn.net/Articles/792338/ excors <div class="FormattedComment"> <font class="QuotedText">&gt; We don't know if the 'parser' has security issues, hence, it probably has.</font><br> <p> When we know the parser has had several hundred security issues in the past (see <a href="https://www.cvedetails.com/vulnerability-list/vendor_id-1749/Imagemagick.html">https://www.cvedetails.com/vulnerability-list/vendor_id-1...</a> , most of which say "...via a crafted file"), we can be pretty sure it's going to have a lot more.<br> <p> <font class="QuotedText">&gt; We don't know if the sandboxing software has security issues, hence, it probably doesn't.</font><br> <p> The sandbox doesn't need to be perfect. To exploit a sandboxed parser, you need to find a bug in the parser *and* a bug in the sandbox. That's strictly harder than finding a bug in the parser, so the sandbox makes the system more secure. It's like the most obvious example of defense in depth.<br> <p> <p> </div> Fri, 28 Jun 2019 18:02:02 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792336/ https://lwn.net/Articles/792336/ rweikusat2 <div class="FormattedComment"> That's now an appeal to popularity, another logical fallacy.<br> </div> Fri, 28 Jun 2019 18:00:27 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792335/ https://lwn.net/Articles/792335/ nilsmeyer <div class="FormattedComment"> pure conjecture.<br> </div> Fri, 28 Jun 2019 17:53:29 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792333/ https://lwn.net/Articles/792333/ rahulsundaram <div class="FormattedComment"> <font class="QuotedText">&gt; There is no way to 'understand' this 'perspective' </font><br> <p> Of course there is but in this case, you have already made up your mind and that's fine. I will just point out that in general, the industry trend is moving towards more sandboxes, not less based on empirical evidence that it is useful. You are just the outlier here. <br> </div> Fri, 28 Jun 2019 17:52:02 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792334/ https://lwn.net/Articles/792334/ mathstuf <div class="FormattedComment"> <font class="QuotedText">&gt; We don't know if the 'parser' has security issues, hence, it probably has. We don't know if the sandboxing software has security issues, hence, it probably doesn't.</font><br> <p> You're missing that the parser was written to "get a job done" which is to make a set of pixels from encoded data. The sandboxing software was written to get a job done as well: limit what can be done within an environment meant to run untrusted code. The mindset and review rigor difference between the two should be readily apparent in that I'd expect the latter to actually have a security model and documentation on how it handles that model. The former rarely has one until it has systemic problems.<br> </div> Fri, 28 Jun 2019 17:51:09 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792332/ https://lwn.net/Articles/792332/ rweikusat2 <div class="FormattedComment"> There is no way to 'understand' this 'perspective' as it's plainly self-contradictory: Compared to sandboxes, all of which have a history of security issues(!), most parsers are fairly simple. The people argueing for this just chose to believe that the 'parser' must have unknown, security-criticial bugs and chose to believe that the sandboxing software will not. This is really just a dual appeal-to-ignorance: We don't know if the 'parser' has security issues, hence, it probably has. We don't know if the sandboxing software has security issues, hence, it probably doesn't.<br> <p> One should really call this a higher-order logical fallacy as it uses the exact, same falllacious reasoning to justify two contradicting conclusions.<br> <p> </div> Fri, 28 Jun 2019 17:34:02 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792329/ https://lwn.net/Articles/792329/ rahulsundaram <div class="FormattedComment"> <font class="QuotedText">&gt;we must use significantly more complex software B which is believed to be free of unknown bugs because of ... well just because ...</font><br> <p> That is a not an earnest attempt at understanding a different perspective. All software including sandboxes can have bugs. However it is easier to specify access points and fix any bugs once in the sandbox that is specifically designed with security in mind compared to parsers which often have a long legacy and history of security vulnerabilities. We do have sufficient experience with sandboxes (for ex: Chrome sandbox or bubblewrap) to know both a) sandbox are not a magic solution 2) they do help to stop or mitigate vulnerabilities. <br> </div> Fri, 28 Jun 2019 15:56:31 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792327/ https://lwn.net/Articles/792327/ rweikusat2 <div class="FormattedComment"> <font class="QuotedText">&gt; Personally, I think it's no longer an acceptable security practice to run an image parser on untrusted input outside of a sandbox. We &gt; should keep fixing bugs in the parsers as a first line of defense, but that line of defense clearly fails frequently enough that one </font><br> <font class="QuotedText">&gt; needs a second line of defense (a seccomp sandbox, a dedicated container, something). That's probably true of most parsers that </font><br> <font class="QuotedText">&gt; are even mildly complex. </font><br> <p> This kind of magic thinking keeps amazing me: In order to guard against unknown bugs in 'complex' software A, we must use significantly more complex software B which is believed to be free of unknown bugs because of ... well just because ...<br> <p> </div> Fri, 28 Jun 2019 15:07:56 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792304/ https://lwn.net/Articles/792304/ marcH <div class="FormattedComment"> No, I don't have any experience myself but the article states:<br> <p> <font class="QuotedText">&gt; projects like OSS-Fuzz are finding lots of bugs in an automated fashion—many of which may be security relevant</font><br> <p> <a href="https://github.com/google/oss-fuzz">https://github.com/google/oss-fuzz</a> seems pretty strong on automation and in my experience Google rarely ever pays engineers to perform repetitive tasks.<br> <p> So it sounds like OSS-Fuzz finally cracked that nut. That's probably why there's a LWN article about it.<br> <p> <p> </div> Fri, 28 Jun 2019 09:33:22 +0000 CVE-less vulnerabilities https://lwn.net/Articles/792298/ https://lwn.net/Articles/792298/ nim-nim <div class="FormattedComment"> You write it as if some gremlin had connected to your project deep in the night and had made it use all this other code. The dependencies didn’t add themselves, someone in the project made the decision to use this other code, instead of writing the functionality himself.<br> <p> This person should have evaluated the costs of keeping this code up to date, instead of forking it and maintaining it all directly. Just like he should have evaluated if the API provided by this other code is convenient, if it’s compatible licensing-wise, if it’s actively maintained in the original project and reasonably future-proof, etc.<br> <p> Costs of keeping other code up to date balloon if it calls itself lots of other third party code, if its authors do not keep APIs stable and backwards-compatible, do not release (each commit is a new thing to look at), do not use semver, do not write changelogs, do not announce new versions on a mailing list. Sometimes choosing something a bit less featured with fewer keeping up to date problems is a better deal.<br> <p> Anyway checking up-to-dateness can be done using announce mailing lists, release-monitoring.org, pretty much any language that uses a package manager allows querying for the latest version, everyone is moving to git nowadays so you can write your own git pull and check tags monitoring robot, etc. All the major actors (Google, Microsoft via Github, Gitlab, node…) are starting to keep registries of problematic code, and you can use those too (but, that will make you dependent on them, and pretty soon they'll start scoring projects in ecosystems they control, and force you to do whatever changes they want for free, if everyone relies on their score, and a bad score becomes the kiss of death).<br> <p> <p> Or, just choose things available in a major Linux distro, adhere to its update cycle, and update whenever it does in its devel branch.<br> <p> There’s no miracle, anything like static linking, containers, vendoring, private forks, that isolates you from the version bumps of others, puts you in power. With power comes responsibility. The less you depend on the update checks of others, the more you need to perform them yourself.<br> <p> As a rule, any upstream new version should be checked for security or dataloss fixes. Quite often those are not traced, and you end up updating by default, because it's less work than auditing all the code changes to identify what is needful.<br> <p> <p> </div> Fri, 28 Jun 2019 07:59:01 +0000