mrkeyoor.com_
Tue 01 Sept 17:45 UTC
Dev Toolsevaluationupdated 18 Aug 2026

skitter-creek-bath-salts review

skitter-creek-bath-salts is a security-research project that changes how certain older AMD processors translate physical memory addresses into DRAM locations. By disturbing that final mapping layer, it demonstrates a path to memory regions that normal CPU and firmware protections are supposed to hide, including PSP, System Management Mode, C6 storage, and microcode-related areas.

+40stars / 7d
Verdict

Use skitter-creek-bath-salts if you are doing serious platform-security research on disposable AMD Family 16h hardware and its unusually clear explanation is as valuable to you as the code. Everyone else should read it, learn from its model of the memory stack, and stop before running it. Its fresh activity and strong early attention are promising, but no releases and a five-day public history make it far too young to call mature.

We ran it

Screenshot of skitter-creek-bath-salts (github.com/xoreaxeaxeax/skitter-creek-bath-salts)

Answers from our run

Did you run skitter-creek-bath-salts yourself?

No. Its code is C, and it carries no manifest our lab installs from, and no Dockerfile, so there was nothing standard to install, build or test. This review is written from the repository's own documentation.

Who should not use skitter-creek-bath-salts?

General developers, because this is research code rather than a normal utility

What are the alternatives to skitter-creek-bath-salts?

CHIPSEC, PSPTool, Memtest86+. Use skitter-creek-bath-salts if you are doing serious platform-security research on disposable AMD Family 16h hardware and its unusually clear explanation is as valuable to you as the code.

Setup1/5Needs rare target hardware and a crash-safe research lab
Docs4/5Exceptionally clear mechanism, but operational guidance is unproven
Community3/5Strong launch attention, too new for a support track record
Maturity1/5Five days old, no releases, and highly experimental

Discussed on

  1. hnSpaghettifying DRAM716 points

Who it’s for

Hardware-security researchers studying AMD Family 16h systems
Firmware specialists investigating PSP, SMM, or memory-controller behavior
Academics teaching the gap between physical addresses and DRAM coordinates
Experienced low-level developers with disposable, supported test hardware

Who it’s NOT for

General developers, because this is research code rather than a normal utility
Anyone using a daily-driver or production machine, because rewriting memory-controller behavior can crash or corrupt it
Owners of newer AMD, Intel, ARM, or RISC-V systems expecting a ready-made exploit, because the tested target is AMD Family 16h
Defenders seeking a one-command compliance scanner, because this project demonstrates a mechanism rather than auditing a fleet

Setup reality

The one-instruction exploit summary makes the underlying flaw look almost trivial, but a useful experiment is not. You need a specifically supported AMD Family 16h machine, enough low-level knowledge to understand memory-controller registers and physical memory access, and a test environment you can afford to crash or corrupt. The README excerpt is excellent at explaining the mechanism, yet it does not establish a packaged installation path, stable release, broad hardware support, or safe rollback procedure, so expect a lab project rather than a quick install.

Why this project exists

Most software treats a physical memory address as the end of the road. The operating system translates a virtual address, permissions are checked, caches and interconnects do their work, and the resulting physical address appears to identify a fixed place in RAM. skitter-creek-bath-salts focuses on the less familiar step after that: the memory controller still has to translate that address into a channel, rank, bank, row, and column on DRAM.

That distinction matters because protected regions are generally fenced using physical addresses. The project argues, and demonstrates on its target hardware, that changing the controller's final translation can make a protected DRAM location appear under a different physical address. The upper layers continue enforcing their rules, but they are guarding the wrong mapping. This is a narrow, unusually deep platform-security technique, not a conventional memory bug or an application exploit.

The target is just as important as the idea. Development and testing are explicitly tied to AMD Family 16h processors, the last generation whose public data sheets document the relevant DRAM translation registers and indicate that they cannot be locked. The README says later generations and other architectures share parts of the broader address pipeline, but it carefully frames this implementation as a beginning, not proof that the same procedure works everywhere.

What it does well

