<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Transmission on tsvinc</title>
		<link>https://tsvinc.dev/tags/transmission/</link>
		<description>Recent content in Transmission on tsvinc</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Tue, 07 Jul 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://tsvinc.dev/tags/transmission/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Transmission is a remote-code-execution box by default</title>
				<link>https://tsvinc.dev/posts/transmission-rce-by-default/</link>
				<pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://tsvinc.dev/posts/transmission-rce-by-default/</guid>
				<description>&lt;div class=&#34;tldr&#34;&gt;&#xA;  &lt;span class=&#34;tldr-label&#34;&gt;TL;DR&lt;/span&gt;&#xA;  Transmission&#39;s &lt;code&gt;script-torrent-done-filename&lt;/code&gt; runs an executable of your choosing as the daemon user every time a torrent completes, and it is settable over the RPC interface — so anything that can reach the RPC port and pass its auth chooses what the daemon executes. That is remote code execution by design, not a bug, and you cannot seccomp it away because the daemon legitimately needs &lt;code&gt;execve&lt;/code&gt;. Narrow who can reach the RPC (the whitelist takes shell globs, not CIDR), then cage what an escaped command can touch with a systemd sandbox.&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The obvious way to stop a program from running arbitrary commands is to take away its ability to run commands. systemd has a knob for exactly this:&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
