<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gr3ytrac3 on Cyberdev | 0xSEC</title><link>https://Gr3ytrac3.github.io/</link><description>Recent content in Gr3ytrac3 on Cyberdev | 0xSEC</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 19 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://Gr3ytrac3.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Detailed Summary Documentation</title><link>https://Gr3ytrac3.github.io/posts/summary/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://Gr3ytrac3.github.io/posts/summary/</guid><description>&lt;hr>
&lt;h5 id="a-thinking-partner-that-accelerates-kernel-vulnerability-analysis-and-exploitation-reasoning">A thinking partner that accelerates kernel vulnerability analysis and exploitation reasoning.&lt;/h5>
&lt;hr>
&lt;h2 id="first-what-would-this-ai-do">First: what would this AI &lt;em>do&lt;/em>?&lt;/h2>
&lt;p>There are a few serious directions you could take:&lt;/p>
&lt;h3 id="1-exploit-reasoning-assistant-high-value">1. Exploit reasoning assistant (high-value)&lt;/h3>
&lt;p>An AI that:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Reads kernel code (Linux, drivers, modules)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Identifies potential vulnerability patterns (UAF, race conditions, integer overflows)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Explains &lt;em>why&lt;/em> something is exploitable&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Suggests exploitation strategies (heap feng shui, primitives, etc.)&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>👉 This is &lt;em>extremely&lt;/em> valuable because:&lt;br>
Most tools find bugs. Very few help you &lt;strong>reason about exploitation paths&lt;/strong>.&lt;/p></description></item><item><title>QEMU/KVM Audio Boundary Crossing: Silent Injection Between Host and Guest</title><link>https://Gr3ytrac3.github.io/posts/qemu-audio-boundary-crossing/</link><pubDate>Sat, 19 Apr 2025 00:00:00 +0000</pubDate><guid>https://Gr3ytrac3.github.io/posts/qemu-audio-boundary-crossing/</guid><description>&lt;h1 id="background">Background&lt;/h1>
&lt;p>Modern Linux desktop virtualization stacks route VM audio through the host audio server — typically PipeWire — via SPICE or VirtIO-sound. The assumption baked into this architecture is that the boundary between host audio context and guest audio context is enforced at the application layer.&lt;/p>
&lt;p>It isn&amp;rsquo;t.&lt;/p>
&lt;h1 id="the-finding">The Finding&lt;/h1>
&lt;p>Through careful mapping of the full PipeWire/SPICE audio pipeline, I confirmed that bidirectional silent audio injection is possible between a host and a running VM guest. An attacker with access to either side of the boundary can inject audio data into the other side without any user-visible indication.&lt;/p></description></item><item><title>Invisible Wire: Covert Channel Research Over Linux Desktop Audio</title><link>https://Gr3ytrac3.github.io/posts/invisible-wire-covert-channel/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://Gr3ytrac3.github.io/posts/invisible-wire-covert-channel/</guid><description>&lt;h1 id="the-premise">The Premise&lt;/h1>
&lt;p>A covert channel is a communication path that was never intended to transfer information. Classic examples exploit CPU cache timing, network packet timing, or shared memory. This work explores a less-studied surface: the Linux desktop audio subsystem.&lt;/p>
&lt;p>The core question: can audio hardware and software infrastructure — PipeWire, ALSA, the kernel audio stack — be used to exfiltrate data from a host without triggering conventional detection mechanisms?&lt;/p>
&lt;h1 id="why-audio">Why Audio&lt;/h1>
&lt;p>Audio is interesting as a covert channel carrier for several reasons:&lt;/p></description></item><item><title>Linux Microphone Debugging: When PipeWire Lies to You</title><link>https://Gr3ytrac3.github.io/posts/linux-mic-debugging/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://Gr3ytrac3.github.io/posts/linux-mic-debugging/</guid><description>&lt;h1 id="the-problem">The Problem&lt;/h1>
&lt;p>PipeWire reports devices as available. Applications claim to be recording. No audio is captured. This is the debugging sequence that actually works.&lt;/p>
&lt;h1 id="step-1--verify-the-device-exists-at-the-kernel-level">Step 1 — Verify the device exists at the kernel level&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">arecord -l
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># List all capture hardware devices&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># If empty: driver issue, not PipeWire&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="step-2--check-pipewire-sees-it">Step 2 — Check PipeWire sees it&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pw-cli list-objects &lt;span class="p">|&lt;/span> grep -A5 &lt;span class="s2">&amp;#34;Audio/Source&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Should show your capture device&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="step-3--check-wireplumber-routing">Step 3 — Check WirePlumber routing&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">wpctl status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Look at Sources section&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Active source should have [vol: 1.00] not [vol: 0.00]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="step-4--test-capture-directly-via-pipewire">Step 4 — Test capture directly via PipeWire&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pw-record --target&lt;span class="o">=&lt;/span>&amp;lt;node-id&amp;gt; test.wav
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Get node-id from wpctl status output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Record 5 seconds, play back with pw-play test.wav&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="step-5--check-permissions">Step 5 — Check permissions&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ls -la /dev/snd/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Your user needs to be in the audio group&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">groups &lt;span class="nv">$USER&lt;/span> &lt;span class="p">|&lt;/span> grep audio
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># If not: sudo usermod -aG audio $USER &amp;amp;&amp;amp; reboot&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="common-culprits">Common Culprits&lt;/h1>
&lt;ul>
&lt;li>WirePlumber defaulting to wrong capture node after suspend/resume&lt;/li>
&lt;li>Volume set to 0.00 at the WirePlumber layer despite mixer showing 100%&lt;/li>
&lt;li>PipeWire session manager not running (&lt;code>systemctl --user status pipewire-session-manager&lt;/code>)&lt;/li>
&lt;li>Flatpak app sandboxed away from real audio devices&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Note&lt;/strong>&lt;br>
On Fedora, the session manager is &lt;code>wireplumber&lt;/code>. On some distros it may be &lt;code>pipewire-media-session&lt;/code>. Check which is active before debugging the wrong daemon.&lt;/p></description></item><item><title>Links</title><link>https://Gr3ytrac3.github.io/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Gr3ytrac3.github.io/links/</guid><description/></item></channel></rss>