Is it possible to quickly find the overlapping geometry between two meshes?

I have a spherical procedural component inside a static actor and I perform a trace on the surface in order to retrieve the hit face index.
This method works fine for a single face, but I’d like to use a sphere trace to hit more faces at the same time.
The overall effect would resemble having a brush and adjusting its size to cover a bigger area.
This seems impossible because the sphere trace reports the first hit and then it stops, while the multi sphere trace does not work because I think it would need different actors/components.
What I’d need is a something that reports a hit on a certain component and then keeps going through the same component.
In practice this would mean to calculate the overlapping portion of two spheres, or, to put it slightly differently, to obtain the intersection between the surface of the first sphere with the volume of the second sphere: the output should be an array of all the faces of the first sphere being inside of the second sphere.
I’d like to avoid looping through all the faces and check one by one because they could be definitely too many, is there an alternative?