“滥用Keychain Services API”分析发现了哪些错误?

问题描述:

Xcode 4.6的构建设置标记为“滥用钥匙串服务API”,也就是CLANG_ANALYZER_SECURITY_KEYCHAIN_API。快速帮助无用:“滥用Keychain Services API”分析发现了哪些错误?

检查是否滥用了钥匙串服务API。

因此,Clang静态分析仪在这种情况下寻找什么样的“误用”?

它旨在确保由Keychain Services API中的函数分配的内存由调用方以正确的方式释放。例如,SecKeychainFindGenericPassword通过输出参数返回密码数据。调用者需要通过SecKeychainItemFreeContent而不是像free这样的替代API来释放此数据。未能使用正确的API可能会将敏感数据(例如密码)留在内存中。

如果您对更多细节感兴趣,可以在LLVM SVN repository中看到此检查器的实现。

+0

我在[静态分析器 - 问题 - 安全]下的BuildSettings中看到了这个,但是在它前面还有一个YES和No的选项。我很困惑它实际上是什么意思..例如,写有'KeyChain的滥用服务API“,并在它前面我有一个选项,是和否。这是否意味着如果我将它设置为否,它不会被滥用或什么。看起来很荒唐。任何帮助? – 2017-02-11 18:29:41

+1

该设置控制是否启用特定分析仪检查。 – bdash 2017-02-11 18:31:16

评论中the source code解释说:

// This checker flags misuses of KeyChainAPI. In particular, the password data 
// allocated/returned by SecKeychainItemCopyContent, 
// SecKeychainFindGenericPassword, SecKeychainFindInternetPassword functions has 
// to be freed using a call to SecKeychainItemFreeContent. 

它似乎并没有做任何事情比这更花哨。