Veracode CWE ID 311:加密问题

Veracode CWE ID 311: Cryptographic Issue

Veracode 密码问题:CWE ID:311

说明:应用程序通过将数据传递给未加密的函数来暴露潜在的敏感数据。这可能会导致私人数据(例如密钥)或其他敏感信息被错误地公开。

建议:确保应用程序保护所有敏感数据免遭不必要的暴露。

错误指向: [[NSFileManager defaultManager] setAttributes:@{NSFileModificationDate: [NSDate date]} ofItemAtPath:path error:nil];

有什么建议,如何解决这个问题?

- (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;
    }
    
    // Error pointed on this below line.
    [[NSFileManager defaultManager] setAttributes:@{NSFileModificationDate: [NSDate date]} ofItemAtPath:path error:nil];
    
    return data;
}

尝试添加具有用户名权限的属性,这将限制任何人读写文件。

// 错误指向这一行

NSDictionary *attrib = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithInt:0], NSFileGroupOwnerAccountID,
                             [NSNumber numberWithInt:0], NSFileOwnerAccountID,
                             @"username", NSFileGroupOwnerAccountName,
                             @"username", NSFileOwnerAccountName, NSFileModificationDate, [NSDate date]];

[[NSFileManager defaultManager] setAttributes:attrib ofItemAtPath:path error:nil];