logoalt Hacker News

How Hard Is It to Open a File?

81 pointsby ffinlast Friday at 2:01 AM13 commentsview on HN

Comments

lapsed_lispertoday at 11:44 AM

I've worked on projects with people who've insisted on these approaches, and I've never understood how this secures things in any deep way. As I understand the reasoning, open("/a/b",...) is discouraged in favor of openat(fd, "b", ...) because an attacker might be able to hijack /a. But as I see things, if an attacker has ever been able to hijack what /a contains or what "/a" refers to, they can change whatever "b" ends up naming, and the game is over.

As for the article's glnx_chaseat(), ISTM the 8 orthogonal flag bits are a warning indicator. If there need to be 256 ways to configure pathname resolution semantics, then there are 255 ways the flags compiled into program can be inappropriate for any particular use. Even if we stipulate that there's a problem here that both needs solving, if those flags aren't a hint that this is a flaky solution, I don't know what is.

So it has seemed to me as if the real security problem is the existence of a file system shared among unrelated sets of processes, and that if there is a secure alternative to that on existing operating systems, it probably looks more like embedding program configuration or data inside a program. (But this is handwavy: I'm envisioning stuffing data into ELF or Mach-O segments in signed binaries; some novel mechanism would need to be invented for shebang scripts.) But probably compartmentalizing all systems into distinct VMs is more practical than redesigning all software. (I would imagine that since the article's author works on Flatpak, they are motivated to want something less than VMs to serve as viable compartmentalization solutions, however.)

codethiefyesterday at 11:54 PM

> https://github.com/flatpak/flatpak/security/advisories/GHSA-...

Just yesterday I was thinking about a related attack vector on AI agents: Many harnesses "sandbox" (at the application level) file reads/writes and shell commands by checking whether a given path has been whitelisted. However, I bet there are cases where the agent could simply create a symlink to somewhere else and thus trick the "sandbox" into thinking the agent is authorized?

show 4 replies
deadlyllamatoday at 3:35 AM

Before I read the linked page I assumed this was a rant about using MS Office with files on your local filesystem. Although that would be titled "How Hard is it to Save a File?"

jshmrsnyesterday at 11:12 PM

Am I missing something, or do this article’s purported vulnerabilities rely on an assumption that an attacker already has enough access to your system that the attacker can modify files which your code is referencing by path? Isn’t this more of an escalation vector than a vulnerability in itself?

I’m trying to understand the practical takeaway.

show 2 replies
dnnddidiejyesterday at 11:34 PM

Anyway to open the file with the permissions of the calling process and pass that over?

TZubiriyesterday at 9:45 PM

Knowing what to be concerned about in security is a skill, it is possible to overengineer security and put too much effort in non risks.

This reminds me of when a student was concerned about the client leaking the server's ip address.

Not saying that there aren't vulns, but the fix is fixing the bug and using a standard hardening mechanism like selinux or unix users. I strongly doubt that the root issue is the good old filesystem api everyone has been using for decades, it's more likely to be your code bro

croemeryesterday at 9:47 PM

Good explanation of the flatpak sandbox escape.

For those allergic to LLM writing: Some sentences read very LLM-like, e.g.:

> The fix wasn’t “change one function” — it was “audit the entire call chain from portal request to bubblewrap execution and replace every path string with an fd.”