newton-virus-objectsq

TaranFx上有一篇文章介绍了一个名为SpyPhone的新的开源程序,它将当前iPhone SDK的“信息脆弱点”都完全曝光。下面是该文章的链接:


SpyPhone程序从所有iPhone数据


大家可能都听说过越狱iPhone用户可能遇到的一些问题。没有SDK的限制,许多用户的手机都被恶意程序通过默认的root密码劫持了。不像我们听说过的其它一些程序,SpyPhone仅利用公共API获取它显示的信息。它显示了:

  1. Email账户
  2. Wi-Fi 网络
  3. 电话使用信息及历史信息
  4. 位置信息
  5. Safari 搜索
  6. YouTube 搜索,历史和书签
  7. 照片
  8. 地址簿数据
  9. 键盘缓存


在这里我们的目的并不是向大家大声抱怨安全,隐私问题,而是要看看到底该程序是怎样做的。SpyPhone的源代码可以在 git hub 下载,你可以自己看看到底它是怎样完成这些工作的。快速浏览了一下它的源代码,我们发现iPhone像 Macintosh电脑一样都包括一些文件夹,比如“Applications”, “Library”, “Root”等等。如果你安装了SDK,那么你可以在iPhone模拟器上找到这些文件夹。它们在:

~/Library/Application Support/iPhone Simulator/User


这就是iPhone保存所有数据的地方。再看下SpyPhone的源代码,它的秘密就是利用这些文件夹和它们包含的文件。如果你再进一步,你会在iPhone模拟器的文件夹下发现:

~/Library/Application Support/iPhone Simulator/User/Library/Preferences/


这里有许多 com.apple.SOMETHING.plist 文件。这些文件就是SpyPhone获取大部分数据的源头(其它数据可以通过SDK的其他部分,如地址簿访问,照片服务等)。它使用下面代码获取数据:


NSString *path = @"/Library/Preferences/SystemConfiguration/com.apple.wifi.plist";
 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
 
if(!dict) return;
 
NSArray *a = [dict valueForKey:@"List of known networks"];
 
if(!a) return;

NSString *path = @”/Library/Preferences/SystemConfiguration/com.apple.wifi.plist”;
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
if(!dict) return;
NSArray *a = [dict valueForKey:@"List of known networks"];

if(!a) return;


上面的代码获取程序运行其上的电话的网络信息,它包括在一个数组中。尽管有些担忧,但我认为它还并不是罪恶滔天。首先我知道Apple会拒绝这样的程序出现在App Store上。Apple对SDK可谓是了如指掌,所有它可以叫停所有的滥用其SDK的程序。


但是该程序为神秘的App Store批准过程提出了一个挑战。令人难以置信的是获取进入世界上发展最快的软件市场的入场卷是如此的神秘。像SpyPhone这样截取“敏感”信息的代码随时可能发生而用户并不知情。虽然Apple可以监视对PLIST的访问,但我很容易就可以想像到某些程序具有绕过Apple检查的能力直到某天我们知道它出现在App Store上。


例如,我有一个在线 XML 文档指定是否要运行截取用户信息的方法,在App Store审核期间将其设为NO而在获取批准后设为YES,开始收集用户数据。所以尽管Apple有很好的方法来防止恶意程序,但我确信有许多方法可以逃过Apple的检查。所以我产生了最后一个问题,大家是否宁愿程序不具有使用这些信息的能力?没有照片,没有地址簿,没有wifi侦测,程序mail限制。大部分这些使iPhone变得精彩的程序都被“安全隐患”包围着。大家怎么看?是否Apple应该至少关闭系统PLIST的访问?


原文见:The iPhone is Bad at Keeping Secrets