We've learned nothing from the SolarWinds hack
macchaffee.com
macchaffee.com
I want to get there, but I also don't trust anyone except (maybe) myself to determine what capabilities are "good" versus "bad".
I literally just spent most of today messing with my 2018 Samsung TV trying to get rid of the bloatware they pre-installed. I had to do that because the apps took up 96% of the storage within. These apps cannot be deleted normally.
If we're heading towards a place where vendors are the ones deciding what users are allowed to do, as well as what the software is allowed to do, and at what level of granularity, I have no reason to trust them any more than I trust a russian state-sponsored hacker.
Can you elaborate?
1. Reset my TV to factory settings.
2. Go into the "apps" item while it desperately tries to update itself
3. Go into "Developer Mode" by pressing 12345 on the remote.
4. Restart the TV by holding down power button for 2 seconds.
5. Open "Apps" again
6. Open the cog.
7. Under the app you want to remove, press "Deep Link Testing" and then hit cancel.
8. If the "Apps" app hasn't been updated yet, your delete button should magically reactivate.
I was able to delete the product manual which is like 90mb, all others were reloaded after another restart though but it gave me enough wiggle room to update and install other apps.
TV comes with 5Gb hard drive
TV comes with 4.75 Gb of OS + bloatware apps.
Watch youtube and youtube caches .25GB for 2 hour long information video.
TV complains of no storage.
Rinse. Repeat
Same with the Shield, it's like $150-$200 while a Chromecast with Google TV is $50 and does pretty much the same thing. Either would be a huge upgrade over integrated smart TV UIs.
I have latest LG OLED and I would have hapilly paid more for to get it without smarts built in. Using it with attached Apple TV and the experience is sublime when compared to the builtin crap.
except using a chromecast is just undoing what you thought you had accomplished.
I think the Shield was nice for a while too but then Nvidia started adding their own ads.
The Chromecast with Google TV's as close to a "Pixel for TV" as we're gonna get, I think. Wish they'd make a version with a faster processor though. The current model is still noticeably laggy.
It has definitely been paper cuts on my shield I've had for a long time (2018?)
Originally awesome, but then the last major Android update added the advert banner. It was defended because it basically only showed adverts for shows and movies.
In the past fortnight it has started showing other adverts, perfume I think.
People keep saying this with zero proof or evidence.
We used to be able to buy TVs that were pretty nice and intelligent and didn't have all the data collection and they didn't cost that much more. I'd like to be able to buy those again.
https://www.theverge.com/2021/11/10/22773073/vizio-acr-adver...
So if the devices cost 11.4% more that'd compensate for the elimination of Platform+ profit.
And depending on the accounting it could be much less than that since the cost of the devices would go back to being much cheaper if they were just dumb TVs with HDMI ports and no spyware/adware.
So that's about what I thought.
There is so much available data on this subject I assume at this point it is common enough knowledge people don't feel the need to cite sources.
https://www.washingtonpost.com/technology/2019/09/18/you-wat...
https://tv-watches-you.princeton.edu/
https://www.consumerreports.org/electronics/privacy/how-to-t...
There is still some bloat in them (bundled apps) but it's much less intrusive and crappy than the TV ones, IMO.
Everyone makes them now... Google, Amazon, Apple, Nvidia, Roku...
I personally have been buying Swedx for 5 years or so.
What the post talks about is "a good system" of capabilities, that is, a comprehensive, logically sound, lean way to describe capabilities that would be widely accepted and applied. With that, indeed a lot could be achieved.
If we assume that the "owner" of this list of capabilities is the same party that's writing the software, you better believe they don't (or won't eventually) have the user's needs in mind. Enshittification makes a fool of us all.
If we do agree a standard it'll need to be about actually protecting the user, but implemented by manufacturers who have no incentive to actually do that, and lots of incentive to protect their data, sorry, business model.
The illusion of control and oversight is why Blueteams always lose in the Cyber Game.
It's not feasible, and you effectively don't have time for that. The sheer amount of millions of alerts per day are the result of people still trying to spin the hamster wheel because they don't take a break and think about how this is gonna end up.
Don't get me wrong, but I think this is a clustering and statistics problem. You can never be 100% secure and sure about everything, but you can always push the odds in your favor on a larger scale of nodes.
Nobody cares whether a system got hacked if there was no compromise of the database and if it can be rolled back easily afterwards. That's why I believe in a fully automated approach based on a strong(er) inventory and stronger communication between systems in regards to incidents and responses.
The proposed solution - 'run software in a way where we don't really care if it has a vulnerability, because it will happen' - is close to reality, but not quite there. The reality is that no matter how good our technical solutions are, trust ends up being a people problem, which means that compromises of that trust are going to happen. No matter how fine grained your capability based system is - if a system has the capability to do anything, then you're going to suffer loss when it is compromised. If a system gets compromised or corrupted and you don't care, then it's not a system you were using for anything useful in the first place.
While capability based systems are another important part of the solution, I would counter-propose that what we're actually looking for is compartmentalization. Acknowledging the reality that parts of our system are going to be compromised, and we are going to suffer some loss when that happens, carefully controlled capabilities can help scope that blast radius of compromises.
If we can't change that, what hope we have for a sane small-kernel capability-based system?
Do you mean macos? It falls under this definition from what I can see.
Pretty sure Puppet has something similar with pre-built binaries.
In any case, today Darwin really is just a subset of projects, which can’t be used (or sometimes, can’t even be compiled) without other projects that are closed source. The projects that are open source are still updated, but new projects are rarely open sourced. And that includes rewrites: when a project goes through the rewrite treadmill and gets replaced with a shiny new codebase written from scratch, that new codebase is often placed in a new project, which like any other new project is usually not open source. Thus, even though open source projects usually aren’t directly changed to closed source, the amount of functionality provided by open source projects shrinks.
The security game is just too fast paced for a profitable business. Until we reach the point where it makes financial sense to move slowly and take extra time to ensure critical business systems are secure, nothing will be fixed.
That said, it's often easy things that get the most benefit and we are collectively a long way away from getting the basic security things done properly across the board.
They are already paying for it, and not getting the security.
It seems like a fine structure would have to take that into account? Or am I way off base?
We wouldn't have the level of tech we have today if we were to require 'mistakes to be impossible', Rapid growth requires mistakes to be acceptable in some situations.
It also ignores the point from the article that the solution can't be trying to make all software secure. Whatever the incentive mechanism and whatever the source of the insecurity, it's unrealistic to think we're ever going to be able to make that a reality. But designing the environments software is used in such that broken software isn't the end of the world seems doable, if also incredibly difficult.
For that matter, even considering to use components that unfit for purpose is inconceivable in most professions. Only in software do people use systems with no specifications, no guarantees, and where even the component makers did not intend or design them to be load bearing.
Particularly in reduced competition due to deep pockets being required to even play the game.
On the other hand, a quality needs fines. Otherwise, it's too easy to "forget" an inconvenient quality to make a short-term profit (and sometimes compromise users data).
You can have devs work on bug fixing or you can have them work on features. Whichever brings in more money will be prioritized.
There's certainly degrees of CVE counts and the like, but as long as it's not egregiously worse than everyone else, being the subject of a DEFCON presentation puts you in pretty good company with literally everyone else.
And while there are customers who are aware of things like this and shop accordingly, I'd personally be more concerned about my own reputation damage. It's not the sort of thing I'd like to get questions about in a job interview.
I totally agree that putting more thought and care into software development could certainly be beneficial, especially where security is critical. But I think the point of the article is that an alternative, and maybe more realistic, approach is to make critical systems and networks less brittle so an intentional or unintentional software issue isn't the end of the world. Even in airplanes, computers don't always work right. But it (mostly) doesn't result in planes falling out of the sky because the safety of the system as a whole isn't reliant on one piece of software working perfectly 100% of the time.
Surely the gov lost a lot of money from this hack assuming they had to hire consultants, ect just to deal with this massive oversight.
The fact solarwinds or equifax exist after such egregious security errors with a botched response at best or an intentional attempt at covering up the size/scope of the problems at worse should tell you everything you need to know.
If you have been an iOS developer since 2012, I'm sorry you had to go through that, but your extra work has been profoundly important to the privacy and security of mobile OSes. I'd like to see that same principled energy brought to desktop and server OSes.
Or, demand the EU let you side-load so you don't have to bother.
AFAICT the only way to sidestep things on Android is to root the phone, then explicitly install some native-code binaries that do direct access to things normally controlled by permissions. This is not something that can easily happen by mistake, let alone by normal operation.
- permission to ignore my subscription intents
- permission to bypass my private relay prefs
- permission to share my PII and purchase profile to third parties
- permission to share my browsing with adtech
- permission to dynamically load unvetted code
- permission to bully the user into letting the app out of the sandbox model
- permission to bully users into granting elevated privs
There are any number of permissions devs think side-loading will give them, and any number of these actively misused by app devs today on MacOS side. A majority of the side-loading table thumpers build business models on the user as the product, the user's data as the thing of value. These firms are not on the user's side.
Of course not you, gentle reader. You only want side-loading for good. The government only wants encryption backdoors for the children. If we think back and side doors weaken security posture or tempt legislatures, we should maintain that stance.
Instead of building holes we pinky swear are only for the good guys, imagine there were no holes.
I don't even know exactly on a OS permission level what you mean by some of these, but at least forsome of these, I know for a fact you currently can't do by sideloading an app.
I'd be happiest if even payments and subscriptions were still required to go through the customer-centric system Apple set up, the number one dev complaint.
For users, ideally Apple would relax nothing for a side-loaded app, and would maintain a stringent review process for whose certs can authorize apps, and a zero strikes policy for revoking such certs. Unfortunately, some of these will be relaxed.
It is the number one complaint due to the 15-30% cut they take, but even now, entities such as Amazon, Uber and others dealing in real life goods don't have to use Apple's system. It is not customer centric, it is profit centric.
> For users, ideally Apple would relax nothing for a side-loaded app, and would maintain a stringent review process for whose certs can authorize apps, and a zero strikes policy for revoking such certs. Unfortunately, some of these will be relaxed.
Could Microsoft release an Xcloud client under these rules? Torrent apps? Emulators? These are all perfectly legal and some of these don't even require payments. Could apple still collect the 100$ per year from these devs?
Or you can install a company cert profile, or pay 100$ a year for a dev account.
I wonder if there's enough demand for a service like this to be viable. Bundled with a universal package manager, signed and verified binaries, caching mechanisms, etc.
… now, that doesn’t mean one couldn’t make money while utterly failing to ultimately deliver the promised value.
When you run all your code and all its dependencies with full authority, it only takes one tiny piece of malicious code to blow the whole system wide open. I think scanning will always be a losing battle.
pypi: "YOLO, let us deprecate signatures!"
It seems the focus now is more to keep the secrets on github and authenticate with those.
https://discuss.python.org/t/2fa-usability-on-pypi-and-with-...
It reminds me a bit of what the journalism world did by becoming so reliant on Twitter for sourcing and communication, but in our case I think it's deeper and worse. We've hard coded GitHub into countless systems. I'd venture to say that most CI systems, package managers, build farms, etc. would break.
And at work my team uses a mirror on LAN. The other teams on the other hand…
Signatures are checked if present, at least.
Also packages that stop working because python removes stdlib modules that they use, tend to get found and patched in distributions. In pypi if they are abandoned, they will be unusable for all eternity.
I started using this in my org a couple years back, and we've ended up using it to check commercial software as well just to get an overview of known components, vulnerabilities and things to watch out for.
I really wish the big repositories would invest more in useful mechanisms; when we looked into this before making our decision, the only repository with any kind of checking was Maven Central. Nuget had support for author signing and repository signing, and Pypi (at the time) author signing. As far as I remember none of the other repositories had any verification of anything including the git repo, so you couldn't even determine what commit hash the code was based on or who was behind it.
What the author wants is unrealistic and their understanding of detections isn't ideal. I assume they know that a SIEM doesn't need agents. But an EDR does. EDR can be a well configured auditd/sysmon and a response agent. Or you pay up and get a "nobody gets fired for buying crowdstrike".
One reality is that APT hacks are out of scope for most orgs.
Another reality is that for at least a decade and a half the security industry has accepted that prevention is not a good strategy against APTs. This is why you need that other EDR agent and SIEM. You focus your detection on what the threar actors do after compromise and around your important data. For most APTs this is effective but it is far from perfect. The biggest problem is people like the author who are not seeing actual compromises happen all the time.
Security costs money and it can only cost as much as the risk tolerance of the company. It can't cost so much that the company's profit margins take a beating for example. That's why NIST recommendations are important, so execs can say we are spending enough.
Another side of prevention is that it needs to be as invisible as possible. If users notice it or it gets in their way, by default it is bad, you have to do things to compensate for the deteriorated user experience. You can add MFA for example but better make up for it by making it a yubikey and doing SSO.
Keep in mind that corporate networks are a hodge-podge patchwork of random things pieced together over time. Threat actors need one mistake to abuse. And the P in APTs mean they'll try until they find the mistake, it's their day job quite literally lol.
The questions that we have to answer are heavily focused on the assumptions that we:
1. Have a network. 2. Have a physical premises. 3. Don't use API keys.
I'd happily attest to using AWS IAM properly. I'd happily be told that we aren't using it properly and asked to make changes.
As a smaller vendor selling into a larger organisation you end up spending a lot of time rephrasing the same answer, which often boils down to "We don't have this very specific control you're asking for, but we do have an equivalent more appropriate for our size or business which is ...".
> I don't quite know how to put this, but our entire field is bad at what we do, and if you rely on us, everyone will die.
Full disclosure, I am a member of the steering committee for in-toto and the CEO of TestifySec which is the main contributor to Witness.
That's about as likely as everyone agreeing on a good, standardized operating system architecture, API, and driver model that also happens to be Written In Rust™ for good measure.
I wonder if one could do better by using a HackerRF and spy on LTE+WiFi communications. You wouldn't need to decrypt them, just identify how many different devices there are.
That other approach is to rely on confidential computing technologies, in particular, the remote attestation capabilities of Intel SGX and AMD SEV. These technologies are often associated with DRM or multi-party computation, but they can be used in a different way. In this alternative use case you statically attach a remote attestation to a piece of data as a signature of computation.
A signature of computation is a proof that a piece of data was derived by running a specific program with a specific input. If that program is deterministic, and has been verified by yourself or a third party, then it means the correctness of the transform can be mechanically verified in such a way that it's much harder to hack. In particular if you use SGX then root exploits on the machine doing the computation won't help the attacker due to the hardware level protections. If you use SEV it's harder but can AFAIK still be done with some specialized OS hacking.
Concretely this means that a shipped software artifact could come with a signature proving not only the identity of the developers, as is the case today, but that those files were produced using a known third party compiler and linker applied to e.g. a source tree at a specific git commit hash. Because those files can be verified by anyone including the developers themselves, it means that a compromised CI system is very limited in what it can do: every file has a cryptographic proof tracing it backwards to the input source tree, which in turn is replicated independently on developer's workstations and laptops so it can be checked by many semi-independent actors. And for extra value the company can hire a third party auditor who verifies that the source code at hash X does in fact meet the vendor's description of what it does.
I've experimented with this sort of approach in the past, but unfortunately CC as a tech gets sort of repeatedly stuck in the domain gap between low level systems programmers and the kind of wideband ecosystem building you need to deliver genuine business value. People aren't aware of what it can do or how to use it.
Also, this approach has a subtle side effect: it means the compiler is now a valid target for attack. For example if source code can corrupt compiler internals sufficiently to inject code, then you could potentially cause a miscompile that invalidates the proof. One solution for that is to use memory-safe compilers but the only one I know of is Graal.
(I'm not sure whether SolarWinds involved any malware or unintended vulnerabilities, from my casual reading it seems to have been a bunch of different attacks...in any case, these supply chain attacks/vulnerabilities exist whether they were used in SW or not...I'm just always slightly uncertain by what is meant by SW-style; not a criticsm of this comment, just laying out my ignorance!)
Re memory-safe compilers, is Graal the known one because it is (I guess it must be given the claim) pure Java? As opposed to relying on eg LLVM or GCC which are heaps of C and C++.
Yes attestation has to attest to the execution of a program and there's no program that can tell you the developer was competent/honest/not compromised. But what it can do is, for example, tell you that a build was done in a clean and verified environment i.e. one free of attackers/malware. And importantly this guarantee can be made also considering the cloud vendor as an attacker. Think about how horrific it'd be if an attacker got privileged access to AWS or GitHub Actions, for example.
Oh, and your mention of Graal reminds me of reading here 56 days ago that it has some support (JavaScript-only at that time) for sandboxing itsself https://news.ycombinator.com/item?id=37572536 presumably not nearly as fine-grained as capability-based schemes mentioned in the OP, but still a useful step perhaps.
The Rust compiler is another (being written in Rust).
Discouraging the use of web application firewalls - https://news.ycombinator.com/item?id=38255004 - Nov 2023 (125 comments)