<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Process Security on Nalar</title>
    <link>https://nalar.dev/tags/process-security/</link>
    <description>Recent content in Process Security 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/process-security/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>mseal Locks Memory Mapping Layout and Permissions</title>
      <link>https://nalar.dev/mseal-locks-memory-mapping-layout-and-permissions/</link>
      <pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/mseal-locks-memory-mapping-layout-and-permissions/</guid>
      <description>&lt;p&gt;A process can establish a memory mapping with the intended address, size, and protection bits, then later alter that mapping with operations such as &lt;code&gt;munmap()&lt;/code&gt;, &lt;code&gt;mprotect()&lt;/code&gt;, or &lt;code&gt;mremap()&lt;/code&gt;. Linux &lt;code&gt;mseal()&lt;/code&gt; adds a one-way state transition: selected virtual memory areas can be sealed so a class of later mapping modifications is rejected by the kernel.&lt;/p&gt;&#xA;&lt;p&gt;The mechanism protects mapping structure rather than the bytes stored in the mapping. A writable sealed mapping remains writable through ordinary stores. Sealing instead constrains operations that could remove the mapping, relocate it, replace it, or change attributes covered by the sealing rules.&lt;/p&gt;</description>
    </item>
    <item>
      <title>execveat Binds Program Execution to an Open File Reference</title>
      <link>https://nalar.dev/execveat-binds-program-execution-to-an-open-file-reference/</link>
      <pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/execveat-binds-program-execution-to-an-open-file-reference/</guid>
      <description>&lt;p&gt;A launcher selects an executable from a directory, checks attributes or content, and then starts it. If selection and execution each resolve the pathname independently, a rename, symlink change, or directory replacement between those operations can make the executed object differ from the object that was checked.&lt;/p&gt;&#xA;&lt;p&gt;Linux &lt;code&gt;execveat()&lt;/code&gt; can move that boundary from a second pathname lookup to an already acquired file reference. With &lt;code&gt;AT_EMPTY_PATH&lt;/code&gt;, an empty pathname tells the kernel to execute the object referred to by &lt;code&gt;dirfd&lt;/code&gt;. That descriptor may have been opened with &lt;code&gt;O_PATH&lt;/code&gt;. The execution decision still passes through normal kernel permission and executable-format checks, but object selection no longer depends on resolving the original pathname again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>no_new_privs Makes Exec-Time Privilege Gain Irreversible</title>
      <link>https://nalar.dev/no-new-privs-makes-exec-time-privilege-gain-irreversible/</link>
      <pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/no-new-privs-makes-exec-time-privilege-gain-irreversible/</guid>
      <description>&lt;h1 id=&#34;no_new_privs-makes-exec-time-privilege-gain-irreversible&#34;&gt;no_new_privs Makes Exec-Time Privilege Gain Irreversible&lt;/h1&gt;&#xA;&lt;p&gt;A Linux service may deliberately execute programs that carry set-user-ID bits or file capabilities while intending to remain at its existing privilege level. Without an explicit execution boundary, &lt;code&gt;execve()&lt;/code&gt; can be a privilege transition: metadata on the executable may change effective credentials or contribute capabilities to the new program.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;no_new_privs&lt;/code&gt; task attribute changes that transition. Once set, a successful &lt;code&gt;execve()&lt;/code&gt; cannot grant the task privilege that it could not exercise before the call. The attribute is inherited by descendants, survives execution, and cannot be cleared. Those properties make it a one-way constraint on a process lineage rather than a temporary option around one executable.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