The strongest part of the project is its explanation. The README walks a pointer from virtual-address checks through page tables, virtualization, the IOMMU, cache coherence, the system fabric, and finally the memory controller. That long map is not decoration. It shows exactly which protections act before the address reaches the controller, making the central claim understandable even if you have never worked with DRAM coordinates.

The core demonstration is also admirably concrete. The README reduces the critical change to an XOR against a documented controller register bit associated with bank-swizzle mode. Its point is not that the whole experiment requires one effortless command, but that a single low-level configuration change can rewrite the meaning of addresses beneath protections that assume the mapping is stable. The project then connects that mechanism to sensitive areas including the Platform Security Processor, System Management Mode, C6 DRAM, and CPU microcode.

Its scope is unusually honest. Rather than claiming universal support, it names the tested CPU family and explains why that family is tractable. The MIT license also leaves researchers free to inspect, adapt, and build on the work. A last push on August 13, 2026, only five days before this review, confirms that the repository is currently active.

Weaknesses and rough edges

The biggest problem is that the approachable writing can make an extremely hazardous experiment feel easier than it is. Changing memory-controller translation while a system is running can invalidate assumptions held by the operating system, firmware, and devices. A mistake may mean a hard crash, corrupted memory, or damaged persistent data. This belongs on expendable lab hardware with a recovery plan, never on a workstation or server that matters.

Hardware coverage is another severe limit. AMD Family 16h is old and specific. The README's discussion of AMD 17h and later, plus ARM and RISC-V, describes conceptual similarities, not verified compatibility. Readers should resist turning an architectural observation into a support claim. There is no listed release, so there is no stable version to pin, no release history to judge, and no evidence here of a compatibility matrix across boards, firmware versions, or memory layouts.

The supplied documentation is excellent as a technical narrative, but the available evidence does not establish a polished operator experience. Serious users still need to validate prerequisites, compiler and operating-system expectations, privilege requirements, recovery steps, and exact board behavior from the repository itself. Those gaps matter more here than in an ordinary developer tool because failure can destabilize the entire machine.

Community and project health

The launch has attracted remarkable attention: 1,803 GitHub stars, plus a Hacker News discussion with 494 points and 137 comments. Six open issues is not alarming by itself, especially for a repository created on August 13. Combined with the recent push, it looks active rather than abandoned.

Still, popularity is not the same as maintenance history. Five days is too little time to see whether issues receive careful answers, outside patches are reviewed, regressions are caught, or maintainers continue testing. With no listed releases, there is also no cadence to evaluate. The fair community score is therefore average: strong interest and fresh work, but no durable record yet.

Where it fits in a real stack

This project sits at the exploratory end of a hardware-security lab. Use CHIPSEC when you need a broad platform assessment framework, PSPTool when you need to inspect or alter AMD firmware images offline, and Memtest86+ when the job is memory reliability testing. skitter-creek-bath-salts is the specialist instrument for studying what happens when DRAM address translation itself becomes the attack surface.

It should feed research, demonstrations, and defensive thinking, not production deployment. The most realistic workflow is to read the architecture first, reproduce only on matching disposable hardware, record firmware and memory configuration, and treat every reboot or corrupted run as possible. For qualified researchers, it is a sharp and educational proof of how security boundaries can fail below the layers that enforce them. For nearly everyone else, the README is the product worth consuming.

Alternatives

ProjectWhat it isPick it when
CHIPSECA broader framework for assessing firmware, hardware, and platform-security configuration.Pick this instead when you need repeatable platform checks across supported systems rather than one AMD DRAM-remapping technique.
PSPToolA tool for displaying, extracting, and modifying AMD PSP firmware inside UEFI images.Pick this instead when your work centers on offline AMD firmware images and PSP contents, not live DRAM translation.
Memtest86+A standalone memory tester for finding RAM faults, including a Rowhammer test.Pick this instead when you want to test memory reliability or screen hardware without researching protected-memory remapping.

What people are saying

  1. [velocity-scout] xoreaxeaxeax/skitter-creek-bath-salts
  2. [hackernews] Spaghettifying DRAM

Sources

  1. skitter-creek-bath-salts repository and README
  2. CHIPSEC repository
  3. PSPTool repository
  4. Memtest86+ repository

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →