Comparison Overview
VFS Global

VFS Global
Unit 201, Level 2, Gate Village 8, DIFC, P.O. Box 114100, Dubai, AE
Last Update: 16/07/2026
As the global leader in trusted technology services, empowering secure mobility for governments and citizens, VFS Global embraces technological innovation including Generative AI to support governments and diplomatic missions worldwide. VFS Global continuously transform...

BPO
9900 Stirling Rd, Suit 240, Cooper, Florida, US, 33024
Last Update: 03/04/2026
We established our back office here in Pakistan back in 2016 after which we have been providing complete support to our registered office in Florida. Our main aim has been to function as an effective thirdparty service provider in order to maintain beneficial relations...
Compliance Ranges Comparison

VFS Global







BPO






Benchmark & Cyber Underwriting Signals
Incidents vs Outsourcing and Offshoring Consulting Industry Avg (This Year)
VFS Global has 45.36% fewer incidents than the average of same-industry companies with at least one recorded incident.
Incidents vs Outsourcing and Offshoring Consulting Industry Avg (This Year)
No incidents recorded for BPO in 2026.
Incident History - VFS Global (X = Date, Y = Severity)
VFS Global cyber incidents detection timeline including parent company and subsidiaries.
Incident History - BPO (X = Date, Y = Severity)
BPO cyber incidents detection timeline including parent company and subsidiaries.
Notable Incidents

VFS Global

BPO
FAQ
Latest Global CVEs
A vulnerability in keras-team/keras version 3.15.0 allows unsafe deserialization of attacker-controlled PyTorch pickle data through the public `keras.layers.TorchModuleWrapper.from_config` method. This method invokes `torch.load(..., weights_only=False)` without requiring an explicit unsafe opt-in, such as a `safe_mode=False` parameter. When called outside a `SafeModeScope(True)` context, the absence of an ambient safe mode state permits unsafe deserialization by default. This issue can lead to arbitrary code execution if untrusted Keras layer configurations are processed using this method. The vulnerability arises because the method does not enforce safe deserialization practices unless explicitly guarded by Keras safe mode.
In the Linux kernel, the following vulnerability has been resolved: iommu/amd: Remove latent out-of-bounds access in IOMMU debugfs In iommu_mmio_write() and iommu_capability_write(), the variables dbg_mmio_offset and dbg_cap_offset are declared as int. However, they are populated using kstrtou32_from_user(). If a user provides a sufficiently large value, it can become a negative integer. Prior to this patch, the AMD IOMMU debugfs implementation was already protected by different mechanisms. 1. #define OFS_IN_SZ 8 ensures the user string <= 8 bytes, so e.g. 0xffffffff isn't a valid input. if (cnt > OFS_IN_SZ) return -EINVAL; 2. Implicit type promotion in iommu_mmio_write(), dbg_mmio_offset is int and iommu->mmio_phys_end is u64 if (dbg_mmio_offset > iommu->mmio_phys_end - sizeof(u64)) return -EINVAL; 3. The show handlers would currently catch the negative number and refuse to perform the read. Replace kstrtou32_from_user() with kstrtos32_from_user() to parse the input, and check for negative values to explicitly prevent out-of-bounds memory accesses directly in iommu_mmio_write() and iommu_capability_write().
In the Linux kernel, the following vulnerability has been resolved: sysfs: don't remove existing directory on update failure When sysfs_update_group() is called for a named group and create_files() fails (e.g. -ENOMEM), internal_create_group() calls kernfs_remove(kn) on the group directory. In the update path, kn was obtained via kernfs_find_and_get() and refers to a directory that already existed before this call. Removing it silently destroys a sysfs group that the caller did not create. Only remove the directory if we created it ourselves. On update failure the directory remains as it is left empty by remove_files() inside create_files(), but can be repopulated by a retry.
- https://git.kernel.org/stable/c/14f2c14ae86c4af17a0a9f8ab46dacf2d5fd1d8a
- https://git.kernel.org/stable/c/237557b8a81ab948e8332f7c0058e758f081c0a3
- https://git.kernel.org/stable/c/31527d80234caf83dc96ad478645e57df9de4472
- https://git.kernel.org/stable/c/48fa96538bd2868034d33429e4565fda384d0736
- https://git.kernel.org/stable/c/57b285e0368290aa55f79ba11419b96d0ebdb418
- https://git.kernel.org/stable/c/708f6926f61f71e09b5e9fd668b9882ccd46e69f
- https://git.kernel.org/stable/c/c5e125c828b701afaf7493b42a14aa89362ff36d
- https://git.kernel.org/stable/c/ccadd32cc1263802a5969c9efe0e96225450428c
In the Linux kernel, the following vulnerability has been resolved: mm/damon/sysfs-schemes: call missing mem_cgroup_iter_break() damon_sysfs_memcg_path_to_id() breaks mem_cgroup_iter() loop without calling mem_cgroup_iter_break(). This leaks the cgroup reference. Fix the issue by calling mem_cgroup_iter_break() before the break. The issue was discovered [1] by Sashiko.
- https://git.kernel.org/stable/c/082351f9d40007414ad6af062b3a26fa02fd4b5f
- https://git.kernel.org/stable/c/1bd31386ec3b9ccec10c04429948a306ec5897c0
- https://git.kernel.org/stable/c/302e02f9ba49f81418ec2a749ae6f5cac1d424e9
- https://git.kernel.org/stable/c/30a361be33f3793b9ecbd10ab7be6d0564819b79
- https://git.kernel.org/stable/c/d4e7b5c4cc353f154d5ab8bb2e1ce7714d77a6e9
In the Linux kernel, the following vulnerability has been resolved: efi: Allocate runtime workqueue before ACPI init Since commit 5894cf571e14 ("acpi/prmt: Use EFI runtime sandbox to invoke PRM handlers") ACPI PRM calls are delegated to a workqueue which runs in a kernel thread, making it easier to detect and mitigate faulting memory accesses performed by the firmware. Rafael reports that such PRM accesses may occur before efisubsys_init() executes, which is where the workqueue is allocated, leading to NULL pointer dereferences. Since acpi_init() [which triggers the early PRM accesses] executes as a subsys_initcall() as well, and has its own dependencies that may be sensitive to initcall ordering, deferring acpi_init() is not an option. So instead, split off the workqueue allocation into its own postcore initcall, as this is the only missing piece to allow EFI runtime calls to be made. This ensures that EFI runtime call (including PRM calls) are accessible to all code running at subsys_initcall() level.
- https://git.kernel.org/stable/c/13c6da02e767152c9ac4330962247a5e47011035
- https://git.kernel.org/stable/c/29cd94e678fcb3c4fd0f359deeac6d61334323fc
- https://git.kernel.org/stable/c/6996e954ae830f5b793ba6cf449885ca519dbdd2
- https://git.kernel.org/stable/c/c32a1fbe0f9a48453a552bb315cc4f1e7a74084e
- https://git.kernel.org/stable/c/e871549f7894ad4114b3dd53f241aa25a268ba8b