No atmospheric correction is needed for L2A- products because it’s already BOA, but you could apply sen2three , Spatio-Temporal Synthesis of bottom of atmosphere corrected Sentinel-2 level 2a images, as they are generated by the Sen2Cor application.
Source: Sen2Three – STEP
Or/ And you could apply cloud mask idepix in case of cloud cover,
L2A, information,
Source: https://earth.esa.int/web/sentinel/technical-guides/sentinel-2-msi/level-2a/algorithm
The NDVI equation is (b8-b4)/(b8+b4) , (NIR-R)/(NIR+R), so in your case you used band 0 7, and this might be the first unaccepted values of NDVI!
In this case you could download Level-1C and apply sen2cor, to be able comparing the two results, already L2A and the one you corrected by applying sen2cor,
I think the following post could answer this demand,
source of the post surface reflectance greater than 1, Hope it helps,