From stolen laptop to inside the company network
dolosgroup.io
dolosgroup.io
Either use the OS-provided solution (Like LUKS, FileVault, or BitLocker), or use a cross-OS solution like Veracrypt <https://veracrypt.fr/>.
Secondly, to avoid the problem in this article, you should have an external password necessary to unlock the drive; not a TPM. This is, of course, not what most people do, since typing in passwords is tedious.
However, if you mostly need to boot up the laptop when connected to a specific network (e.g. on company premises), and it’s acceptable to require a manually typed password when the laptop is not present at that location, and if you use a Debian-based OS, there is a solution! Shameless plug: https://www.recompile.se/mandos
https://en.wikipedia.org/wiki/Comparison_of_disk_encryption_...
> [...] it appears that OpenZFS encryption is far stronger than LUKS or VeraCrypt encryption.
> LUKS and VeraCrypt use the XTS mode of encryption, which is not authenticated, and is vulnerable to some limited recovery of information when an attacker can have access to the encrypted data at different times. On the other hand OpenZFS encryption is authenticated and at the state of the art. Also, you should take care to disable compression when encrypting with OpenZFS.
This is new to me, why?
Random binary data doesn't compress very well, sometimes even negatively.
TBH, with whole-disk encryption I would not worry too much about this attack (the threat model is almost always theft where repeated observations of the cryptext after being modified by someone with the key are not practical), but it was core to a lot of vulnerabilities that basically forced TLS-level compression to be almost universally disabled.
There have been what’s called “compression oracle” attacks on SSL with compress then encrypt scheme, see CRIME
https://en.m.wikipedia.org/wiki/Oracle_attack
An attacker could inject known plaintext to an unknown source and observe the size of the ciphertext. If the size doesn’t change much, it means the chosen plaintext is correlated with the source. Several variants exist.
Compression is often not recommended in VPNs.
https://magazine.atavist.com/category/Mastermind/ Recommended reading!
https://blog.elcomsoft.com/2021/06/breaking-veracrypt-obtain...
Disk encryption is generally in XTS mode, and not authenticated. That’s not limited to veracrypt.
There are several different products on the market, and a variety of ways that native solutions like Bitlocker can be configured.
Is that an unreasonable burden on people?
I wouldn't call it a burden.
I always switch off the biometric access of any machine, so you can save yourself the hassle of cutting off my thumb or trying to unlock a device when I am asleep.
Though Idunno how happy that'll make you.
The idea is that basically very few keyboards have an F15, let alone applications that rely on the F15 key.
This is not a good look, but if that's how you want to play the game of lying to your employer, fine with me!
If you want to lock your PC you need to lock it.
I feel like since I'm on the security team, I should find a non-exploit method to actually resolve the policy failure.
...and now I have a project for this weekend.
The naive approach is to look at device ID, but article already talks about copying identification data, and the rest of USB descriptor is trivially copyable as well.
Is the system going to have a rule like "mouse moves same amount of pixels with equally spaced pauses"? But what if they randomize motion commands and intervals between them?
https://docs.microsoft.com/en-us/sysinternals/downloads/proc...
https://docs.microsoft.com/en-us/sysinternals/downloads/proc...
There is no device ID, process ID or binary to match.
If they are stuck on that policy, they should give you a smart card/yubikey heck even a fingerprint reader (You can't rotate these :-p ) to unlock your device.
You will just end up copying and pasting it around. I'd rather avoid that as there's many ways to copy out your clipboard with Javascript or a malware payload that somehow got onto your host.
Even with a 12 password policy I see most people just using 'MyP@ssword2021', so I guess with 64 characters most people will just use 'MyPassword(012..9){6}'
https://www.my1login.com/resources/password-strength-test/
Along with this:
https://www.random.org/strings/
and I discovered that apparently, a 7 character password of random chars that includes a 0 (zero) is really hard to crack!
I wont be doing that though for my own passwords but it was interesting none-the-less.
I hope they also have a 30 day password expiry policy as well. Dont want users to get too comfortable with their password.
I currently work from home.
Habits are important. I also put on my parking break every time I turn off my car!
So, IMHO, not an unreasonable burden!
i thought the whole point of hardware oracles like TPMs was to avoid loading a PSK into RAM, making removable RAM sticks simple non-destructive attack vectors.
I.e. it's not uncommon for you password to be used to decrypt an encryption key which then lives in RAM and is used to decrypt data. So as long as you "just" have a TPM then it's not preventing that attack wrt. full disk encryption. For it to do so you need either a secure module on you hard-drive (and trust that module) or need to pipe all disk I/O through the TPM (and hope it's fast enough). Through there are (should be?) some hybrid models.
Anyway you can combine both a TPM and a external password (in different ways depending on how the encryption is done).
One additional common reason against using a TPM for full disk encryption is if you want to make data recoverable even if you TPM (motherboard/cpu) fires itself.
I would say for most companies the benefits of requiring a password (or better HSK + PIN) for boot instead of only a TPM are outweighing the risk of a RAM removal attacks. Especially if combined with intrusion detection and short times between suspend and full (non hybrid) hibernation.
It's a feature of modern server CPUs which have a AES-128 encryption engine directly embedded in the memory controller (and combine that feature with virtualization, i.e. different encryption keys for different VM).
> does LUKS on Linux keep the keys in the processor's SME all the time?
The LUKS mater key is kept in the Linux Kernel Keyring and while I'm 90% sure that at least when accessing a encrypted partition it's in RAM.
I also would guess that the large majority (all?) of on-the-fly disk encryption software suites/libraries have this problem.
The only way not to have this problems would be to pipe all disk (data) I/O through a fast encryption engine connected to the TPM. And as far as I know this is not part of the TPM feature set(1) (the fast, high throughput part). But then DRM has kinda similar requirements, so maybe I'm wrong.
Through IMHO most companies and people in most situations don't have to worry about RAM extraction attacks as they are way to complicated and brittle, especially if combined with e.g. case intrusion detection and suspend-to-disk automatically after some time. Through as far as I remember it played a role in some "police extracts chats from locked iPhone" cases.
(1): TPM is besides some features around attestation and early boot mainly a from of Hardware Key Store, so e.g. if you use it to sign a blob you don't pipe the blob through the TPM but you (cryptographically secure) hash the blob and then only sign the few bytes long hash by passing it through the TPM. Similar encryption is normally done by doing a AES encryption of a blob and then encrypt the few bytes long AES key using the TPM. But again, I'm not a expert in that area and thinks might have changed, but I guess they haven't (I would be surprised).
or tell microsoft to use tpm 2.0 features if they force us to use a tpm v2?
Using a tpm without such features in order to improve a disk encryption setup to the same or above that of a password is difficult and full of problems, and there are some distinct drawbacks. There is a reason why Microsoft bitlocker is primarily intended to protect a users home directory after they have provided a password. If the pin to the tpm is in clear text on the disk, and all the tpm is doing is converting that pin to a password to unlock the disk, the benefits are generally small.
Back when I worked at MS, a PW was required on boot to deencrypt the drive.
I am honestly shocked that isn't the default for bitlocker. But then again it does require people to have a unique bitlocker PW, and if they ever forget it, everything on the machine is gone for good. (Which I've actually been bitten by, oops!)
I am not sure if it was the same system, but at a company I worked for we also had a boot password for bitlocker. People would sometimes forget it or bitlocker would somehow corrupt itself. IT was usually able to fix it though. I believe they were able to print out some kind of longer master password that could be used to unlock the machine.
(It would be nice if MSFT would do with Bitlocker recovery keys what they do with EFS recovery keys, and encrypt them with a public key. At that point popping Active Directory wouldn't be enough to get Bitlocker recovery keys-- you'd need a private key that, hopefully, was stored offline or in an HSM.)
manual PIN entry IS the default for BitLocker, and the article states this.
Even though it decreases security substantially, they can still use lots of fancy words in the technical description, and only someone with knowledge in the field will understand how most of it is BS.
So ideally you'd just get your recovery key and store it someplace well protected like a safe or a password manager.
i think passphrases are better for any situation where you might be typing them in multiple times a day.
since you can use all lowercase letters, it makes it much quicker than having to press the shift key for capitals or symbols, and you can make up for the lack of those characters by using a longer words/passphrase
https://www.useapassphrase.com
on top of that i usually spend a bit of time choosing words that are quicker to type. like words that have letters that alternative between each hand seem to be quicker than typing a word that's only on one side of the keyboard. avoiding words that have double letters for the same reason. making sure the end of one word and the start of the next are typed with different hands. choosing words where most of the letters go in the direction of your pinky to your index finger if possible
If you insist on choosing words, you must compensate for this by choosing more words; i.e. having a longer passphrase. Exactly how many bits of entropy you lose by manually choosing words is hard to say without knowing your exact criteria for choosing, but it can be calculated exactly if these are known.
We've got a few parameters to work from here:
- By a Google Books estimate from some years back, there were roughly 140 million books ever published. That's been going up by ~1--5 million a year for the past decade or so (only about 300k are "traditionally" published). See Bowker.
- If we limit ourselves to a reasonable canon -- the 100, or 1,000, or 10,000 most-frequently-read books, that number goes down a lot. (Twenty years ago when I had this conversation at work with a user, I said "a phrase from Alice in Wonderland isn't obscure enough. They'd chosen lines from "Jabberwocky", and no I'd not run a cracker.)
- A typical book runs about 250 pages, at about 500 words per page, and about 10 words per sentence. That's about 125,000 words, or 12,500 sentences, per book. Even assuming no sentence ever repeats (they do), that's "only" about 1.7 billion sentences in all published books. For the top 10k, it's only 125 million, the top thousand and 100 are 12.5 and 1.3 million respectively.
Computationally and cryptographically, those are small keyspaces.
Oh: and many of those books are scanned and OCRed. ZLibrary (from which LibGen and other sources pull) has over 8 million books (http://zlibraryexau2g3p.onion/) --- approaching that of a substantial university library collection (The University of California library system has 40.8 million print volumes across 10 campuses and 100 libraries, with 4.3 million digitised in HathiTrust: https://libraries.universityofcalifornia.edu/about/facts-and...).
Randomly-gathered words (EFF Diceware or xcdpass, see https://www.eff.org/dice or https://pypi.org/project/xkcdpass/) are robust --- we don't just combine words at random typically. And as mentioned, joining phrases from different books should be reasonably memorable (combinatorics work in the defender's favour).
Now TFA says it took 30 minutes and that's within the timeframe of an "evil maid attack".
If we take the same 30 minutes, then it's doable to: dupe the SSD and install a physical keylogger between the laptop's keyboard and the laptop's mobo, put back the laptop in place while looking like nothing happened. Then on the next login, when the person enter his password to decrypt the SSD, have the physical keylooger emit (radio?) the password.
Some may say it's science fiction but in TFA in 30 minutes they opened the laptop and hooked an analyzer to the TPM.
I guess what I mean to say is: it's hard to be safe in the face of an evil maid who has 30 minutes of access to your machine.
TPM is fine, but you need to set a PIN to unlock the TPM. If you have a TPM without a PIN, somebody can just swipe the whole machine. PIN guesses are rate-limited by the hardware itself, so the PIN can generally be faster and easier to enter than a complex passphrase without compromising security.
IMO: TPM+reasonably random PIN offers comparable security to a strong password without a TPM, and better security than a weak password without a TPM. I prefer TPM+PIN since it's easier to enter 5-6 digits at boot versus a big complicated passphrase, but it's personal preference. TPM without a PIN is pretty useless though.
I agree that for the user who would pick a secure passphrase, it's comparable security either way and thus really comes down to preference. I like tapping a quick PIN on the numpad rather than typing out a passphrase, but I can definitely see the advantages to the passphrase approach: you don't have to depend on a piece of hardware specific to the machine, and the attack surface for a potential backdoor is a lot smaller, especially if you're using FOSS full disk encryption software like Veracrypt.
what happens at lockout?
Isn’t it one million?
Sure, the door is locked, but it's still very easy to open.
How might I handle the situation where a given device has been stolen, attacked and returned, without my having observed it happening?
This is trivial to override for every laptop I've ever had, with sites like https://bios-pw.org/ You have to read carefully, like doing "<ctrl><enter>" and not just "<enter>", but it's worked many times for me.
Source code is here: https://github.com/bacher09/pwgen-for-bios
I do see that Lenovo (brand of laptop in the article) isn't on their list, though many others are.
http://www.thinkwiki.org/wiki/maintenance#Recovering_BIOS_pa....
Some high end machines also have specific solder points you can ground out during boot, but it's not shorting a battery, it's setting a GPIO state.
Now that computers in a LAN/WAN barely 'talk' to each other, and the apps are rarely on the same network as the users' computers, is there enough value in networking the computers relative to the risk of creating a valuable target for attackers?
Consider for example what the business case for attackers would look like if their target was an island of one.
Of course networks have benefits such as simpler ways for IT or MSPs to manage devices and updates, shared auth structures, directories and policies, etc. If we look at all those benefits, and consider the alternatives, are they worth the risk of a network in today's topologies with today's threat vectors?
There is actually a pretty big shift in corporate networks going on right now, originally driven by IaaS and SaaS adoption (if your applications and data don’t live in your own data center, what is your ‘private network’ doing for you?). This change has been massively accelerated by WFH/COVID in the past 18 months.
For those who aren't familiar with this, (for Palo Alto at least) there is a specific user assigned to pre-logon tunnels, and that user is supposed to be locked down - tight. Once a user authenticates fully to AD/okta/whatever, then the userID on the tunnel is swapped for the correct one, and your permissions become what they should be. Worth nothing that this is set up with firewall rules based on LDAP/AD user groups/UserIDs, so it's easy to configure, but probably easy to make mistakes.
So while the TPM hack was very impressive, this article only gives me a sense of safety for our own corporate laptops.
I am really happy to know my laptop isn't vulnerable to this (luks-based system), but I am very concerned with the potential (in)security of my collegues' laptops due to common use of corporate laptop hardware for software development and technical customer support.
Keep in mind that it was a sanitized laptop with no actual data on it, built for the test.
A random employee's laptop? Probably has all sorts of goodies. Don't get complacent.
Like a PASSWORDS.txt file on the desktop which said employee uses as a password manager.
Or my personal super advanced, high security method - keep it in the 'drafts' folder.
So just fire it up, and access the passwords. The on disk encryption is pretty redundant.
Because you don’t use any “enterprise-grade” commercial security solutions on them, no tele-support, no lights out remote management, no antivirus or anti malware, no firewall, no VPN, no nothing?
Because if you have any of that, you almost certainly have holes like this one.
1) Requiring an additional factor for disk encryption in addition to the TPM data. You want the TPM to be involved in order to be able to detect whether the boot environment has been modified and refuse to hand over the key in that case, but this case is an example of why automatically handing over the FDE key at boot isn't ideal
2) The use of parameter encryption. TPMs support the establishment of sessions that include key exchange, and can then encrypt responses sent to the OS. This isn't ideal - verifying that you're communicating with a real TPM is somewhat convoluted at this point, so someone with physical access can interpose the TPM and MITM the key exchange. This is a substantially more invasive attack, though. I'm surprised that Windows isn't doing this by default, which makes me suspect that there may be some corner cases that make this more difficult than I imagine.
3) Storing the VPN credentials in hardware. Once the attackers had access to the filesystem, they could simply copy the credentials. If the VPN key were actually generated on the TPM then this could be avoided. In order to get on the VPN, the attackers would have had to modify the filesystem in order to let them put the disk back in the original machine and boot it. This would mean they'd need to retain access to the machine for as long as they wanted VPN access, which increases the chances that the machine's absence would be noted and its credentials revoked.
4) Requiring user auth before any amount of VPN access is granted. It's a lot easier to manage systems if they join the VPN without requiring that a user authenticate to the remote endpoint, but this is kind of a failure of the VPN model - once you're on the VPN, you've got access to everything on the VPN that doesn't require auth, and there's probably (for one reason or another) a lot of that.
As mentioned elsewhere in the comments, using an fTPM (ie, one that's running on the Management Engine or in the Platform Security Processor) would avoid this (there's no convenient low speed bus for you to probe in that case), but I'm kind of reluctant to argue that the tradeoff is worth it.
The reason: the newer yubikeys don't ever leave the usb port. Mine is almost impossible to remove. And if this attack is based on a stolen laptop then chances are the yubikey comes with it.
Incidentally, you can also use a paperclip (a chain, even) to trigger a touch without having to touch the key directly.
You can choose, no pin / pin once after plugging in / pin on every use.
Users are told how the security works, but OpSec is _difficult_. Which means it'll only take that one time the user is lazy and an attacker gets lucky.
Coworkers of mine did a recruiting trip to <untrusted country> and were told by corporate: do not bring your laptops. We'll provide you with laptops when you get there to use for the week. Any laptop you bring stays there because we don't trust that you didn't leave it alone in a hotel room at some point. And if that happens, we presume it's compromised.
With today's consoles, it's sort of assumed that the attackers will get read access to the first stage boot loader, so they use public keys to validate any stages not originating from the CPU die itself. Then attackers can't replace follow on stages even with read access to the first stage.
https://www.mxic.com.tw/en-us/products/NOR-Flash/Serial-NOR-...
my curiosity got the better of me and i looked it up and thought other people might be curious too, and I thought it might save people time if I gave the details
Only as an example (and not actually usable in this case unless a chip-off is done), there is what I call a cross-breed between an octopus and a acupuncturist:
https://blog.acelaboratory.com/pc-3000-flash-spider-board-ad...
They couldn't log in, because that VPN tunnel is only open before logging in. So they had to gain access while on the login screen.
They couldn't log in, because that VPN tunnel is only open before logging in. So they had to gain access while on the login screen.
You say that as if it's not a good idea, but in the absence of external factors (password being used elsewhere or a hash stored somewhere e.g. for corporate SSO), using the same password shouldn't really diminish the security of your setup.
Generally the FDE is unlocked in an offline and minimally functional state, and being a one-time entry @boot kind of thing it's far more practical to secure with things like a temporarily connected crypto hardware dug out of your bag or somesuch.
There's clearly some value in making them different.
So many people have this mental model of a castle with a moat and inside the network it's unpassworded database servers and control panels, the same default password everywhere, etc.
It brought down the medical records systems and cost the hospital between $40 million and $50 million (mostly in lost revenue because they basically had to cancel non-emergency visits and procedures across multiple locations for a month). Quite an expensive email!
https://vtdigger.org/2021/07/21/malware-on-employees-company...
That is such a lame “cause”. What was the actual underlying cause - i.e. what was it that allowed a malicious email to pwn the laptop?
If they somehow need to be able to do that, I presume there is normally some form of sandboxing?
Best defense is working backups with regular snapshots. Patient data would still be exposed and I think the only way to mitigate this is collecting the lowest amount of data possible.
Ideally patient data is encrypted in a way that the patient himself would need to provide the password to access the information as just-in-time decryption.
Now I have a laptop I can WFH from and take into the office when I do, and it has higher specs than the desktop (VR more-than-capable) because we don't update hardware piecemeal due to leasing it. The only benefit of having a desktop for me would be to allow for more HDD bays internally.
Rigid rights management would help, but security competes with ease of access.
1) Physical access = Pwned
2) Determined attacker = Pwned
Someone more familiar with TPM 2.0 could likely answer this authoritatively, but my assumption is that it's the latter.
Properly leveraging TPM 2.0 features would likely be the best way to solve this problem.
Excuse me, but what? What code executes when reading a pdf?
(Not sure if your question meant code inside a PDF? If so, you'll find that PDFs can contain JavaScript which is executed when opened.)
For context: fTPM refers to a software-based implementation of a TPM running in an execution environment the OS has no direct access to. On Intel hardware, this is on the Management Engine - depending on the specific CPU range, this will either be on the CPU package or in the motherboard chipset. On AMD systems, it's running in the Platform Security Processor, a separate ARM core that's on the CPU package. For ARM systems, it's generally running on the main execution cores but in the TrustZone environment. In all these scenarios the TPM code is running in the same environment as a bunch of other code that exposes some additional attack surface, so seems less appealing than a discrete TPM. On the other hand, the sort of attack described here is probably impractical unless you have much higher end equipment.