LaurieWired Profile picture
Jan 9 6 tweets 1 min read Read on X
It's mathematically impossible to stop malware.

Due to Rice's Theorem, it's impossible to write a program that can perfectly determine if any given program is malicious.

This is because "being malicious" is a behavioral property of the program.
Even if we could perfectly define what "malicious behavior" *is* (which is a huge problem in of itself), any property about what a program will eventually do is undecidable.

Security in the traditional sense is probabilistic.
In other words, we can make AVs very likely to catch malware, but you cannot mathematically guarantee it.

You can't:
- analyze all execution paths
- run for infinite time
- simulate all possible environments.
- predict all possible transformations
Look, I just created a perfect wiper, you can never know if it's malicious!

See, in practice, the concept is kind of silly. Just because you theoretically *can*, doesn't mean it's practical. Image
AV's can be *really* clever with signature detection, behavioral monitoring, and sandboxing.

The point is, it's an arms race, not a solved problem.

There's always going to be wild implementations of polymorphic and metamorphic code that execute malicious behavior.
All that said, it's neat to think about that even a theoretical superintelligence can't beat Rice's Theorem.

Perhaps the best defense against a rogue AGI is some undectable malware.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with LaurieWired

LaurieWired Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @lauriewired

Jan 8
Null pointers suck.

Even Tony Hoare, the inventor of the null reference, calls it “my billion-dollar mistake”.

It’s responsible for an unmeasurable number of exploits, system crashes, and errors.

How did it start? Image
Temptation.

In 1965, Hoare was writing the type system for a language called ALGOL W.

The goal was to ensure all reference use should be safe; but he “couldn’t resist putting in a null reference...it was so easy to implement.” Image
The *concept* of null itself is of course useful; we need a way to represent “there’s nothing here”.

The mistake was to allow ALL types to accept null.

For example, if a function returns a null String, does that mean “no result,” “error,” “placeholder,” or “empty string”?
Read 5 tweets
Jan 6
Why are red objects so pixelated in low quality videos?

It starts with the human eye.

About 2/3s of our color receptors are dedicated to green; it's how we perceive detail.

Modern video codecs take advantage of this visual quirk; but it has some downsides. Image
Most modern video codecs use a technique called chroma sub-sampling to increase compression, while minimizing detail loss.

A video frame is a combination of Brightness and Color. Because the values are encoded separately, we can use different resolutions for each.
For example, this compressed image of a fruit bowl only has 1/10th of the blue and red channel resolution, while leaving the green channel untouched.

It's an extreme level of compression that you wouldn't normally experience, but it looks...not too bad? Especially smoothed. Image
Image
Image
Read 6 tweets
Dec 26, 2024
“My wife complains that open office will never print on Tuesdays”

A bizarre sentence; which kicked off one of the most interesting bug hunts in Ubuntu’s history.

It all starts with some goofy pattern matching. Image
It’s not a bug with the printer, or OpenOffice, or the printer driver.

It’s a mistake in the way the “file” utility parses file signatures.

When printing from OpenOffice, a PostScript file is created with the creation date. Image
CUPS, the Common Unix Printing System, then uses the file utility as part of its pipeline to determine the type.

But if "Tue" appears at byte 4 (Tuesday's creation date), it's mistakenly identified as an Erlang JAM file, causing the print job to fail.
Read 5 tweets
Dec 23, 2024
Most people sort socks in O(n²) time. (Naïve Pairwise Search).

I'm going to show you how to get it down to O(n) with Hash-Based Partitioning.

Let's break it down. Image
1. Take all the socks from your basket and separate them into piles for each color.

2. Within each color pile, iterate through to separate by pattern.

3. Continue sorting the pattern-specific piles as needed by another attribute (size, material)
4. Recursively apply additional sorting criteria as necessary until each pile is small enough for visual paring.

5. Done!

Each sorting step independently operates in O(n) time:

Total Time Complexity = O(n) + O(n) + ...

Therefore, the average total time complexity does not exceed O(n)!
Read 4 tweets
Dec 19, 2024
In 1992, Andrew Tanenbaum made some predictions about computing.

1. Microkernels are the future
2. x86 will die out and RISC will dominate the market
3. Everyone will be running a free GNU OS.

An argument ensued between him and Linus Torvalds. But who was right? Image
It's all a matter of perspective.

Microkernels never fully took off, but hybrid kernels like Windows NT, and mach derived kernels found on macOS + iOS control a ton of market share. Linux is the main exception here, being the most monolithic out of the bunch. Image
As for x86 vs RISC...partial credit.

x86 obviously still exists, but RISC architectures like ARM completely dominate mobile (and some of the laptop!) market.

All of the major 7th gen consoles were also running RISC architectures (Xbox 360, PS3, Wii). Image
Read 5 tweets
Dec 9, 2024
Shutting down your PC before 1995 was kind of brutal.

You saved your work, the buffers flushed, wait for the HDD lights to switch off, and

*yoink*

You flick the mechanical switch directly interrupting the flow of power.

The interesting part is when this all changed.Image
Two major developments had to occur.

First, the standardization of a physical connection in the system linking the power supply to the motherboard. (Hardware constraint)

Second, a universal driver mechanism to request changes in the power state. (Software constraint) Image
These, respectively, became known as the ATX and APM Standards.

Although it would have been possible much earlier; industry fragmentation in the PC market between Microsoft, IBM, Intel and others stagnated progress.

By 1995, things started to get more consolidated. Image
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(