This Week In Security: The Rest Of The IPv6 Story, CVE Hunting, And Hacking The TSA

We finally have some answers about the Windows IPv6 vulnerability — and a Proof of Concept! The patch was a single change in the Windows TCP/IP driver’s Ipv6pProcessOptions(), now calling IppSendError() instead of IppSendErrorList(). That’s not very helpful on its own, which is why [Marcus Hutchins]’s analysis is so helpful here. And it’s not an easy task, since decompiling source code like this doesn’t give us variable names.

The first question that needs answered is what is the list in question? This code is handling the option field in incoming IPv6 packets. The object being manipulated is a linked list of packet structs. And that linked list is almost always a single member list. When calling IppSendErrorList() on a list with a single member, it’s functionally equivalent to the IppSendError() in the fixed code. The flaw must be in the handling of this list with multiple members. The only way to achieve that criteria is to send a lot of traffic at the machine in question, so it can’t quite keep up with processing packets one at a time. To handle the high throughput, Windows will assemble incoming packets into a linked list and process them in batch.

So what’s next? IppSendErrorList(), takes a boolean and passes it on to each call of IppSendError(). We don’t know what Microsoft’s variable name is, but [Marcus] is calling it always_send_icmp, because setting it to true means that each packet processed will generate an ICMP packet. The important detail is that IppSendError() can have side effects. There is a codepath where the packet gets reverted, and the processing pointer is set back to the beginning of the packet. That’s fine for the first packet in the list, but because the function processes errors on the entire list of packets, the state of the rest of those packets is now much different from what is expected.

This unexpected but of weirdness can be further abused through IPv6 packet fragmentation. With a bit of careful setup, the reversion can cause a length counter to underflow, resulting in data structure corruption, and finally jumping code execution into the packet data. That’s the Remote Code Execution (RCE). And the good news, beyond the IPv6-only nature of the flaw, is that so far it’s been difficult to actually pull the attack off, as it relies on this somewhat non-deterministic “packet coalescing” technique to trigger the flaw.

Continue reading “This Week In Security: The Rest Of The IPv6 Story, CVE Hunting, And Hacking The TSA”

Art of 3D printer in the middle of printing a Hackaday Jolly Wrencher logo

3D Printering: Klipper, The Free 3D Printer Upgrade

I have several 3D printers, and I’ve always been satisfied with using either Repetier or Marlin on all of them. There are a few other firmware versions that could run on my hardware, but those two have been all I’ve needed. Sure, it was painful for a while having to juggle features to fit the firmware image onto the smaller microcontroller boards. Now that Marlin supports big 32-bit boards however, that hasn’t been a problem. But recently, I’ve been on a program to switch everything to Klipper.

In this post, I’ll tell you why I did it and give you some data about why you might consider it, too.

The Landscape

Marlin is written in C and burned into a 3D printer’s flash memory. It does a lot. It receives G-code commands, interprets them, and translates them to meaningful actions on the hardware. Modern versions handle automatic transformations to account for lumpy beds, input shaping to reduce shaking, and linear advance to produce better prints.

It might seem simple to control a 3D printer, but there are lots of little details to take into account. For example, if you are moving the head between two XY coordinates and you expect a certain flow rate, then you have to figure out how fast to turn the steppers to get the right amount of plastic out over that time. You also may have to retract before you start a move, make sure temperatures are stable, and transform the actual coordinates based on bed leveling data. There’s a lot going on.

Klipper does the exact same job, but it does it differently. On the 3D printer board is a tiny piece of software that does very little. It’s a bit like a device driver for the printer. All by itself, it does nothing. But it can handle very basic commands that describe how to move the machine.

All the rest of the processing you expect to happen now runs on some Linux computer. That is very often a Raspberry Pi, but it could be a spare laptop, your desktop computer, or anything that will run a reasonable Linux install. Several vendors even sell single-board computers with touchscreens made specifically for running this part of Klipper.

However, even though a screen is nice, you don’t really need it. I’ll talk about that more later.

Continue reading “3D Printering: Klipper, The Free 3D Printer Upgrade”

FLOSS Weekly Episode 798: Building The Rust Desktop With COSMIC

This week Jonathan Bennett and Rob Campbell chat with Carl Richell about System 76, COSMIC, Wayland, Rust and more! What was the “last straw” that convinced System 76 to write their own desktop environment (DE)? What’s the story with smithay, and why did that jump start the whole process? Listen to find out!
Continue reading “FLOSS Weekly Episode 798: Building The Rust Desktop With COSMIC”

What’s New In 3D Scanning? All-In-One Scanning Is Nice

3D scanning is important because the ability to digitize awkward or troublesome shapes from the real world can really hit the spot. One can reconstruct objects by drawing them up in CAD, but when there isn’t a right angle or a flat plane in sight, calipers and an eyeball just doesn’t cut it.

