This Week In Security: Invalid Curve Attacks, OpenSSH Shielded, And More Details On Coinbase

AMD Epyc processors support Secure Encrypted Virtualization (SEV), a technique that prevents even a hypervisor reading memory belonging to a virtual machine. To pull this off, the encryption and decryption is handled on the fly by the Platform Security Processor (PSP), which is an ARM core that handles processor start-up and many security features of modern AMD processors. The vulnerability announced this week is related to the encryption scheme used. The full vulnerability is math heavy, and really grokking it requires a deeper understanding of elliptical curve cryptography (ECC) than your humble author currently possesses.

During the process of starting a virtual machine, the VM process goes through a key-sharing process with the PSP, using an ECC Diffie-Hellman key exchange. Rather than raising prime numbers to prime exponents, an ECC-DH process bounces around inside an elliptical curve in order to find a shared secret. One of the harder problems to solve when designing an ECC based cryptographic system, is the design of the curve itself. One solution to this problem is to use a published curve that is known to be good. AMD has taken this route in their SEV feature.

The attack is to prime the key exchange with invalid data, and observing the shared key that is generated. A suitably simple initial value will leak information about the PSP’s secret key, allowing an attacker to eventually deduce that key and decrypt the protected memory. If you’d like to bone up on invalid curve attacks, here’s the seminal paper. (PDF)

OpenSSH Shielding

[Damien Miller] of OpenSSH was apparently tired of seeing that project tied to vulnerabilities like Rambleed and Rowhammer, so added a technique he’s calling key-shielding. OpenSSH now encrypts private keys in memory using a 16 kB pre-key. While an attacker with full knowledge of the process’s memory wouldn’t be deterred, the error rate of Rambleed and similar attacks is high enough that the 16 kB of randomness is likely to thwart the attempt to recover the secret key.

Firefox and Coinbase

We mentioned Firefox vulnerabilities and updates last week, and as anticipated, more information is available. [Philip Martin] from Coinbase shared more information on Twitter. Coinbase employees, as well as other cryptocurrency companies, were targeted with fishing emails. These lured employees to a malicious page that attempted to exploit a pair of Firefox vulnerabilities. Coinbase has a security system in place that was able to prevent the exploit, and their security team was able to reverse engineer the attack.

The first vulnerability has been dissected in some detail by a Google security researcher. It’s a weakness in Firefox’s Javascript engine related to type handling. An object is created with one data type, and when that data is changed to another type, not all the data handlers are appropriately updated. Under the hood, a value is assumed to be a pointer, but is actually a double-length value, controlled by the attacker.

The second vulnerability is in the functions used to prompt for user interaction. Specifically the call to “Prompt:Open” isn’t properly validated, and can result in the un-sandboxed Firefox process loading an arbitrary web location. I suspect the sandbox escape is used to run the initial exploit a second time, but this time it’s running outside the sandbox.

Odds and Ends

[Tom] wrote a great intro into how to Impersonate The President With Consumer-Grade SDR, go check it out!

Another city, more ransomware. Riviera Beach, Florida was hit with a ransomware attack, and paid $600,000 in an attempt to get their data back. For a city of 35,000 inhabitants, that’s $17.14 in ransom per man, woman, and child. According to the linked article, though, the city was insured.

Power To The Pi 4: Some Chargers May Not Make The Grade

The Raspberry Pi 4 has been in the hands of consumers for a few days now, and while everyone seems happy with their new boards there are some reports of certain USB-C power supplies not powering them. It has been speculated that the cause may lie in the use of pulldown resistors on the configuration channel (CC) lines behind the USB-C socket on the Pi, with speculation that one may be used while two should be required. Supplies named include some Apple MacBook chargers, and there is a suggestion is that the Pi may not be the only device these chargers fail to perform for.

Is this something you should be worried about? Almost certainly not. The Pi folks have tested their product with a wide variety of chargers but it is inevitable that they would be unable to catch every possible one. If your charger is affected, try another one.

What it does illustrate is the difficulties faced by anybody in bringing a new electronic product to market, no matter how large or small they are as an organisation. It’s near-impossible to test for every possible use case, indeed it’s something that has happened to previous Pi models. You may remember that the Raspberry Pi 2 could be reset by a camera flash or if you have a very long memory, that the earliest boards had an unseemly fight between two 1.8 V lines that led to a hot USB chip, and neither of those minor quirks dented their board’s ability to get the job done.

Mistakes happen. Making the change to USB-C from the relative simplicity of micro-USB is a big step for all concerned, and it would be a surprise were it to pass entirely without incident. We’re sure that in time there will be a revised Pi 4, and we’d be interested to note what they do in this corner of it.

Yo Dawg, I Heard You Like FPGAs

When the only tool you have is a hammer, all problems look like nails. And if your goal is to emulate the behavior of an FPGA but your only tools are FPGAs, then your nail-and-hammer issue starts getting a little bit interesting. That’s at least what a group of students at Cornell recently found when learning about the Xilinx FPGA used by a researcher in the 1990s by programming its functionality into another FPGA.

