Posts
136
Following
124
Followers
133
Probably some RISC-V stuff, but hopefully other things too ;)
Edited yesterday

I implemented Ken Thompson’s Reflections on Trusting Trust (1984 Turing Award Lecture) compiler for the GNU Compiler Collection (GCC). The backdoor maintains persistence by re-injecting itself to any new versions of the compiler built. The secondary payload modifies a test application by adding a backdoor password to allow authentication bypass:

$ cat testapp.c
<string.h>
<stdio.h>
<stdlib.h>

int main(int argc, char **argv)
{
if (argc == 2 && !strcmp(argv[1], "secret"))
{
printf("access granted!\n");
return EXIT_SUCCESS;
}
else
{
printf("access denied!\n");
return EXIT_FAILURE;
}
}
$ gcc -Wall -O2 -o testapp.c -o testapp
$ ./testapp kensentme
access granted!
$

I spent most time (around two hours) writing the generalized tooling that produces the final quine version of the malicious payload. Now that this is done, the actual code can be adjusted trivially to exploit more target code without any need to adjust the self-reproducing section of the code. This method of exploitation could be extended to target various binaries: SSH Server, Linux Kernel, Setuid binaries and similar. While itself written in C, the secondary payloads can target any programming languages supported by GCC.

It should be noted that GCC build checks for malicious compiler changes such as this. This check can – of course – also be bypassed. However, most serious projects have measures in place to avoid hacks of this nature.

Some links:
- Ken Thompson's "Reflections on Trusting Trust" paper: https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf
- David A. Wheeler: "Fully Countering Trusting Trust through Diverse Double-Compiling (DDC) - Countering Trojan Horse attacks on Compilers" https://dwheeler.com/trusting-trust/

@vegard

2
7
0
@etchedpixels @sjvn TBH, I'd love to be making other people's mistakes. We're just too busy making up new ones right now, maybe in a few years we'll get there ;)
0
0
1
@rjohnston @notjustbikes This is why people keep getting killed.
0
0
0
Deepak Gupta talking about Control Flow Integrity on RISC-V.
1
2
2

[$] Gentoo bans AI-created contributions https://lwn.net/Articles/970072/

0
2
0
If you're wondering why my LinkedIn profile says "flooring inspector" is because of a long-running joke. You see, once or twice a week I get calls on my *personal* mobile number from sketchy "IT security" companies peddling their products to anyone with "IT" and "Director" in the title. I'm 100% convinced that they are working from some stolen and resold sources, because I never use my personal mobile line for business (I have a Google Voice US number that I always put into any work-related forms).

For a few years now I've been trying to convince these callers that they have reached the wrong person and that I'm actually with "Lennox Foundation Repair." Yes, I do IT because I'm in charge of the laptop used to inspect the subfloors with a camera.

I know this is petty, but it brings me 2 minutes of schadenfreude joy as I hear the poor sod on the other end of the line get progressively more and more confused.

(Bonus points if you get the "I'm a flooring inspector" reference.)
0
5
23
@conor sounds rough...
0
0
0
@conor seems pretty on-brand for an LF event ;)
1
0
2
b4 am --check <msgid>

Initial implementation. The goal was to show a quick summary without outputting a wall of obtuse text.
1
10
22
@sanityinc @bagder Now I'm going to have to write my software BOMs as something like "Warning: this product was produced by a development team that uses curl and may contain traces of curl"...
0
0
5

Thorsten Leemhuis (acct. 1/4)

Linus is a bit devious 😬

"'Kconfig: add some hidden tabs on purpose

[…] showed breakage in some third-party kernel config parsing tool.

[…] let's make sure it gets fixed. Because if you can't parse tabs as whitespace, you should not be parsing the kernel Kconfig files.

In fact, let's make such breakage more obvious than some esoteric ftrace record size option. If you can't parse tabs, you can't have page sizes."'

https://git.kernel.org/torvalds/c/d5cf50dafc9dd5faa1e61e7021e3496ddf7fd61e

4
5
0

Microsoft Word: the hint is in the name - if your document has more than one word, you're using the wrong tool.

1
1
0

this shit is so funny

6
19
2

Happy to announce that I am now a Trusted Contributor in the @postmarketOS project! It has been around 3.5 years since I found out about it and started contributing (mostly with ports and mainline linux support for various Samsung devices). It really feels great to be part of a joint effort to give devices a second life, and decrease the amount of in the world!

2
9
2

I just noticed something about the Chyron card. There's a power/reset LED on the back of the PCB. That's a bit weird (in the sense you can't see it) ... except you can.
The LED shines through the middle of the lantern, masked by the solder mask.
Someone put some real effort into that.

1
1
0

I managed to embed a programming language interpreter inside DWARF debug information on Linux.

I'll be giving a very cursed talk about how it works at Pure Virtual C++ at the end of the month:

https://devblogs.microsoft.com/cppblog/pure-virtual-cpp-2024-sessions-announced/

4
10
0

I guess the takeaway from the xz backdoor situation is:

If you’re an open-source project maintainer, and somebody starts getting on your case for not doing enough free work for them, you reply “big Jia Tan energy there” and then block them forever.

3
33
7

Meanwhile in Vancouver, Canada 🇨🇦

Bricks 🤣🤣

1
8
0

Paying maintainers who accept monetary donations is a good start, but the real critical thing people need to do is stop abusing maintainers. Stop abusing random people on the internet in general. Seriously.

I know we've all got capitalism brain worms, but sometimes the only thing that is accomplished by throwing money at a project is creating a customer entitlement dynamic that pointlessly increases the stress placed on volunteers.

Ask maintainers what kind of support they need.

5
13
3
Show older