HN user

JasuM

100 karma
Posts0
Comments30
View on HN
No posts found.

Makes sense. I was thinking that maybe signal handlers could use the regular stack of the thread, but that would of course make everything fall down if the "real" code would write to the stack before updating the stack pointer.

Oh yeah, I didn't think of that. I wonder if you could write a signal handler carefully to not allocate any memory, stack or otherwise, or is some return address or an internal structure being allocated transparently...

What happens if you really run out of physical memory (including swap) after overcommitting? Does your process get a signal, or will OOM killer just run without notifying the process that triggered the condition?

I can imagine some timing-specific attacks for memory accesses, but they're not likely as robust as attacks against the branch-predictor:

1. This is the simplest one - if the memory being accessed is in a cache (L1/L2, or page in TLB), the function will take a significantly shorter time to execute. If movfuscator achieves conditional execution by manipulating index registers to perform idempotent operations, this will be very easy to detect.

2. Prefetching - if movfuscator reads memory sequentially with a detectable stride, prefetching will shorten the execution time.

3. Write combining - if the code writes to nearby addresses (same cache line), the CPU will combine them to a single write. This will cause a measurable timing difference.

EDIT: One more: Store forwarding - if the code writes to a memory address and reads it soon, the CPU may bypass the memory access (and even cache access) completely.

- Random stuff all over ~/

- User-specific bin folder ~/LocalApps (with lots of scripts)

- Projects etc. in a GoCryptFS-encrypted directory synced with Syncthing with NAS (with NFS+Kerberos on my desktop rather than Syncthing). Vendor-directories (/vendor/, /node_modules/) are not encrypted as not to slow down development, they are bind-mounted to a cleartext directory.

- PDFs, MP3s, etc. in Dropbox

I spent yesterday rewriting my ZSH config. A lot of the time I spent on figuring out how to map random key combos to unused control characters. So if I could implement both the terminal and the shell from scratch (or make a significant addition), I would implement a scenario like this:

  1. Program informs the terminal that it supports "extended keyboard input". This would be done with an escape code, much like bracketed paste.
  2. Terminal informs the program that it is now enabled.
  3. Terminal informs the program of the initial modifier key state.
  4. When the user presses a key (including modifiers), it is sent in a format that standardizes over all the commonly used key codes. Also, if the key represents a Unicode codepoint, that is sent as well. E.g. (mod-status-at-key-press)(key-code)(utf8-char-or-null)(null-terminator).
  5. When the user releases a key, a similar message would be sent.
  6. When the program exits (or a shell runs another program), it asks the terminal to disable "extended keyboard input"

I'd be very cautious before moving SSH to a non-privileged port (over 1024). Any user on the server might start their own SSH server on the port assuming the real SSH server is dead. While this is hard to exploit (needs access to normal user, needs to kill real SSH server, need to get around SSH server key checking), it still is at least a theoretical reduction in security.

Drupal Benchmarks 10 years ago

That's not the server's fault, it's just Drupal being slow. It was pretty slow in version 6 and has been getting consistently slower. I'm pretty sure that the request count is for dynamic content only.

Win 8.1, Arch Linux in VMWare Workstation. I mostly use the Linux in VMWare, Windows is mostly for Excel and Photoshop.

Hardware is Lenovo Thinkpad Yoga 12".

Dev tools are vim + tmux + zsh, PHP + nginx for work and Clang + CMake for personal projects.

If the message had some information about the Tiananmen Square massacre or some other censored information, the attack would probably stop. At least temporarily.

Boost has a very liberal license, unlike Cairo. C++ libraries, at least the GNU C++ library, have directly based some of their implementations on Boost.

This might lead to C++ library vendors not implementing the standard and requiring using a third party library, perhaps later integrating them into their own libraries.

Thinking about it, it is not probably a bad thing, it will just take longer than with other parts of the standard. Of course, this is just pure speculation and things might turn out very differently.

Cairo is dual-licensed under the LGPL and MPL. Both of these are restrictive enough to make them incompatible with, eg., App Store terms. Yet the proposal does not seem to even mention the license (or maybe I just missed it).

The standards committee is conserned about portability, at least on a technical level. I wonder what their take is on portability issues caused by license terms.