Scanning an object can create a digital copy, aid in reverse engineering, or help ensure a custom fit to something. The catch is making sure that scanning fits one’s needs, and isn’t more work than it’s worth.

I’ve previously written about what to expect from 3D scanning and how to work with it. Some things have changed and others have not, but 3D scanning’s possibilities remain only as good as the quality and ease of the scans themselves. Let’s see what’s new in this area.

All-in-One Handheld Scanning

MIRACO all-in-one 3D scanner by Revopoint uses a quad-camera IR structured light sensor to create 1:1 scale scans.

3D scanner manufacturer Revopoint offered to provide me with a test unit of a relatively new scanner, which I accepted since it offered a good way to see what has changed in this area.

The MIRACO is a self-contained handheld 3D scanner that, unlike most other hobby and prosumer options, has no need to be tethered to a computer. The computer is essentially embedded with the scanner as a single unit with a touchscreen. Scans can be previewed and processed right on the device.

Being completely un-tethered is useful in more ways than one. Most tethered scanners require bringing the object to the scanner, but a completely self-contained unit like the MIRACO makes it easier to bring the scanner to the subject. Scanning becomes more convenient and flexible, and because it processes scans on-board, one can review and adjust or re-scan right on the spot. This is more than just convenience. Taking good 3D scans is a skill, and rapid feedback makes practice and experimentation more accessible.

Continue reading “What’s New In 3D Scanning? All-In-One Scanning Is Nice”

Illustrated Kristina with an IBM Model M keyboard floating between her hands.

Keebin’ With Kristina: The One With The Folding Typewriter

Have you built yourself a macro pad yet? They’re all sorts of programmable fun, whether you game, stream, or just plain work, and there are tons of ideas out there.

A DIY macro pad with key switches, dual linear pots, a rotary encoder, a screen, and a speaker.
Image by [CiferTech] via Hackaday.IO
But if you don’t want to re-invent the wheel, [CiferTech]’s MicroClick (or MacroClick — the jury is still out) might be just what you need to get started straight down the keyboard rabbit hole.

This baby runs on an ATmega32U4, which known for its Human Interface Device (HID) capabilities. [CiferTech] went with my own personal favorite, blue switches, but of course, the choice is yours.

There are not one but two linear potentiometers for volume, and these are integrated with WS2812 LEDs to show where you are, loudness-wise. For everything else, there’s an SSD1306 OLED display.

But that’s not all — there’s a secondary microcontroller, an ESP8266-07 module that in the current build serves as a packet monitor. There’s also a rotary encoder for navigating menus and such. Make it yours, and show us!

Continue reading “Keebin’ With Kristina: The One With The Folding Typewriter”

Hackaday Links Column Banner

Hackaday Links: August 25, 2024

The Sun has been remarkably active lately, so much so that it might have set a new sunspot record. According to the sun watchers at the Space Weather Prediction Center, on August 8, the Solar Dynamics Observatory snapped a picture that was positively bedazzled with sunspots. Counting methods vary, but one count put the sunspot number at a whopping 337 that day. That would be the largest number since 2001, during the peak of Solar Cycle 23. The sunspot number is highly correlated with solar storms and coronal mass ejections; more spots mean more magnetic activity and more chance for something to go very, very wrong. We’ve been pretty lucky so far with Solar Cycle 25; despite being much more active than the relatively lazy Cycle 24 and much stronger than predicted, most of this cycle’s outbursts have been directed away from Earth or only dealt us a glancing blow. Seeing all those spots, though, makes us think it’s only a matter of time before we get hit with something that does more than make pretty lights.

Continue reading “Hackaday Links: August 25, 2024”

Hackaday Podcast Episode 285: Learning Laser Tricks, Rocket Science, And A Laptop That’s Not A Laptop

This week on the Podcast, we have something a little different for you. Elliot is on vacation, so Tom was in charge of running the show and he had Kristina in the hot seat.

First up in the news: the 2024 Tiny Games Challenge is still underway and has drawn an impressive 44 entries as of this writing. You have until 9AM PDT on September 10th to show us your best tiny game, whether that means tiny hardware, tiny code, or a tiny BOM.

Then it’s on to What’s That Sound, which Tom and Kristina came up with together, so there will be no pageantry about guessing. But can you get it? Can you figure it out? Can you guess what’s making that sound? If you can, and your number comes up, you get a special Hackaday Podcast t-shirt.

Now it’s on to the hacks, beginning with an open-source liquid-fueled rocket and a really cool retro trackball laptop. Then we’ll discuss screwdriver mange, the Wow! signal, and whether you’re using you’re calipers incorrectly. Finally, we look at a laptop that that isn’t really a laptop, and one simple trick to keep things aligned on your laser engraver.

Check out the links below if you want to follow along, and as always, tell us what you think about this episode in the comments!

Download in DRM-free MP3 and savor at your leisure.

Continue reading “Hackaday Podcast Episode 285: Learning Laser Tricks, Rocket Science, And A Laptop That’s Not A Laptop”