<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Path Resolution on Nalar</title>
    <link>https://nalar.dev/tags/path-resolution/</link>
    <description>Recent content in Path Resolution on Nalar</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 18 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://nalar.dev/tags/path-resolution/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>openat2 Makes Path Resolution an Explicit Security Boundary</title>
      <link>https://nalar.dev/openat2-makes-path-resolution-an-explicit-security-boundary/</link>
      <pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/openat2-makes-path-resolution-an-explicit-security-boundary/</guid>
      <description>&lt;p&gt;A privileged service may accept a relative pathname from a less trusted component while intending to access only files below a designated directory. Checking the string for &lt;code&gt;..&lt;/code&gt;, rejecting an initial slash, or inspecting symbolic links before a later &lt;code&gt;open()&lt;/code&gt; does not bind the check to the kernel lookup that acquires the file. Directory entries can change between operations, symbolic links can redirect traversal, and mount topology can alter the namespace reached by a path.&lt;/p&gt;</description>
    </item>
    <item>
      <title>openat2 Makes Path-Resolution Policy Part of the Open</title>
      <link>https://nalar.dev/openat2-makes-path-resolution-policy-part-of-the-open/</link>
      <pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/openat2-makes-path-resolution-policy-part-of-the-open/</guid>
      <description>&lt;h1 id=&#34;openat2-makes-path-resolution-policy-part-of-the-open&#34;&gt;openat2 Makes Path-Resolution Policy Part of the Open&lt;/h1&gt;&#xA;&lt;p&gt;A service receives a relative pathname and intends to open only objects below a directory it already trusts. A lexical check can reject obvious &lt;code&gt;..&lt;/code&gt; components, yet the filesystem namespace may contain symbolic links, mount points, or concurrent renames that change the path walk after that check. The security decision and the file open then describe two different moments.&lt;/p&gt;&#xA;&lt;p&gt;Linux &lt;code&gt;openat2()&lt;/code&gt; provides a narrower boundary. Its &lt;code&gt;resolve&lt;/code&gt; flags constrain the kernel&amp;rsquo;s path-resolution operation that produces the file descriptor. The mechanism does not make arbitrary path handling safe, but it can move several confinement rules from preflight string logic into the lookup that actually selects the object.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
