CVE-2022-23090

7.7 HIGH

📋 TL;DR

CVE-2022-23090 is a use-after-free vulnerability in FreeBSD's asynchronous I/O implementation where the aio_aqueue function fails to release a credential reference in error cases. This allows attackers to potentially overflow the reference count and exploit the freed memory, potentially leading to privilege escalation or system crashes. Affects FreeBSD systems using the lio_listio system call.

💻 Affected Systems

Products:
  • FreeBSD
  • NetApp products using FreeBSD kernel
Versions: FreeBSD 13.0-RELEASE before p5, FreeBSD 12.2-RELEASE before p12, FreeBSD 12.1-RELEASE before p14
Operating Systems: FreeBSD
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems where local users can execute code and use the lio_listio system call.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Local privilege escalation to root, kernel memory corruption leading to system compromise or denial of service.

🟠

Likely Case

Local privilege escalation from unprivileged user to root, system instability or crashes.

🟢

If Mitigated

Limited impact if proper access controls restrict local user accounts and SELinux/AppArmor policies are enforced.

🌐 Internet-Facing: LOW - This is a local privilege escalation vulnerability requiring local access to exploit.
🏢 Internal Only: MEDIUM - Internal users with shell access could exploit this for privilege escalation.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Requires local access and knowledge of kernel exploitation techniques. No public exploits known as of advisory publication.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: FreeBSD 13.0-RELEASE p5, FreeBSD 12.2-RELEASE p12, FreeBSD 12.1-RELEASE p14

Vendor Advisory: https://security.freebsd.org/advisories/FreeBSD-SA-22:10.aio.asc

Restart Required: Yes

Instructions:

1. Update FreeBSD using freebsd-update fetch && freebsd-update install
2. Rebuild kernel if using custom kernel
3. Reboot system to load patched kernel

🔧 Temporary Workarounds

Disable aio module

freebsd

Unload the aio kernel module to prevent use of vulnerable system calls

kldunload aio

Restrict local user access

all

Limit shell access and local code execution capabilities

🧯 If You Can't Patch

  • Implement strict access controls to limit local user privileges
  • Monitor for suspicious local privilege escalation attempts

🔍 How to Verify

Check if Vulnerable:

Check FreeBSD version with 'uname -a' and compare against affected versions

Check Version:

uname -a

Verify Fix Applied:

Verify kernel version after reboot with 'uname -a' shows patched version

📡 Detection & Monitoring

Log Indicators:

  • Kernel panic logs
  • System crash dumps
  • Failed privilege escalation attempts

Network Indicators:

  • None - local vulnerability only

SIEM Query:

Process monitoring for lio_listio system calls from unprivileged users

🔗 References

📤 Share & Export