HNHacker News
TopNewBestAskShowJobs

Genbox

582 karma · joined July 25, 2011

My name is Ian (Denmark) and I do science, security, algorithms, software architecture and high-performance stuff.

I built Farseer Physics Engine 3.0, SimpleS3 and about 25 other open source projects. Check them out over at https://github.com/genbox

I am also the founder and director of Chronos, a platform for investigating large-scale security incidents using forensics techniques.

submissionscomments
Genbox··on A cheap barcode scanner helped fix CrowdStrike'd Windows PCs in a flash
Pretty interesting solution. At least it removes many of the errors stemming from reading keys over the phone, etc., but it also proclaims to remove the risk of distributing BitLocker keys - but that's precisely what they did - just in barcode form.

The obfuscation might prevent the intern from figuring out what is going on, but there are plenty of barcode-scanning apps for phones that show you the data stored in a barcode.

Genbox··on First anode-free sodium solid-state battery
Research deals with theory. Not everything in research is immediately practical. Lots of engineering, tweaking, and testing goes into market-ready products. This announcement is an achievement for science, not a consumer-ready product.
Genbox··on Windows: Insecure by Design
What's really annoying me today is the security holes Microsoft is adding – by design – into Windows.

I mean of course Microsoft Recall. This delightful AI addition to the next generation of Windows PCs would have taken regular snapshots of everything you do on your computer.

Security and privacy are not the same thing. I get the frustration about Microsoft's security practices, but equating those two is a mistake.

Genbox··on BeyondCorp (2014)
Link to paper: https://www.usenix.org/system/files/login/articles/login_dec...
Genbox··on Why you shouldn't parse the output of ls(1)
People don't consider adversarial inputs when building scripts, which is one of the main reasons why I started a company to build an incident response platform in 2018.

I was handling security incidents on a large scale with tools that attackers would purposely circumvent with special filenames/inputs. Instead of fighting against the grain, I decided to build a platform with a heavy focus on correctness. Any deviation from the data specification would stick out as a sore thumb and immediately detect anti-forensics and other tricks.

Today, I have a vast compendium of anti-forensics tricks, such as commands not getting written to history, files that cannot be deleted or copied, and much more.

Suffice to say that if you are parsing the output of any tool, you are vulnerable to a whole slew of adversarial techniques.

Genbox··on A nanoGPT pipeline packed in a spreadsheet
The project links to [1], which is absolutely amazing as well.

[1] https://bbycroft.net/llm

Genbox··on GxHash is a fast and robust non-cryptographic hashing algorithm
Even non-cryptographic hashes must provide some sort of security against attacks. Let's say we use a weak hash function in an open addressing hash-map - if I can calculate a set of inputs that will all collide in the hash-map, then it will turn the O(1) lookup into a O(n) lookup.

If a small change to the seed mixing (literally moving a line from the end to the beginning of the function) increases the security with no penalty to performance, then we might as well make the change.

Genbox··on GxHash is a fast and robust non-cryptographic hashing algorithm
I've done some security testing against this hash function. Does anyone want to follow up and see if they can extend the attacks I describe[1]?

[1]https://github.com/ogxd/gxhash/issues/25

Genbox··on Infini-Gram: Scaling unbounded n-gram language models to a trillion tokens
A web interface for the Infini-gram engine can be found here: https://huggingface.co/spaces/liujch1998/infini-gram
Genbox··on Watch cars evolve using genetic algorithm
It references Box2D as the physics engine, but it seems to be a JavaScript port of Box2D. I'm unfamiliar with the JavaScript ports, but if it is a copy of one of the existing ports, the port should be referenced instead.
Genbox··on Hash collisions and exploitations (2019)
Google has developed several non-cryptographic hash functions. CityHash, FarmHash, and HighwayHash come to mind. BigQuery provides FarmHash next to the MD5 and SHA-family of cryptographic hash functions. Who knows, maybe they use FarmHash today to index page URLs.
Genbox··on Skip Microsoft Acct. Sign-In in Win 11 Home? It Skips Protecting Your Data Key
It is the primary failsafe for Microsoft 365 accounts to store the BitLocker recovery key with your Microsoft account. The other failsafes are printing the key or storing it on an external device.

One can easily obtain the recovery key on a system by doing "manage-bde -protectors -get c:" in an admin command prompt. This is not a vulnerability, it is by design.

Genbox··on Building a self-contained game in C# under 2 kilobytes
I love the low level .NET stuff Michael Strehovsky makes. Microsoft has built a feature-rich and easy-to-use environment, but it makes .NET developers think there is only one way to use it: create csproj and call dotnet build.

But underneath the covers, there is an extremely powerful compiler (Roslyn) and build-system (msbuild). Combine that with the flexibility of C# and you can develop pretty much anything.

