this post was submitted on 02 Oct 2023
1260 points (98.4% liked)
Technology
59577 readers
4403 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I still don't understand why Windows doesn't use .exe whitelisting instead of bothering with endless blacklists and heuristics and antiviruses.
On any given system there's a handful of legit .exe while out there there's like a billion malware .exe, and more created every minute.
Or at least switch to an explicit "executable" flag like on MacOS and Linux.
Windows has both WDAC and Applocker for allowlisting, not just for exes, but stuff such as powershell scripts and what drivers run in the kernel as well.
https://learn.microsoft.com/en-us/windows/security/application-security/application-control/windows-defender-application-control/
In it's strongest form (a signed WDAC policy) even admin access can't easily override it, and a well written policy can even enforce stuff such as downgrade protection (example: only allow firefox.exe signed by Mozilla at or above a certain version) which prevents an attacker from loading older versions of an executable.
The problem is that it's not so easy to use in practice - an installer will often drop loads of unsigned files. Tor Browser ironically enough is a prime example, and any WDAC policies allowing it have to fallback on hash rules, which are fragile and must be regenerated every update, or filepath rules which are not so robust.
Microsoft is trying to make allowlisting more accessible with Smart App Control, which runs WDAC under the hood. It does save the hassle of managing one's own policies (and also blocks certain filetypes like lnks commonly used for malware), but it is not very customizable.
From my experience, Windows by default completely blocks non-Microsoft-verified .exes. It's called S mode and usually requires a Microsoft account to exit.
Do you mean that it's enough just to be on a microsoft account? On 10, I didn't technically do anything to exit that and I just have an annoying popup first time I'm using an unverified app. I can just allow them.
You need to "download" normal mode from the store, which requires a Microsoft account to use. All of the W11 computers I've gotten came in S mode.
Because it makes it the easiest thing to spoof an .exe which enables attacks of which you will never get out of. A legit.exe vs a spoofed legit.exe will be the exact same in every way except the coding in spoofed fucks you.
Edit: you're trading security risk for security risk that makes it easier to hide. Not worth it.
Edit 2: their is nothing 100% secure MD5 and Sha1 are both spoofable. Checksums and anything is capable of being man in the middle. You people act like you just found something that can't be broken. This is the real world the moment you switch most black hatters and white hatters will switch too...
I'm not sure that these things work the way you think they do... an antivirus wouldn't just look for the name of an executable to be "legit.exe" but rather would look at what the program calls itself in it's manifest, compute the hash for the executable binary file, and compare that hash against a database of known good hashes. If the contents of the executable compute a hash identical to the known good hash, then you know the contents of the executable are clean.
Still getting into programming and having a bit of trouble understanding what a "manifest" is. What does this technically entail? Are "manifests" implemented differently by PL or OS?
The manifest (at least how I am using the term) is whatever metadata a file has, and the format and location of this metadata can differ between operating systems. Usually the manifest is generated by the operating system based off of header data from the file itself, and details about the file that the operating system can deduce, such as file size, origin, location, file type, etc. In Windows you can view this info by right clicking/opening the context menu on any file and selecting "Properties", on macOS by opening the context menu and selecting "Get Info", and on other OSes such as linux/freeBSD it will be something similar.
There are other usages for "manifest" depending on the context, for example a manifest.xml would be something a developer would include with an android app that has configuration settings and properties for the app.
Manifests are like an abstract for an executable.
How is this getting upvoted. This is ridiculous garbage, every exe whitelist would obviously have checksums attached, not just a filename.
Please don't reply to comments when you're talking out your ass, that doesn't help anyone. You don't know wtf you're on about, at all.
Not really, WDAC doesn't usually just look at the filename. It can look at the certificate it was signed by, or fallback to using hashes.
Lmao your edit 2 is completely silly. SHA-256 is what would be used for checksum verification, and SHA-256 is pretty much collision resistant, and even then if two files computed the same hash they would have such different contents/properties that it would be obvious they are not the same file. MD5 and SHA-1 have been phased out for any serious usage for a while now.
Seriously tho, if you don't know what you are talking about you should probably stop making a fool of yourself