Current File : //usr/lib/python3/dist-packages/uaclient/api/u/pro/security/cves/__pycache__/v1.cpython-312.pyc
�

l�g-�	��ddlZddlmZmZmZmZddlmZmZddl	m
Z
ddlmZddl
mZmZddlmZddlmZdd	lmZmZmZmZmZmZmZmZGd
�de�ZGd�d
e�ZGd�de�ZGd�de�Z Gd�de�Z!Gd�dee�Z"Gd�de�Z#de$fd�Z%dede"fd�Z&dedee'efde'de"fd�Z(dedede"fd �Z)e
d!d"e)e�#�Z*d$d%d&e"eggd'd(d)�Z+y)*�N)�Any�Dict�List�Optional)�system�util)�APIEndpoint)�AdditionalInfo)�VulnerabilityParser�get_vulnerabilities)�get_apt_cache_datetime)�UAConfig)�
BoolDataValue�
DataObject�DatetimeDataValue�Field�FloatDataValue�StringDataValue�	data_dict�	data_listc�`�eZdZededd��ededd��gZddd�deedeefd�Zy	)
�CVEsOptions�	unfixableFzShow only unfixable CVES.��doc�fixablezShow only fixable CVES.�rrc� �||_||_y�Nr)�selfrrs   �E/usr/lib/python3/dist-packages/uaclient/api/u/pro/security/cves/v1.py�__init__zCVEsOptions.__init__)s��#������N)	�__name__�
__module__�__qualname__rr�fieldsr�boolr"�r#r!rrs\��
����+�		
�	����)�		
�
�F�$%*�"'�	��D�>���$��	r#rc�~�eZdZededd��ededd��ededd��ed	ed
��gZdededed	efd�Zy)
�CVEAffectedPackage�nameFzThe CVE namer�fix_versionz.The version that fixes the CVE for the package�
fix_statusz)The status of the CVE fix for the package�
fix_originz*The pocket where the fix is available fromc�<�||_||_||_||_yr�r,r-r.r/)r r,r-r.r/s     r!r"zCVEAffectedPackage.__init__Ns!����	�&���$���$��r#N�r$r%r&rrr'�strr"r)r#r!r+r+3s���
�����		
�	����@�		
�	����;�		
�	���<�	
�'�F�4%��%�&)�%�7:�%�HK�%r#r+c�Z�eZdZeded��edee�d��gZdede	efd�Z
y)�AffectedPackage�current_versionz"The current version of the packager�cvesz The CVE that affects the packagec� �||_||_yr�r6r7)r r6r7s   r!r"zAffectedPackage.__init__es�� /�����	r#N)r$r%r&rrrr+r'r3rr"r)r#r!r5r5WsN��
���4�	
�
	���(�)�2�	
�
�F��"%��-1�2D�-E�r#r5c�H�eZdZeded��eded��gZdedefd�Zy)�
RelatedUSNr,zThe USN namer�titlez
The USN titlec� �||_||_yr�r,r<)r r,r<s   r!r"zRelatedUSN.__init__zs����	���
r#Nr2r)r#r!r;r;ls@��
����	
�
	����	
�
�F��S���r#r;c��eZdZeded��eded��eded��edee�d	d
��eded	d��ed
ed	d��gZdddddd�de	de
jde	deee	dee
d
ee	deeedeee	fd�Zy)�CVEInfo�descriptionzThe CVE descriptionr�published_atzThe CVE published date�priorityzThe ubuntu priority for the CVE�notesFzA list of notes for the CVE�
cvss_scorezThe CVE cvss score�
cvss_severityzThe CVE cvss severityN)rDrErF�related_usns�related_packagesrGrHc�t�||_||_||_||_||_||_||_||_yr�rArBrCrDrErFrGrH)	r rArBrCrDrErFrGrHs	         r!r"zCVEInfo.__init__�sC��'���(��� ��
���
�$���*���)��� 0��r#)r$r%r&rrrrrr'r3�datetimerr�floatr;r"r)r#r!r@r@s��
���%�	
�
	���(�	
�
	���1�	
�
	���o�&��-�		
�	����$�		
�	����'�		
�9"�F�T&*�&*�'+�37�04�1��1��'�'�	1�
�1���S�	�"�
1��U�O�1� ��}�1��t�J�/�0�1�#�4��9�-�1r#r@c
��eZdZedee��d��edee��d��gZdd�dee	efdee	efd	e
jd
ee
jfd�Zy)�
CVEsResult�packages)�	value_clszcA dictionary where the keys are installed package names and the values are AffectedPackage objects.rr7zMA dictionary where the keys are CVE names and the values are CVEInfo objects.N)�apt_updated_at�vulnerability_data_published_atrQc�<�||_||_||_||_yr�rOr7rRrQ)r rOr7rRrQs     r!r"zCVEsResult.__init__�s"��!��
���	�/N��,�,��r#)
r$r%r&rrr5r@r'rr3rKrr"r)r#r!rNrN�s���
����0�u�	
�
	����(�_�	
�
�F�,7;�-��s�O�+�,�-��3��<� �	-�*2�):�):�-�!��!2�!2�3�-r#rNc�f�eZdZdZdeeefdeeeffd�Zdeeefdeeefdeeeffd�Zy)	�	CVEParserr7�affected_pkg�returnc�:�|j|ji�Sr)�get�vulnerability_type)r rWs  r!�get_package_vulnerabilitiesz%CVEParser.get_package_vulnerabilities�s������ 7� 7��<�<r#�vulnerability_info�vulnerabilities_datac��|jd�rgg}|jdi�jdi�}|dD]6}|j||j|i�jdd�d���8||d<|S)NrG�security_issues�usnsr<�r>)rZ�append)r r]r^rG�usn_info�related_usns      r!� _post_process_vulnerability_infoz*CVEParser._post_process_vulnerability_info�s���
�!�!�.�1��L�+�/�/�0A�2�F�J�J����H� 2�.�A�
���#�#� +�!)���k�2�!>�!B�!B�#�R�"���
�2>��~�.�!�!r#N)	r$r%r&r[rr3rr\rfr)r#r!rVrV�sf����=� ��c��N�=�	
�c�3�h��=�
"� ��c��N�"�#�3��8�n�"�
�c�3�h��	"r#rVrXc��|jd�xr|jd�}|jr|ry|jr|syy)Nr-r/FT)rZrr)�cve�options�
is_fixables   r!�cve_status_match_optionsrk�s;������'�A�C�G�G�L�,A�J����Z��	�����r#ric�*�t|t��Sr)�_cvesr)ris r!r7r7	s����(�*�%�%r#�vulnerabilitiesrRc��i}t�}t|jdi�j��D]�\}}g}t|jdg�d���D]M}t	||�r+|jt
|d|d|d|d�	���:|j|d��O|s�yt|d
|��||<��t|jdi�j�d
���D�	��
cic]�\}	}|	|vr�|	t|dtj|d�|d|d|d|d|jdg�D�
cgc]/}
t|
jdd�|
jdd�����1c}
|jdg������}}}	}
t||tj|�t���Scc}
wcc}
}}	w)NrOr7c��|dS)Nr,r))rhs r!�<lambda>z(_parse_vulnerabilities.<locals>.<lambda>s
��#�f�+�r#)�keyr,r-r.r/r1r6r9rnc��|dS)Nrr))�vs r!rqz(_parse_vulnerabilities.<locals>.<lambda>Bs
��!�A�$�r#rArB�ubuntu_priorityrDrErFrGrbr<r>rHrJrT)�set�sortedrZ�itemsrkrcr+�addr5r@r�parse_rfc3339_dater;rNr
)rirnrRrO�blocked_cves�pkg_name�package_info�pkg_cvesrh�cve_namerer7s            r!�_parse_vulnerabilitiesr�s��
�H��5�L�"(����J��+�1�1�3�#����,�������V�R�(�.E�
�
	.�C�(��W�5����&� ��[�$'�
�$6�#&�|�#4�#&�|�#4�	��� � ��V��-�
	.��!0� ,�->� ?��"�H�X��)�T$���� 1�2�6�<�<�>��
�#��"
�H�c��<�'�)	�'��M�*��0�0��^�1D�E��*�+��g�,��<�(��o�.�$'�7�7�>�2�#>��
 �	�$�����4�%�/�/�'�2�6���!�W�W�%7��<�
�	
��D��0��
�(,�(?�(?�+�)
�.�/�
���!��s�4AG�4G �9G�G�cfgc��|jr|jrd|_d|_tj�j}tt
�||��}|j}t|||j��S)z�
    This endpoint shows the CVE vulnerabilites in the system.
    By default, this API will show all CVEs that affect the system.
    F)�parserr��series)rirnrR)
rrr�get_release_infor�rrV�vulnerabilities_infor�rR)rir�r��cve_vulnerabilities_result�cve_vulnerabilitiess     r!rmrmQsv�����W�_�_�!������
�
$�
$�
&�
-�
-�F�!4��{���"��
5�I�I��!��+�(B�(b�(b��r#�v1�CVEs)�versionr,�fn�options_cls�35Tzs
from uaclient.api.u.pro.security.cves.v1 import cves, CVEsOptions

options = CVEsOptions()
result = cves(options)
zpro api u.pro.security.cves.v1a�
{
    "cves": {
      "CVE-2023-5678": {
        "cvss_score": 8.1,
        "cvss_severity": "high",
        "description": "description example",
        "notes": [
          "note example",
        ],
        "priority": "medium",
        "published_at": ".*"
      }
    },
    "packages": {
      "accountsservice": {
        "current_version": "0.6.40-2ubuntu11.6",
        "cves": [
          {
            "fix_origin": "esm-infra",
            "fix_status": "fixed",
            "fix_version": "0.6.40-2ubuntu11.6+esm1",
            "name": "CVE-2023-5678"
          }
        ]
      },
      "libaccountsservice0": {
        "current_version": "0.6.40-2ubuntu11.6",
        "cves": [
          {
            "fix_origin": "esm-infra",
            "fix_status": "fixed",
            "fix_version": "0.6.40-2ubuntu11.6+esm1",
            "name": "CVE-2023-5678"
          }
        ]
      }
    },
}
)�
introduced_in�requires_network�example_python�result_class�ignore_result_classes�
exceptions�example_cli�example_json),rK�typingrrrr�uaclientrr�uaclient.api.apir	�uaclient.api.data_typesr
�+uaclient.api.u.pro.security.cves._common.v1rr�uaclient.aptr
�uaclient.configr�uaclient.data_typesrrrrrrrrrr+r5r;r@rNrVr(rkr7r3r�rm�endpoint�_docr)r#r!�<module>r�s@���,�,�!�(�2��0�$�	�	�	��*��4!%��!%�H�j��*���&;1�j�;1�|-��^�-�> "�#� "�F�d��&�
�&��&�?�
�?��#�s�(�^�?�&)�?��	?�D�
��	����>��	���	������(�\��3�'�5�r#