Using outdated hardware to recreate a technical paper from decades ago might be possible, but an easier solution was simply to emulate the Xilinx in a more modern FPGA, the Cyclone V FPGA from Terasic. This allows much easier manipulation of I/O as well as reducing the hassle required to reprogram the device. Once all of that was set up, it was much simpler to perform the desired task originally set up in that 90s paper: using evolutionary algorithms to discriminate between different inputs.

While we will leave the investigation into the algorithms and the I/O used in this project as an academic exercise for the reader, this does serve as a good reminder that we don’t always have to have the exact hardware on hand to get the job done. Old computers can be duplicated on less expensive, more modern equipment, and of course video games from days of yore are a snap to play on other hardware now too.

Thanks to [Bruce Land] for the tip!

Scripting Language Rapidly Develops A Clock

In the past, you might very well have started programming in Basic. It wasn’t very powerful language and it was difficult to build big projects with, but it was simple to learn, easy to use, and the interpreter made it easy to try things out without a big investment of time. Today you are more likely to get started using something like an Arduino, but it is easy to miss the accessible language and immediate feedback when you are doing simple projects. Annex WiFi RDS (Rapid Development Suite) is a scripting language for the ESP8266 that isn’t quite Basic, but it shares a lot of the same attributes. One example project from [cicciocb] is a scrolling dot matrix LED clock.

Continue reading “Scripting Language Rapidly Develops A Clock”

Magnetic Attraction Of Microduino MCookie Modules

We’ve seen countless different robot kits promoted for STEM education, every one of which can perform the robotic “Hello World” task of line following. Many were in attendance at Maker Faire Bay Area 2019 toiling in their endless loops. Walking past one such display by Microduino, Inc. our attention was caught by a demonstration of their mCookie modules in action: installing a peripheral module took less than a second with a “click” of magnets finding each other.

Many Arduino projects draw from an ecosystem of Arduino shields. Following that established path, Microduino had offered tiny Arduino-compatible boards and peripherals which connected with pins and headers just like their full-sized counterparts. Unfortunately their tiny size also meant their risk of pin misalignment and corresponding damage would be higher as well. mCookie addresses this challenge by using pogo pins for electrical contacts, and magnets to ensure proper alignment. Now even children with not-quite-there-yet dexterity can assemble these modules, opening up a market to a younger audience.

Spring loaded electric connections are a popular choice for programming jigs, and we’ve seen them combined with magnets for ideas like modular keyboards, and there are also LittleBits for building simple circuits. When packaged with bright colorful LEGO-compatible plastic mounts, we have the foundation of an interesting option for introductory electronics and programming. Microduino’s focus at Maker Faire was promoting their Itty Bitty Buggy, which at $60 USD is a significantly more affordable entry point to intelligent LEGO creations than LEGO’s own $300 USD Mindstorm EV3. It’ll be interesting to see if these nifty mCookie modules will help Microduino differentiate themselves from other LEGO compatible electronic kits following a similar playbook.

Nuclear Reactor Simulator Is The Project Of A Lifetime

Have you been watching Chernobyl? Well, so has everyone else. Right now it seems the whole Internet is comprised of armchair dosimetrists counting roentgens in their sleep, but [Mark Wright] doesn’t need a high-budget TV show to tell him about the challenges of wrangling the atom with 1980s technology. He’s done it for real. His memories of working at a Westinghouse Pressurized Water Reactor over 30 years ago are so sharp that he’s been building a nuclear reactor “simulator” running on the Raspberry Pi that looks nearly as stressful as sitting in control room of the real thing.

The simulator software is written in Python, and is responsible for displaying a simplified overview of the reactor and ancillary systems on the screen. Here all the information required to operate the “nuclear plant” can be seen at a glance, from the utilization of individual pumps to the position of the control rods.

Continue reading “Nuclear Reactor Simulator Is The Project Of A Lifetime”

Custom Machined Pump Keeps CNC Lubrication Under Control

Rub two pieces of metal against each other hard enough, and it won’t be long before they heat up sufficiently to cause problems. That’s especially true when one is a workpiece and one is a tool edge, and the problems that arise from failing to manage the heat produced by friction can cost you dearly.

The traditional way of dealing with this is by pumping heavy streams of liquid coolant at the workpiece, but while that works, it creates problems of its own. That’s where minimum quantity lubrication comes in. MQL uses a fine mist of lubricant atomized in a stream of compressed air, which saves on lube and keeps swarf cleaner for easier recycling. The gear needed for MQL can be pricey though, so [brockard] decided to add homebrew MQL to his CNC router, with great results.

The video below shows the whole process, from raw metal to finished system – skip ahead to about 12 minutes if you just want to see final testing, but be warned that you’ll be missing some high-quality machining. The finished pump is a double-piston design, with each side driven by a cam rotated by a servo. An Arduino controls the speed of the motor based on the current settings; the pump is turned on and off through G-code control of a relay.

The lubricant stream is barely visible in the video, as opposed to the sloshing mess of traditional flood coolants, and seems much more suitable for a hobbyist-grade CNC setup. Need to build a CNC router before you build this? You can do much worse than this one.

Continue reading “Custom Machined Pump Keeps CNC Lubrication Under Control”