Veracode CWE ID 311加密问题:iOS修改文件属性报错修复问询
CWE ID 311 加密漏洞修复方案
- 告警触发原因:当前操作的文件存储加密后的敏感业务数据,Veracode静态扫描规则识别到修改该文件属性时未显式配置文件访问权限,判定存在敏感文件被未授权访问的风险,因此抛出CWE-311告警。
- 修复方案:
- 最优方案:修改文件属性时同步显式设置文件的POSIX权限,限制仅当前应用所有者可读写该文件,符合敏感数据防护要求,修复后的代码如下:
- (NSData*)loadContentsFromSecureFile:(NSString*)name ofType:(HCFileType)type { NSString *path = [self pathForFile:name ofType:type]; NSData *encryptedData = [NSData dataWithContentsOfFile:path]; if (encryptedData == nil) { DebugLog(@"No secure data found: %@", path); return nil; } NSData *data = [encryptedData AES256DecryptWithKey:[self.profile getFileKeyBytes]]; if (data == nil) { DebugLog(@"Unable to decrypt data, deleting: %@", path); [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; return nil; } // 新增文件权限配置,消除CWE-311告警 [[NSFileManager defaultManager] setAttributes:@{ NSFileModificationDate: [NSDate date], NSFilePosixPermissions: @(0600) } ofItemAtPath:path error:nil]; return data; }
- 可选方案:如果更新文件修改时间的业务逻辑非必要,直接删除被标记的
setAttributes代码行即可消除告警。
- 补充说明:iOS应用默认沙盒目录下的文件仅应用自身可访问,若操作的文件路径在沙盒内,添加权限配置后即可通过Veracode扫描;若文件存储在公共共享目录,该权限配置也可以有效避免其他应用读取敏感文件内容。
内容的提问来源于stack exchange,提问作者Prajnaranjan Das
相关产品推荐
相关产品推荐

