Artfical AI Open tAI →
← All announcements

tAI 4.2 Finds Arbitrary Kernel Memory Access

August 20, 2026 · Security

A follow-up scan of Artfical tOS turned up a deeper version of the same class of bug: three syscalls that trusted ring3 pointers without ever checking they pointed at the caller's own memory.

Five days after ASI-2026-0013, we had tAI 4.2 go back over tOS with the same instruction: don't write, review. It found that the underlying architectural gap flagged back in ASI-2026-0001 (no real separation between user and kernel memory) was still open in the syscall layer itself, and this time the exploit path was direct.

ASI-2026-0014
HIGH CVSS 8.4 Fixed Published Aug 14, 2026

What it found

syscall_handler() in syscall.c ignored the page tables' PTE_USER bit entirely once execution reached ring0. Nothing in the paging setup stopped the kernel from dereferencing any address a ring3 .t program handed it as a syscall argument. Three syscalls took a pointer straight from ring3 without checking it actually belonged to the calling program's own memory: SYS_INFLATE, SYS_GFX_BLIT, and SYS_AUDIO_SUBMIT.

SYS_INFLATE's args->out is the raw-DEFLATE decompression target. With no validation, a ring3 program could point it at arbitrary kernel memory (page tables, function pointers, the syscall dispatch table itself) and supply crafted compressed input it fully controls: an arbitrary kernel-memory write of fully attacker-chosen content from a single syscall, a direct path to local privilege escalation.

SYS_GFX_BLIT's args->pixels and SYS_AUDIO_SUBMIT's source buffer are the read-side equivalent: point either at kernel memory and its contents become observable via the screen or audio output. All three syscalls are reachable by any unprivileged ring3 .t executable, no special permissions required.

Attack scenario

  1. Write an ordinary ring3 .t program that requires no special permissions.
  2. Call SYS_INFLATE with args->out pointed at an arbitrary kernel address, such as the syscall dispatch table.
  3. Supply crafted, fully attacker-controlled compressed input as the decompression source.
  4. One syscall later, attacker-chosen content is written directly into kernel memory: local privilege escalation from unprivileged userspace.

The fix

A new user_range_ok(ptr, len) check in syscall.c rejects zero-length and integer-overflowing ranges, and requires the full [ptr, ptr+len) span to fall inside the calling program's own code/data region or its own stack. All three affected syscalls now run every pointer argument, including ones embedded in argument structs, through this check before ever dereferencing it.

Affected platforms
Artfical tOS 0.9.156 (before commit 90bdc6a)
Weakness type
CWE-787: Out-of-bounds Write CWE-125: Out-of-bounds Read CWE-284: Improper Access Control
Detected by
ArtficalAI tAI 4.2

References

Two findings in a week, both in code nobody asked tAI 4.2 to touch. That's the pattern we care about most: a model that reads existing systems closely enough to catch what their own authors missed.