Re:XZ backdoor: "It's RCE, not auth bypass, and gated/unrepl...
by FeepingCreature on Sunday March 31, 2024 @03:52AM
(#39882316)
Looking at IFUNC, there never seems to be a reason to allow function loading from a different library than the one the call is in, right? Maybe a restriction like that could be built in. Or just explicitly enumerate the possible substitutions per site.
[ Parent
| on HN ]
Re:XZ backdoor: "It's RCE, not auth bypass, and gated/unrepl...
by someguydave on Sunday March 31, 2024 @08:50AM
(#39883802)
Sure, but your solution supposes some kind of linking cop program overseeing the linking process, and who is going to keep the linking cop honest?
Re:XZ backdoor: "It's RCE, not auth bypass, and gated/unrepl...
by Cloudef on Sunday March 31, 2024 @08:54AM
(#39883827)
I mean dynamic loader is part of the base system and you generally trust the compiler and linker you build the program with. If any of those are malicious, you've already lost the game.
Re:XZ backdoor: "It's RCE, not auth bypass, and gated/unrepl...
by someguydave on Sunday March 31, 2024 @12:53PM
(#39885848)
Asking a programmer to trust his own compiler and libraries which he can personally analyze and vouch for (static linking) is much different than asking the programmer to vouch for the dynamic libraries present on some given user’s machine.
Re:XZ backdoor: "It's RCE, not auth bypass, and gated/unrepl...
by FeepingCreature on Monday April 01, 2024 @09:23AM
(#39893919)
Yes, the dynamic linker (/lib/ld-linux.so.2), which is one relatively short program as opposed to thousands of big ones. :)
The point is, there's simply no usecase to require or even allow the program to do IFUNC substitution freely on its own. A programming framework should not opt the developer in to capabilities they don't want or need. Much of C-likes' complexity arises from unnecessary, mandated capabilities.
Re:XZ backdoor: "It's RCE, not auth bypass, and gated/unrepl...
by account42 on Friday April 05, 2024 @11:47AM
(#39943859)
IFUNC isn't used directly to patch the functions of another library here, it's just the entry point for the exploit code. IFUNC is used as opposed to other ways to execute code on library load because it runs very early (before linking tables are remapped read-only).