← Latest papers
💻 computer science

The Linux IOCTL Census: A Source-Derived Database of the Linux Kernel Control-Code Surface

This paper introduces the Linux IOCTL Census, a source-derived database that systematically catalogs the Linux kernel's ioctl command surface by analyzing 878 modules to identify dispatch points, command codes, and security gates, thereby enabling cross-platform vulnerability analysis and threat modeling.

Original authors: Michael J. Bommarito

Published 2026-06-10
📖 5 min read🧠 Deep dive

Original authors: Michael J. Bommarito

Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer

Imagine the Linux operating system as a massive, bustling city. Inside this city, there are thousands of specialized shops (called drivers) that control everything from your mouse and keyboard to your hard drive and network card.

To get anything done in these shops, you (the user) have to hand a specific ticket to the shopkeeper. This ticket is a number called an IOCTL command. If you hand over the right ticket, the shopkeeper opens the door and does what you asked. If you hand over the wrong ticket, or a ticket with a trick hidden inside, the shopkeeper might accidentally break the shop, steal data, or let a stranger walk in.

The problem is that there is no central phone book for these tickets. Every shopkeeper invents their own tickets, writes their own rules, and keeps them in their own back office. Security experts trying to find the weak spots have to knock on every single door, one by one, hoping to find a shopkeeper who forgot to check a ticket's validity.

This paper introduces a "City Census" for these tickets.

Here is how the authors built this census and what they found, using simple analogies:

1. The Big Map (The Census)

Instead of knocking on doors one by one, the authors built a robot that read the blueprints (the source code) of the entire city.

  • The Process: They compiled a list of every single shop (878 modules) that was open for business in a standard city layout.
  • The Result: They created a giant, searchable database containing:
    • 586 Ticket Dispatchers: The main receptionists who take your ticket.
    • 1,289 Decoded Tickets: They figured out what 1,289 different ticket numbers actually mean (e.g., "Check Status," "Write Data").
    • 3,583 Dangerous Openings: They found places where the shopkeeper takes your ticket and immediately acts on it without checking if it's safe (like a shopkeeper who lets you touch the merchandise before checking your ID).

2. The "VIP Filter" (The Threat Model)

Not every shop is open to the general public. Some are only for the Mayor (the system administrator) or the Police (security modules).

  • The Problem: If a shop is locked behind a "Mayor Only" gate, a regular citizen can't get in, so it's less of a worry for everyday hackers.
  • The Solution: The authors added a filter to their map. They asked: "Is there a hard lock (a capability gate) that stops a regular person from entering?"
  • The Outcome: They filtered out 50 shops that are strictly locked down. This left them with 281 shops that are potentially open to regular people. This isn't a guarantee that anyone can get in, but it's the "worst-case scenario" list of places that might be reachable.

3. The "Safety Check" (Sanitization)

The authors looked at the 281 potentially open shops to see if the shopkeepers were being careful.

  • The Heuristic: They looked for a specific pattern: Did the shopkeeper check the size of the ticket before letting the user touch the sensitive stuff?
  • The Finding: They found 3,201 places where the shopkeeper seemed to skip this check.
  • The Caveat: The authors are honest about this. They call this a "proxy" or a "best guess." It's like seeing a shopkeeper glance at a ticket and assuming they checked it, without actually watching them do the math. It's an upper limit on how many places might be risky, not a confirmed list of broken shops.

4. Testing the Map (The Backtest)

To see if their map was accurate, they took 22 known security holes (CVEs) that had been found recently in the city and checked if their map showed them.

  • The Success: Their map found the location of 7 of these holes.
  • The Misses: They missed 15. Why? Because those 15 holes were in shops that didn't use the standard "Ticket Desk" system. They used a secret side-door or a different delivery method that the robot wasn't programmed to look for yet.
  • The Lesson: The map is very good at finding standard ticket desks, but it needs to learn about the secret side-doors (like those used by graphics cards or video drivers) to be complete.

5. Why This Matters

  • It's a Static List: Unlike other tools that try to break into the city by running it and crashing it (dynamic testing), this tool just reads the blueprints. It finds the shape of the danger, even if no one has ever tried to break in there yet.
  • It's Searchable: Security researchers can now ask questions like, "Show me all the shops that use the 'Watchdog' ticket and don't have a lock." They don't have to read thousands of pages of code manually.
  • It's Open: The authors released the "structural" part of the map (the list of shops and tickets) for everyone to use, but they kept the "targeting" part (the specific list of the most dangerous, unverified holes) private to prevent bad actors from using it immediately.

Summary

The authors built a searchable inventory of the Linux kernel's control buttons. They mapped out thousands of commands, filtered out the ones locked behind "Admin Only" gates, and highlighted the ones that look like they might be missing safety checks. It's not a list of confirmed bugs, but it's a massive, organized map that tells security experts exactly where to look first to find them.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →