Recent submissions

Comment · 4 years ago
Yeah, it's much, MUCH different to have those vistas unfold in front of your eyes at smooth 144 fps while you have control over the movement and everything compared to hyperanalizing 1 still frame or a sequence of frames with no real control.
Comment · 4 years ago
The nice thing about this is that it's simple and works pretty much in any language so there's very little cognitive strain if you work with multiple languages at the same time.
Comment · 4 years ago
From your link:

> securelevel may no longer be lowered except by init

> The list of securelevel's effects may not be comprehensive.

So yes, it's a nice sandbox that can help prevent accidents, but doesn't sound like something you should rely on for actual defense.

Comment · 4 years ago
Aye, I think what you're describing is "security by obscurity" - i.e. the capability is still there, I'm just counting on the attacker not knowing that it is because I've hidden it so well. It can work really well in combination with actual security practices, but it absolutely shouldn't be considered one.
Comment · 4 years ago
> I believe the concern is that the attackers gain root access on system A but hide their presence/activity - even in the presence of logs to remote, more trusted server B.

That's generally called pivoting and has nothing to do with method of persistence of the malicious code.

OP makes a point that certain systems move or have moved away from giving root user the ability to extend/modify kernel code at runtime via kernel modules, my argument is that none of that matters since root user can still extend/modify kernel code at runtime via binary patching.

Comment · 4 years ago
How is the vector of persistence of any significance here? At some point the attackers got root access on your system, game over.
Comment · 4 years ago
Turns out (1) works:

  #include <stdio.h>
  #include <stdlib.h>

  static void begin() __attribute__((constructor));

  void begin() {
    unsetenv("LD_PRELOAD");
  }
Build with:

  gcc -shared -fpie -o library.so library.c
Test:

  LD_PRELOAD=~/library.so env | grep LD_PRELOAD
Comment · 4 years ago
Comment · 4 years ago
1. Can't the process just scrub LD_PRELOAD from its environment? Linker already done it's job at that point.

2. I'd suggest against using `strings` (let alone with sudo) on attacker controlled inputs

Comment · 4 years ago
No it's not fine, this is just another coercion and consolidation of power where it shouldn't belong. Independent entities cannot innovate on their own because now there's a central apparatus that decides what should be innovated and how, with all the inherent political power struggles of big players, good luck.

EU should be there to set goals, not to dictate implementation.

Comment · 4 years ago
You still need to implement a CI rule so that I don't just call `set_fs()` without using `preferred_syntax(set_fs)`, don't you?
Comment · 4 years ago
A simple policy that both set_fs() calls need to happen within the same function body with corresponding CI test based on AST/DWARF inspection would have also prevented it. Do you really want to rely on stack unwinding/destructors for security sensitive code when stack is usually the first thing that gets controlled by the attacker? Exception handling (SEH) on Windows is an exploitation vector of it's own.
Comment · 4 years ago
I'm no physicist either, I just like to ask questions :)

How does the demon attain the knowledge of what is "fast" and "slow" without continuous observation (and thus interaction) with the particles. Velocity is just function of position over time, so the demon needs at least 2 samples to make the most basic approximation. Where is the entropy for doing that coming from? How does the interference of the measuring apparatus factor into the whole process - what if the sole act of measurement changes the state of the particle from "fast" to "slow" or vice versa? Do we need to measure twice? But what if the second measurement causes the transition it was meant to detect?

Comment · 4 years ago
How do you build a mechanism that has a perfect knowledge about a system while being part of said system?
Comment · 4 years ago
This all depends how much product are you expected to produce. Your "don't chop things beforehand" works if you're cooking for 1 or 2, but if you need to cook for 4+ you absolutely need to plan your steps and prepare your ingredients so that you merely combine them. This is evermore important if you want to have some sufficiently consistent level of quality, which I suppose is implied.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton