'Report a persistent XSS vulnerability to the core.
:return: None, a vulnerability is saved in the KB.'

def _report_persistent_vuln(self, mutant, response, mutant_response_id, mod_value, fuzzable_request):

    response_ids = [response.id, mutant_response_id]
    name = 'Persistent    Cross-Site    Scripting    vulnerability'
    desc = 'A    persistent    Cross    Site    Scripting    vulnerability    was    found    by    sending    "%s"    to    the    "%s"    parameter    at    %s,    which    is    echoed    when    browsing    to    %s.'
    desc %= (mod_value, mutant.get_token_name(), mutant.get_url(), response.get_url())
    csp_protects = site_protected_against_xss_by_csp(response)
    vuln_severity = (severity.MEDIUM if csp_protects else severity.HIGH)
    if csp_protects:
        desc += 'The    risk    associated    with    this    vulnerability    was    lowered    because    the    site    correctly    implements    CSP.    The    vulnerability    is    still    a    risk    for    the    application    since    only    the    latest    versions    of    some    browsers    implement    CSP    checking.'
    v = Vuln.from_mutant(name, desc, vuln_severity, response_ids, self.get_name(), mutant)
    v['persistent'] = True
    v['write_payload'] = mutant
    v['read_payload'] = fuzzable_request
    v.add_to_highlight(mutant.get_token_payload())
    om.out.vulnerability(v.get_desc())
    self.kb_append_uniq(self, 'xss', v)
