Characterizing And Detecting Software Attack Surface Components