Genbox··on Interesting double-poly latches inside AMD's vintage LANCE Ethernet chip
Great article Ken. I love the chip/die pictures.
Genbox··on Datsun 240Z L24 Engine Full Rebuild [video]
He is very skilled and a pleasure to watch. His restorations make the items better than the original. The Datsun project is a bit boring as I'm not a car guy, but I'm impressed that he manages to keep the level of craftsmanship high.
Genbox··on Demoscene: Interview with Demosceners (#1~15) + What I learned from it
Does anyone here remember .kkrieger? the first-person shooter in a 97 kb file. The demoscene was comprised of some truly talented people.
Genbox··on Lean4 helped Terence Tao discover a small bug in his recent paper
Code correctness is a lost art. I requirement to think in abstractions is what scares a lot of devs to avoid it. The higher abstraction language (formal specs) focus on a dedicated language to describe code, whereas lower abstractions (code contracts) basically replace validation logic with a better model.

C# once had Code Contracts[1]; a simple yet powerful way to make formal specifications. The contracts was checked at compile time using the Z3 SMT solver[2]. It was unfortunately deprecated after a few years[3] and once removed from the .NET Runtime it was declared dead.

The closest thing C# now have is probably Dafny[4] while the C# dev guys still try to figure out how to implement it directly in the language[5].

[1] https://www.microsoft.com/en-us/research/project/code-contra...

[2] https://github.com/Z3Prover/z3

[3] https://github.com/microsoft/CodeContracts

[4] https://github.com/dafny-lang/dafny

[5] https://github.com/dotnet/csharplang/issues/105

Genbox··on Python Is a Compiled Language
I get that this guy tries to take a perspective based on error reporting, but it really has nothing to do with the difference between interpreted and compiled.

I've built a scripting language with a full lexer and parser. It is capable of giving errors in both stages. It does not make it compiled or even interpreted. It is first when you execute the instructions of the language it becomes an interpreted language.

It is a good point that "compiled" is not a boolean property. A language like C# can be interpreted, JIT compiled and AOT compiled - it all depends on the toolchain used.

However, usually developers refer to compiled languages as those that gets translated down to machine instructions, and to my knowledge, CPython does not do that.

Genbox··on Hash Based Trees and Tries
Like the article says, the author did test against an open addressing hash table. He also addressed the resize requirements in the first paragraph, which makes rehashing not a concern.
Genbox··on Grokking Hash Array Mapped Tries (HAMTs)
> don't tell yourself it's only good for hashing.

The hash function[1] takes an arbitrary input and generate (in this case) a 32bit integer. This is nessecary to index values that are not integers (such as byte arrays or strings). It also doubles as a way to deterministically randomize values across the keyspace for better distribution of keys.

[1] https://github.com/mkirchner/hamt/blob/main/src/hamt.c#L377

Genbox··on What's Hashing? (2022)
Also, technically bcrypt is not a general hash algorithm, but rather a password-hash construction. Where SHA1 and MD5 are primitives that can be used in arbitrary crypt constructions, bcrypt is already a construction specialized for passwords. You wouldn't (or at least shouldn't) hash a file with bcrypt.
Genbox··on Breaking java.lang.String
Immutability and thread-safety are two different things. There are no thread-safety guarantees made by the JVM or the runtime for the String type, and I suspect your bug report will get the same answer.

You are right that there is an expecation or assumption of such (from the users), which makes it even more interesting when it breaks.

Locking a thread for every allocation of a string is very likely cost-prohibitive and not a great trade-off for the common case. It would make more sense to add something like StringFactory.CreateString(char[]) and instruct developers in using it if thread safety is nessecary.

Genbox··on Breaking java.lang.String
Making the 99% case faster at the cost of making the 1% case slower, is a speedup.
Genbox··on Earth is at its hottest in thousands of years
The climate is changing for the worse due to humans. However, the article has a selection bias:

In recent days, as the Earth has reached its highest average temperatures in recorded history, scientists have made a bolder claim: It may well be warmer than any time in the last 125,000 years.

It is almost like 130,000 years ago it was even higher than now[1]. It is not that the article is factually wrong, but it removes legitimacy from the Climate Change debate if we use biased or skewed datasets.

[1] https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/EP...

Genbox··on What Is Semantic Kernel?
It is just me, or does the article date say "07/11/2023"? Someone goofed.
Genbox··on Reddit’s plan to kill third-party apps sparks widespread protests
I've done my best to research this and I'm unable to find any numbers on the matter besides one app developers miscalculation of 20 mio. for billions of requests.

I can however find official documentation that backs up what the admins are saying. The new Data API terms says they no long allow commercial use of their APIs and might implement a cost pr. request. It links to the Data API docs that says 60 req. pr. minute are free as long as it is non-commercial. I would think unofficial reddit apps goes under the non-commercial clause.

To me it looks to be a complete overreaction by the Reddit community because of a miscommunication on parts of a single developer and the Reddit orgs too slow reaction to stop it from spreading.

Genbox··on Hash Functions
They are called similarity digests or sometimes "fuzzyhashing". For generic files there are Context Triggered Piecewise Hashing (CTPH), Trend Micro Locality Sensitive Hash (TLSH) and Similary Digest Hash (SDHash)
Genbox··on Maglev: Chrome’s New JIT Compiler
How devs can work with code that breaks at 80 characters in this day and age is beyond me.
Genbox··on Microsoft is busy rewriting core Windows library code in memory-safe Rust
I'm not making general claims about the use of memory exploitation - only questioning the statement that they are not widely used.

With more than 500 forensics cases with my name on it, and a substantial amount of them being RCE based, I'd say it is more than just guessing.

There is no need to spend time on developing a exploit when you can find hundreds new ones every month on GitHub. DEP and ASLR are also not used in embedded devices where memory management in the firmware is atrocious.

Genbox··on Microsoft is busy rewriting core Windows library code in memory-safe Rust
I work in the field and I'm not entirely sure about the cardinality of types of attacks. On one hand, there are password spaying, RDP bruteforces, email attachments, social engineering etc. On the other we have BlueKeep, ZeroLogon and the tons of RCE present in VPNs (looking at you PulseSecure), Routers, and Firewalls.

I would say that breaches often are related to RCE that ultimately derives from buffer exploitation. They are notoriously difficult to detect with forensics techniques, so they might not be discovered and tracked.

← PreviousPage 2 of 7Next →