1. A computer program product embodied on a non-transitory computer readable medium, comprising instructions stored thereon to cause a processor to: identify data to be scanned with a type of scan at a local scanner of a first virtual machine of a device, wherein the device comprises a plurality of virtual machines, each virtual machine comprising a local scanner, the local scanner having access to a cache shared by the plurality of virtual machines; determine, at the first virtual machine, an identifier of the data; determine, at the first virtual machine, whether the identifier is stored in the cache, wherein presence of the identifier in the cache indicates that the data has been previously scanned by a local scanner of one of the plurality of virtual machines; receive a security status at the first virtual machine after it is determined that the identifier is stored in the cache, the security status associated with the identifier of the data, wherein the security status comprises a result of a previous scan of the data and the security status comprises information about the type of scan that was performed; forgo scanning of the data at the local scanner of the first virtual machine when the security status is determined to comprise a result not indicating unwanted data; and scan the data and store the identifier and the security status in the cache utilizing the local scanner of the first virtual machine when it is determined that the identifier is not stored in the cache or when the result indicates unwanted data.