skitter-creek-bath-salts breaks hardware isolation on a legacy processor
This C-based kernel module targets AMD Family 16h processors to scramble memory mappings and expose protected memory regions like the PSP and SMM. By bypassing the CPU's memory management unit entirely, it illustrates how hardware security primitives collapse when address translations are rewired. However, its restriction to obsolete hardware limits its use to pure security research.
Autonomously generated. This product was selected by the automated daily curation process. The jury evaluation, scores, article text, and publication were generated automatically. No human edited the jury scores or verdict before first publication.
Selection and product details
Jury Summary
The skitter-creek-bath-salts project operates at the deepest layers of the memory controller hierarchy, bypassing the standard memory management unit to alter physical DRAM address translations. By exploiting the GF(2) linear map properties of the DRAM controller on AMD Family 16h CPUs, the tool exposes protected memory regions like the Platform Security Processor (PSP) and System Management Mode (SMM) that are normally invisible to the operating system. This mechanism completely bypasses traditional security fences because it acts below the physical address layer. However, this deep integration comes at a steep price: the driver requires offlining all but one CPU core and disabling interrupts during execution to avoid crashing the platform. While the technical quality of the inline assembly and cache-flushing sequences is unusually precise, the utility of the codebase is severely constrained by its strict hardware dependency. It serves as an impressive, self-contained educational showcase of hardware vulnerabilities, but cannot be easily integrated into modern automated security suites or active production environments.
WHERE THE JURY AGREED
- ✓
The project presents a highly sophisticated, hardware-level exploit showing how memory controller configuration can bypass all traditional CPU memory protections.
- ✓
The absolute dependency on legacy AMD Family 16h processors renders the codebase unusable for modern cloud or enterprise workloads.
- ✓
The codebase represents a complete academic showcase but lacks any modern software packaging, versioning, or CI/CD pipelines.
WHERE THE JURY SPLIT
- purpose usefulness
Alex views the tool as practically useless because it requires obsolete physical hardware, whereas Marcus argues that the conceptual bypass of GF(2) linear maps has significant strategic value for security researchers mapping out similar vulnerabilities on modern architectures.
Five Jury Perspectives
Five simulated professional perspectives scored the same public evidence using the JuryPress Open Product Rubric.
A software team on a standard modern stack will gain nothing from downloading this code. To make any use of it, you must buy a physical AMD Family 16h machine from 2013 and run it under a customized Linux kernel. Unless your business model depends on finding physical firmware flaws in obsolete servers, this remains a museum piece.
- The mathematical concept of exploiting GF(2) mappings to bypass security barriers is clear.
- The repository strictly focuses on its research goal without adding unnecessary features.
Hardware compatibility is restricted to AMD Family 16h processors, meaning modern enterprise teams cannot run this on their current cloud or local infrastructure.
View full scorecard
A developer looking to secure a modern cloud database will find zero utility here. This repository targets a CPU family that was superseded a decade ago. If your daily work involves analyzing legacy AMD chips for hardware vulnerabilities, this provides a highly specific blueprint, but for anyone else, the practical utility is nonexistent.
The repository contains the core kernel and userspace files needed to build the module. However, there are no continuous integration jobs or automation scripts to prove that the code compiles cleanly on any modern kernel version. Without hardware, I cannot confirm if the memory-aliasing character device runs.
- Could not run the code on physical hardware to verify real-world functionality.
The C code looks highly focused and clean. The driver limits its operations to a carefully mapped scratch region of 16 KB of RAM, which minimizes the risk of corrupting live kernel state. But the strict reliance on single-core execution makes it a hazardous utility for any shared system.
On Monday morning, a team lead decides to try this out. They clone the repository and immediately realize they need a physical chip from Family 16h just to load the kernel module. Without that exact silicon, the installation process halts before it even begins.
The core approach of using linear algebra over GF(2) fields to reconstruct memory scrambles is highly creative. It stands out from standard software-level exploits that typically focus on OS kernels or user-space privileges. It proves a unique conceptual exploit vector.
With only three open issues and zero recent updates, the project is clearly a static archive rather than a living product. The MIT license is excellent for reuse, but the lack of an active community or standard documentation guidelines means you are entirely on your own if you adopt it.
The spaghettify.c kernel module implements address translation overrides at the memory controller level. It disables interrupts and calls inline assembly to modify northbridge configuration space registers. This approach successfully bypasses memory region exclusion remaps but introduces severe platform instability risks.
- Inline assembly is used correctly to prevent compilation reordering in critical execution paths.
- Scratch buffer reservations use safe kernel allocation ranges to prevent trashing unrelated structures.
Offlining all other processor cores via the single-core guard in kernel/spaghettify.c presents severe performance degradation risks if executed on a multi-user or critical system.
View full scorecard
The code implements physical memory mapping manipulation targeting specific PCI configuration offsets on AMD Family 16h. This is a highly specialized task of interest to chip researchers but provides no utility for standard system administration or software development workflows.
The driver code in kernel/spaghettify.c defines the required ioctl commands and includes the inline assembly critical section. The configuration structures are fully declared in kernel/spaghettify.h. There is no test suite or automated build verification included in the repository.
- Lack of unit tests or test logs in the repository.
The inline assembly block in kernel/spaghettify.c ensures the compiler cannot inject memory operations between the bank-swizzle toggle and the physical read. The module flushes cache lines using clflush and uses mfence and lfence instructions to control memory ordering. This implementation prevents invalid memory accesses during register modification. The execution safety path was not examined due to lack of hypervisor tests.
- The execution safety path of the kernel module on other architectures was not examined.
- Confidence limited to medium: 3 of 16 source files were examined, a sample of the codebase. The examined files bear on data write safety, cost & resource controls; execution & permission safety, production reliability were not examined.
Running the code requires compiling a custom Linux kernel module and offlining all system cores but one. The utility does not provide error reporting if the offlining process fails or if the PCI configurations are locked by the platform BIOS. The installation relies entirely on manual command execution.
The project demonstrates a unique physical address translation rewrite below the uncore and caching layers. By targeting the DCT0 DramCfgHi register directly, it bypasses security primitives that operate above the memory controller. This represents a highly sophisticated design decision.
The repository does not use version tags or maintain a changelog. It features no CI workflows or code analysis tools. The code is structured as an MIT-licensed research release with no planned updates or community contribution guidelines.
You load the kernel module using insmod and it immediately requests to offline all other cores. This action halts active background processes on your machine. The interface provides raw physical address reads but leaves you to calculate the complex GF(2) linear transforms manually.
- The README includes an instructive ASCII diagram of the virtual-to-physical address pipeline.
- The scratch info ioctl cleanly exposes physical addresses to help userspace tool development.
Userspace argument parsing in userspace/args.h lacks interactive feedback when a memory address input is malformed, leaving the developer guessing why the tool failed to launch.
View full scorecard
You want to explore memory structures but the tool restricts your analysis to ancient AMD platforms. The code lacks clear wrappers or abstractions for modern processors. This restriction makes the utility extremely narrow for everyday debugging needs.
You see the source code files and a clear directory structure. There are no pre-built binaries or installation packages available. You must manual compile the module and configure the parameters yourself, which is a high-friction starting point.
The C implementation has clean division between the userspace arguments and the kernel character device. The scratch memory allocation safely reserves a 16 KB block to protect active kernel tables. The system limits itself cleanly to the single core execution.
You open the repository and find a README explaining the hardware principles. The instructions require manual kernel compilation and root access to load the character device. No interactive wizard or helper script exists to check if your processor is compatible before you run the code. The lack of interactive feedback makes the first-run experience difficult.
You get a unique hardware-level capability that cannot be found in standard memory tools. The idea of using linear map math to decrypt scrambled address lines is highly elegant. This bypasses standard operating system barriers in a completely novel way.
You see zero development activity with only two commits in the repository. The project lacks any contribution guidelines or issue templates. There is no clear path for community support or updates.
If the product goal is to demonstrate a hardware security exploit on AMD Family 16h architectures, this repository has a highly coherent and focused scope. If the objective is a general-purpose memory diagnostic or security auditing utility for modern infrastructure, the scope is excessively narrow. The project functions as a research prototype rather than a production-ready utility.
- The project targets a highly specific and achievable goal without adding bloated secondary features.
- The license is clearly specified as MIT, offering legal clarity for corporate safety analysis.
The repository lacks any standard versioning or release tags, creating major software management hurdles for integration with other firmware auditing frameworks.
View full scorecard
If your team's objective is finding hardware-level memory leaks or security bypasses on obsolete x86 processors, the scope is well-defined. The repository limits itself to modifying the DCT/MCT layer translation registers. It does not attempt to support modern Intel or AMD platforms, keeping its development focus narrow and achievable.
The repository provides the raw materials required for compiling the module and running the userspace tools. However, the lack of test configurations or verification logs makes it difficult to assess the stability of the build before deployment on actual physical infrastructure.
The code demonstrates a highly focused design with a clean division between kernel-space driver logic and user-space parameter passing. The spaghettify driver includes defensive measures such as verifying the active CPU count before starting the operation. It manages its resource boundaries strictly.
The documentation focuses heavily on the underlying theoretical memory architecture rather than step-by-step developer setup. While the README outlines the general pipeline, it does not provide an automated guide or setup tool. This places a heavy cognitive load on the initiating engineer.
The project is highly differentiated because it targets the hardware memory controller instead of software-level paging tables. This creates a distinct category of exploit vector that operates below standard hypervisor and OS controls. It is a highly specialized architectural choice.
If we evaluate this project's long-term maintenance, there is no evidence of an active roadmap or release schedule. The codebase has remained static since its initial commits, with only three open issues. The lack of standard version tags or contributing guidelines indicates this is a completed code dump rather than an active project.
This project sits outside the main development lines of modern cybersecurity tools, offering high novelty but zero market leverage. By targeting Family 16h, it captures academic interest but misses the massive enterprise market running modern Zen architectures. It is a compelling demonstration of GF(2) linear map exploitation that lacks an ecosystem.
- The project targets a unique point in the hardware security stack that standard software defensive products miss.
- The repository has captured significant organic community interest, reaching 1742 stars within days of release.
The tool is an isolated academic showcase with no clear integration path or plugins for broader hardware-security testing frameworks.
View full scorecard
The codebase has high strategic value for a very niche audience of hardware security firms. However, because it addresses a market segment defined by 2013-era processors, it offers virtually no enterprise adoption leverage today. Its utility is confined to a tiny research ecosystem.
The repository contains a fully structured codebase with no placeholders. It lacks a release channel or package registry distribution, meaning adoption requires building directly from source. I did not find any proof of verified runtime testing across kernel versions.
The codebase uses standard Linux kernel interfaces for PCI configuration space access and character devices. The inline assembly execution is carefully structured to prevent standard prefetching errors. The quality is solid, though restricted to a single architecture.
Onboarding is extremely high-friction because there are no pre-compiled binaries or virtualization targets. You cannot evaluate this project in a standard Docker container or AWS instance. This drastically limits its top-of-funnel developer adoption.
This codebase represents a major conceptual leap compared to standard software-based rowhammer or memory security tools. It exploits the underlying GF(2) linear maps of the DRAM controller to bypass the entire CPU memory protection hierarchy. This hardware-level approach bypasses the MMU, IOMMU, and SMM protections simultaneously, which is highly distinct from standard software vulnerabilities.
Looking at the numbers, 1742 stars against only 138 forks reveals high observer interest but low developer contribution rates. The project is licensed under the standard MIT license, which provides good freedom. However, the lack of active maintainers or a community ecosystem suggests it will remain an isolated academic curiosity.
Final Verdict
Security researchers specializing in physical hardware vulnerabilities on legacy x86 architectures should study this codebase to understand memory controller exploitation. General engineering teams and cloud infrastructure administrators must skip this project, as running it on modern hardware is impossible. The jury would only recommend a broader evaluation if the maintainers demonstrate a hardware-agnostic simulation layer or adapt the tool to modern CPU architectures. Adopt only for deep academic hardware analysis.
Evidence reach: the jury examined 3 of 16 source files, including implementation bearing on data write safety, cost & resource controls. Not examined: execution & permission safety, production reliability.
Bring the jury to your own project
Run the same five AI personas with your own evidence and evaluation criteria using Judgie-AI.
Explore Judgie-AI →Sources, evidence map and generation metadata
Sources
- ev-b72a52a4: xoreaxeaxeax/skitter-creek-bath-salts GitHub API Metadata (api_metadata)Retrieved: 2026-08-17T07:58:56.826Z
- ev-4892ffcb: xoreaxeaxeax/skitter-creek-bath-salts README (readme)Retrieved: 2026-08-17T07:58:56.871Z
- ev-3fce6afb: Core Source File (args.h) (source_code)Retrieved: 2026-08-17T07:58:57.107Z
- ev-1f8895f3: Core Source File (spaghettify.c) (source_code)Retrieved: 2026-08-17T07:58:57.171Z
- ev-c9680d90: Core Source File (spaghettify.h) (source_code)Retrieved: 2026-08-17T07:58:57.245Z
- ev-12ac7378: xoreaxeaxeax/skitter-creek-bath-salts (official_site)Retrieved: 2026-08-17T07:58:57.788Z
What the jury could not assess
- The source code analysis was limited to the three core files (userspace/args.h, kernel/spaghettify.c, kernel/spaghettify.h) representing only a portion of the repository's contents.
- No physical AMD Family 16h hardware was available to execute the kernel driver and verify the runtime address aliasing or offlining behaviors.
How claims relate to sources
After this review was written, a separate pass recorded how its statements relate to the collected material. It is a record of the writing, not a score of it: opinions and comparisons are expected to be the jury's own.
This record covers the review's narrative — the summary, headline, standfirst, jury summary, points of agreement and disagreement, stated limitations, verdict, and each judge's verdict and leading concern — plus any specific factual claim made elsewhere, such as a figure, a security or runtime assertion, or a claim about what the project lacks. The per-criterion scoring commentary is not mapped statement by statement: an opinion about a score is the jury's judgment, not a claim about the world. All 93 covered statements were recorded.
- Repository observation30 statements
- Creator claim12 statements
- Editorial judgment46 statements
- Not linked to collected evidence5 statements
Statements recorded as more than one claim
These sentences assert more than one thing, and the collected material does not cover every part equally. Each part is recorded separately so that a well-sourced half does not stand in for the whole. Where the parts differ, the statement is counted at the strength of its weakest factual part.
- “The skitter-creek-bath-salts project is a research prototype that modifies DRAM address translation mappings directly in the memory controller.”
- The skitter-creek-bath-salts project is a research prototype
- that modifies DRAM address translation mappings directly in the memory controller.
- “By executing inline assembly within a Linux kernel module, it rearranges physical coordinates to access protected regions like AMD PSP and SMM.”
- By executing inline assembly within a Linux kernel module,
- it rearranges physical coordinates to access protected regions like AMD PSP and SMM.
- “This C-based kernel module targets AMD Family 16h processors to scramble memory mappings and expose protected memory regions like the PSP and SMM.”
- This C-based kernel module targets AMD Family 16h processors to scramble memory mappings
- and expose protected memory regions like the PSP and SMM.
Generation metadata
- Model: gemini-3.5-flash
- Prompt version: 4.6.0
- Rubric: open-source-product 2.0.0
- Scores recalculated by code: yes
- Editorial provenance: Autonomously generated
- Evidence record: complete — 93/93 covered statements (63 scoring statements out of scope)
Discuss this review
Disagree with the verdict or found evidence we missed? Share a reasoned response, public evidence, or a factual correction.
Comments are public and require a GitHub account. Comments do not automatically change the jury score. Verified corrections may be reflected separately in Corrections & Updates.
Open GitHub Discussions