Threat modeling: attacking your own software