HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/uaclient/cli/__pycache__/fix.cpython-38.pyc
U

��Jh�r�@s&ddlZddlmZmZmZmZmZmZmZddl	m
Z
mZmZm
Z
mZddlmZmZddlmZddlmZmZddlmZmZddlmZmZmZdd	lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2dd
l3m4Z4ddl3m5Z6ddl7m8Z8ddl7m5Z9dd
l:m;Z;m<Z<ddl=m>Z>ddl?m@Z@mAZAmBZBddlCmDZDddlEmFZFddlGmHZHmIZImJZJddlKmLZLddlMmNZNddlOmPZPddlQmRZRmSZSmTZTddlUmVZVddlWmXZXddlYmZZZddl[m\Z\Gdd�d�Z]e)d�dd�Z^e+d �d!d"�Z_e`eaeLd#�d$d%�Zbe`eaeaeLd&�d'd(�Zcdpee`e`ededee`e`d)�d*d+�ZeeLe`ead,�d-d.�Zfdd/�d0d1�ZgeLd2�d3d4�ZheLead5�d6d7�Ziee`e`d8�d9d:�ZjeLeaead;�d<d=�ZkeLead5�d>d?�ZleLe`ead@�dAdB�Zme`eLeaeadC�dDdE�Zndqee`e`dG�dHdI�Zoe`dJ�dKdL�Zpe]e.dM�dNdO�Zqe]e/dM�dPdQ�Zre]e-dM�dRdS�Zse]e"dM�dTdU�Zte]e#dM�dVdW�Zue]e$dM�dXdY�Zve]e(dM�dZd[�Zwe]e&dM�d\d]�Zxe]e%dM�d^d_�Zye)eaeLeeeefd`�dadb�Zze>j{dcdd�dedf��Z|eBdcej}ej~e|eFjdgeAe@dhej�di�e@djej�dkdl�e@dmej�dkdl�gdn�gdo�Z�dS)r�N)�Dict�List�
NamedTuple�Optional�Set�Tuple�Union)�apt�
exceptions�messages�system�util)�attach_with_token�enable_entitlement_by_name)�	_initiate)�MagicAttachRevokeOptions�_revoke)�MagicAttachWaitOptions�_wait)�	FixStatus�UnfixedPackage�status_message)�ESM_APPS_POCKET�ESM_INFRA_POCKET�STANDARD_UPDATES_POCKET�FixPlanAptUpgradeStep�FixPlanAttachStep�FixPlanEnableStep�FixPlanNoOpAlreadyFixedStep�FixPlanNoOpLivepatchFixStep�FixPlanNoOpStatus�FixPlanNoOpStep�
FixPlanResult�FixPlanStep�FixPlanUSNResult�FixPlanWarning�"FixPlanWarningFailUpdatingESMCache�&FixPlanWarningPackageCannotBeInstalled�#FixPlanWarningSecurityIssueNotFixed�NoOpAlreadyFixedData�NoOpLivepatchFixData�USNAdditionalData)�CVEFixPlanOptions)�_plan)�USNFixPlanOptions)�ContractExpiryStatus�_is_attached)�cli_util)�ProArgument�ProArgumentGroup�
ProCommand)�
action_detach)�HelpCategory)�CLOUD_TYPE_TO_TITLE�PRO_CLOUD_URLS�get_cloud_type)�UAConfig)�PRINT_WRAP_WIDTH)�entitlement_factory)�ApplicabilityStatus�CanEnableFailure�UserFacingStatus)�notices)�Notice)�
PRO_HOME_PAGE)�colorize_commandsc@s\eZdZeeeeed�dd�Zdd�Zd
eeee	ed�dd	�Z
eeed
�dd�ZdS)�
FixContext��title�dry_run�
affected_pkgs�cfgcCsJd|_g|_t�|_tj|_||_||_||_	||_
d|_d|_d|_
dS)NrTF)�	pkg_index�unfixed_pkgs�set�installed_pkgsr�SYSTEM_NON_VULNERABLE�
fix_statusrFrHrGrI�should_print_pkg_header� warn_package_cannot_be_installed�fixed_by_livepatch)�selfrFrGrHrI�rT�2/usr/lib/python3/dist-packages/uaclient/cli/fix.py�__init__RszFixContext.__init__cCsN|jrJtj�t|j��jt|j�d�t|j��d�}tt	j
|tddd��dS)N�, )�count�pkgs�    F)�width�subsequent_indentZreplace_whitespace)rHrZSECURITY_AFFECTED_PKGS�	pluralize�len�format�join�sorted�print�textwrap�fillr;)rS�msgrTrTrU�print_fix_headeres����zFixContext.print_fix_headerN��source_pkgs�status�pocketcCs4|jr0tt|||jt|j�|r&t|�ndd��dS)N)�pkg_listrirJ�num_pkgs�
pocket_source)rPrb�_format_packages_messagerJr^rH�get_pocket_description)rSrhrirjrTrTrU�print_pkg_headervs��zFixContext.print_pkg_header�rY�unfixed_reasoncCs"|D]}|j�t||d��qdS)N)�pkgrr)rK�appendr)rSrYrrrsrTrTrU�add_unfixed_packages�s
�zFixContext.add_unfixed_packages)N)�__name__�
__module__�__qualname__�str�boolrr:rVrfrrprurTrTrTrUrDQs���rD��cvecCs8dj|j��|jd�d�|j���g}td�|��dS)N�{issue}: {description}��issue�descriptionz! - https://ubuntu.com/security/{}�
)r_rF�upperr�rbr`)r|�linesrTrTrU�print_cve_header�s��r�)�fix_plancCs�|j}dj|j��|jd�g}|j}t|t�r�|jrj|�	t
j�|jD] }|�	d�t
jj
j|d���qFn,|jr�|�	t
j�|jD]}|�	d|�q�td�|��dS)Nr}r~z - {}r{z - r�)�target_usn_planr_rFr�r��additional_data�
isinstancer+Zassociated_cvesrtrZSECURITY_FOUND_CVESZurlsZSECURITY_CVE_PAGEZassociated_launchpad_bugsZSECURITY_FOUND_LAUNCHPAD_BUGSrbr`)r�Z
target_usnr�r�r|Zlp_bugrTrTrU�print_usn_header�s*��

��
r�)�security_issuerGrIcCsztt|gd�|d�}|jjdj}|rH|jrHtjt�	|j
p<d|j�d��t|jjd�t�t
|jjd||�\}}|S)N)�cves�ZoptionsrIr�unexpected-error�Z	named_msg)�cve_planr,Z	cves_datar��errorrer
�AnonymousUbuntuProErrorr�NamedMessage�coder�rb�execute_fix_plan)r�rGrIr�r�ri�_rTrTrU�fix_cve�s 
�
��r�)r�rG�
no_relatedrIcCs�tt|gd�|d�}|jjdjj}|rJ|jrJtjt	�
|jp>d|j�d��t|jjd�t
dt	jj|d��t|jjdj||�\}}|tjtjfkr�|S|jjdj}|r�|r�|St
dt	jjd�d	d
�|D��d��t
dt	j�i}	|D],}
t
d�|
j��t|
||�|	|
j<t
�q�t
t	j�t||t	jd
�d}|D]�}
|	|
j\}}
t||
jt	jd
�|tjk�r�t
dt	jjdd��d}|tjk�rD|
D]"}|j �r�t
d�|j!|j ���q�d}�qD|�r�t
dt	j"j|d��|S)N)�usnsr�rr�r�r�)�issue_idz
- css|]}|jVqdS�N)rF)�.0ZusnrTrTrU�	<genexpr>�szfix_usn.<locals>.<genexpr>)Zrelated_usnsz- {})�contextF�- �
fix operation�Z	operationTz
  - {}: {})#�usn_planr.Z	usns_datar�r�r�rer
r�rr�r�r�rbZSECURITY_FIXING_REQUESTED_USNr_r�rrN�SYSTEM_NOT_AFFECTED�related_usns_planZSECURITY_RELATED_USNSr`ZSECURITY_FIXING_RELATED_USNSrFZSECURITY_USN_SUMMARY�_handle_fix_status_messageZFIX_ISSUE_CONTEXT_REQUESTEDZFIX_ISSUE_CONTEXT_RELATED�SYSTEM_VULNERABLE_UNTIL_REBOOT�ENABLE_REBOOT_REQUIRED_TMPL�SYSTEM_STILL_VULNERABLErrrsZSECURITY_RELATED_USN_ERROR)r�rGr�rIr�r�Ztarget_usn_statusr�r�Zrelated_usn_statusZrelated_usn_planZfailure_on_related_usnrirK�unfixed_pkgrTrTrU�fix_usn�s�
�
������������

����������r�)rkrirJrlrm�returnc	Cs�|sdSg}g}|D](}|d7}|�d�||��|�|�qtjd�dd�|�dd�t|���tdd	�}d
�|t||��S)z;Format the packages and status to an user friendly message.��z{}/{}z{} {}:�(rW�)rZ�r[r\z{}
{})rtr_rcrdr`rar;r)	rkrirJrlrmZ	msg_indexZsrc_pkgsZsrc_pkgZ
msg_headerrTrTrUrn/s"��rn)rI�tokenr�c
Csbttdd|gg��zt||dd�WdStjk
r\}zt|j�WY�dSd}~XYnXdS)ztAttach to an Ubuntu Pro subscription with a given token.

    :return: True if attach performed without errors.
    �proZattachT)r�Zallow_enableFN)rbrCrr
ZUbuntuProErrorre)rIr��errrTrTrU�_run_ua_attachKs
r�)r�cCs:t�\}}|t��kr6ttjjt�|�t�|�d��dS)z:Alert the user when running Pro on cloud with PRO support.)rFZcloud_specific_urlN)	r9r8�keysrbrZSECURITY_USE_PRO_TMPLr_r7�get)Z
cloud_typer�rTrTrU�*_inform_ubuntu_pro_existence_if_applicableYs
��r��rIc
Cs�ttj�t|d�}tdtjj|jd��t|jd�}zt	||d�}WnJt
jk
r�}z*ttj�t
|jd�}t||d�|�W5d}~XYnXtdtj�t||j�S)Nr�r�)�	user_code)Zmagic_tokenr�)rbrZCLI_MAGIC_ATTACH_INITrZCLI_MAGIC_ATTACH_SIGN_INr_r�rr�rr
ZMagicAttachTokenErrorZCLI_MAGIC_ATTACH_FAILEDrrZCLI_MAGIC_ATTACH_PROCESSINGr�Zcontract_token)rIZ
initiate_respZwait_optionsZ	wait_resp�eZrevoke_optionsrTrTrU�_perform_magic_attaches*

���
�r�)rIr�cCsjt�ttj�tjtjdddgd�}|dkr2dS|dkrBt|�S|dkrfttj�t	d�}t
||�SdS)zZPrompt for attach to a subscription or token.

    :return: True if attach performed.
    �s�a�c�Z
valid_choicesF�> T)r�rbrZ*SECURITY_UPDATE_NOT_INSTALLED_SUBSCRIPTIONr
�prompt_choicesZSECURITY_FIX_ATTACH_PROMPTr�ZPROMPT_ENTER_TOKEN�inputr�)rI�choicer�rTrTrU�_prompt_for_attach�s
�

r�)rKr�cCs4t|�}tjtj�|�j|d�t|��d�t	dd�S)z�Format the list of unfixed packages into an message.

    :returns: A string containing the message output for the unfixed
              packages.
    rW)rlrYrZr�)
r^rcrdrZSECURITY_PKG_STILL_AFFECTEDr]r_r`rar;)rKZnum_pkgs_unfixedrTrTrU�_format_unfixed_packages_msg�s���r�)rIrGr�cCs4t|�j}|r0|tjjkr0|r,ttj�dSdSdS)zuCheck if the Ubuntu Pro subscription is expired.

    :returns: True if subscription is expired and not renewed.
    FT)r0Zcontract_statusr/ZEXPIRED�valuerbr�(SECURITY_DRY_RUN_UA_EXPIRED_SUBSCRIPTION)rIrGZcontract_expiry_statusrTrTrU�_check_subscription_is_expired�s
�
�
r�cCs�ddl}t�ttj�tjtjjt	d�ddgd�}|dkr~ttj
�td�}ttdd	gg��t
|jd
dd�|�t||�Sd
S)zdPrompt for attach a new subscription token to the user.

    :return: True if attach performed.
    rN)Zurl�rr�r�r�r��detachTZcli)Z
assume_yesr_F)�argparser�rbrZ%SECURITY_UPDATE_NOT_INSTALLED_EXPIREDr
r�ZSECURITY_FIX_RENEW_PROMPTr_rBZPROMPT_EXPIRED_ENTER_TOKENr�rCr5Z	Namespacer�)rIr�r�r�rTrTrU�_prompt_for_new_token�s
�

r�)rI�servicer�cCs�ttjj|d��tjtjj|d�ddgd�}|dkr�ttdd|gg��t||d�\}}|s�|dk	r�t	|t
�r�|jdk	r�t|jj�|Sd	S)
zMPrompt for enable a pro service.

    :return: True if enable performed.
    �r�r�r�r�r��enable�rI�nameNF)
rbrZSECURITY_SERVICE_DISABLEDr_r
r�ZSECURITY_FIX_ENABLE_PROMPTrCrr�r>�messagere)rIr�r�Zret�reasonrTrTrU�_prompt_for_enable�s$����
r�)r�rIrGr�cCs�t||d�}|r�|��\}}|tjkr*dS|��\}}|tjkr�|r`tdtj	j
|jd��dSt||j�rpdSttj
j
|jd��nttjj
|jd��dS)zQ
    Verify if the Ubuntu Pro subscription has the required service enabled.
    r�Tr�r�F)r<Zuser_facing_statusr?ZACTIVE�applicability_statusr=Z
APPLICABLErbrZ'SECURITY_DRY_RUN_UA_SERVICE_NOT_ENABLEDr_r�r�ZSECURITY_UA_SERVICE_NOT_ENABLEDZ SECURITY_UA_SERVICE_NOT_ENTITLED)r�rIrGZentZ
ent_statusr�r�rTrTrU�)_handle_subscription_for_required_service�s:

�������r�r�)rir�r�cCs�|tjkr>|r tjj||d�}ntjj|d�}tt�|��n�|tj	kr||r^tj
j||d�}ntjj|d�}tt�|��np|tjkr�|r�tj
j||d�}ntjj|d�}tt�|��n2|r�tj
j||d�}ntjj|d�}tt�|��dS)N)rr�)r)rrNrZ%SECURITY_ISSUE_RESOLVED_ISSUE_CONTEXTr_ZSECURITY_ISSUE_RESOLVEDrbr
Zhandle_unicode_charactersr�Z'SECURITY_ISSUE_UNAFFECTED_ISSUE_CONTEXTZSECURITY_ISSUE_UNAFFECTEDr�Z)SECURITY_ISSUE_NOT_RESOLVED_ISSUE_CONTEXTZSECURITY_ISSUE_NOT_RESOLVED)rir�r�rerTrTrUr�s>
�
�
��r��rjcCs2|tkrtjS|tkrtjS|tkr*tjS|SdSr�)rrZ'SECURITY_UBUNTU_STANDARD_UPDATES_POCKETrZSECURITY_UA_INFRA_POCKETrZSECURITY_UA_APPS_POCKETr�rTrTrUro?sro��fix_context�stepcCsh|j|jjd|jjd�d|_tjj|jj|jj	d�}t
d|�|j|jjg|d�d|_
tj|_dS)N�releasedrgF)�package�versionr�rqT)rp�dataZrelated_source_packagesrjrPrZFIX_CANNOT_INSTALL_PACKAGEr_Zbinary_packageZbinary_package_versionrbruZsource_packagerQrr�rO)r�r�Zwarn_msgrTrTrU�)_execute_package_cannot_be_installed_stepJs"���r�cCsR|j|jj|jjd�|jt|jj�7_|j|jjt|jj�d�tj	|_
dS)N)rhrirq)rpr��source_packagesrirJr^rurrr�rOr�rTrTrU�&_execute_security_issue_not_fixed_stepcs�
�r�cCs*t��rttj�ntdtjd�dS)Nr�)r
�we_are_currently_rootrbrZCLI_FIX_FAIL_UPDATING_ESM_CACHEZ(CLI_FIX_FAIL_UPDATING_ESM_CACHE_NON_ROOTr�rTrTrU�%_execute_fail_updating_esm_cache_stepssr�c
Csv|j|jjd|jjd�|jt|jj�7_|jjsR|jsFtt	j
�tj|_
dSt��s�|js�tt	j�tj|_
|j|jjt	jd�dSttdddgdddd	gt|jj�g��|jr�tj|_
dSz.t��tjd
ddd	g|jjddid
�Wn\tk
�rR}z<t|dt|��}t|�tj|_
|j|jj|d�WY�dSd}~XYnXtj|_
d|_|j�|jj�dS)Nr�rgrqr	�updatez&&�installz--only-upgradez-yzapt-getZDEBIAN_FRONTENDZnoninteractive)�cmdZoverride_env_varsreT)rpr�r�rjrJr^Zbinary_packagesrQrbr�SECURITY_UPDATE_INSTALLEDrrNrOr
r�rGZSECURITY_APT_NON_ROOTr�rurCrar	Zrun_apt_update_commandZrun_apt_command�	Exception�getattrryrPrMr�)r�r�r�rerTrTrU�_execute_apt_upgrade_step|sh�

�
�
����

��
�r�cCs�|jjdkrtnt}|j|jjd|d�d|_t|j�j	s�|j
rPtdtj
�q�t|j�s�tj|_|j|jjtjj|jjd�d�dSnXt|j|j
d�r�|j
r�ttj�n6t|j�s�tj|_|j|jjtjj|jjd�d�dStj|_dS)	N�	esm-infrar�rgFr�r�rq)rIrG)r�Zrequired_servicerrrpr�rPr0rIZis_attachedrGrbrZ SECURITY_DRY_RUN_UA_NOT_ATTACHEDr�rr�rOruZSECURITY_UA_SERVICE_REQUIREDr_r�r�r�Z$SECURITY_UA_SERVICE_WITH_EXPIRED_SUBrN�r�r�rjrTrTrU�_execute_attach_step�sL
���
���
��r�cCst|jjdkrtnt}|j|jjd|d�d|_t|jj|j|j	�sn|j
|jjtjj
|jjd�d�tj|_dStjS)Nr�r�rgFr�rq)r�r�rrrpr�rPr�rIrGrurZ%SECURITY_UA_SERVICE_NOT_ENABLED_SHORTr_rr�rOrNr�rTrTrU�_execute_enable_step�s0
������r�cCs&|jjtjjkr"ttj�tj	|_
dSr�)r�rir ZNOT_AFFECTEDr�rbrZSECURITY_NO_AFFECTED_PKGSrr�rOr�rTrTrU�_execute_noop_not_affected_step
s
r�cCs0t|jt�r,ttjj|j|jjd��d|_	dS)N)rr�T)
r�r�r*rbrZCVE_FIXED_BY_LIVEPATCHr_rFZ
patch_versionrRr�rTrTrU�%_execute_noop_fixed_by_livepatch_steps��r�cCsHt|jt�rD|j|jjd|jjd�ttj�|j	t
|jj�7_	dS)Nr�rg)r�r�r)rpr�rjrbrr�rJr^r�rTrTrU� _execute_noop_already_fixed_steps�
r�)r�rGrIr�cCs�|j|j�}t|j||jpg|d�}|��t|dd�d�D]�}t|t�rTt	||�t|t
�rht||�t|t�r|t
||�t|t�r�t||�|jtjkr��q0t|t�r�t||�|jtjkr��q0t|t�r�t||�|jtjkr��q0t|t��rt||�t|t��rt||�t|t�r<t||�q<t�|j�rfttt t!dd�|jD�����tj"|_|jtjk�r�t#j$|j%d��r�tj&|_t'j(j)dd	�}t|�t*j+t,j-dd	�|j.�s�t/|j|j�|j|jfS)
NrEcSs|jSr�)�order)�xrTrTrU�<lambda><�z"execute_fix_plan.<locals>.<lambda>)�keycSsg|]
}|j�qSrT)rs)r�r�rTrTrU�
<listcomp>`s�z$execute_fix_plan.<locals>.<listcomp>)rMr�r�)0Zplan�warningsrDrFZaffected_packagesrfrar�r'r�r(r�r&r�rr�rOrrNrr�rr�r!r�rr�rr�rbrKr��listrLr�rZ
should_rebootrMr�rr�r_r@�addrAZENABLE_REBOOT_REQUIREDrRr�)r�rGrIZ	full_planr�r�Z
reboot_msgrTrTrUr�,s���














�����
����r�Zfix)r�cKsJ|jrttj�d|j��kr0t|j|j|�}nt|j|j|j|�}|j	S)Nr|)
rGrbrZSECURITY_DRY_RUN_WARNINGr��lowerr�r�r�Z	exit_code)�argsrI�kwargsrirTrTrU�
action_fix~s
�r�Tr�)�helpz	--dry-run�
store_true)r��actionz--no-related)Z	arguments)r�r�rZ
help_categoryZpreserve_descriptionZargument_groups)N)r�)�rc�typingrrrrrrrZuaclientr	r
rrr
Zuaclient.actionsrrZ+uaclient.api.u.pro.attach.magic.initiate.v1rZ)uaclient.api.u.pro.attach.magic.revoke.v1rrZ'uaclient.api.u.pro.attach.magic.wait.v1rrZ'uaclient.api.u.pro.security.fix._commonrrrZ/uaclient.api.u.pro.security.fix._common.plan.v1rrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+Z+uaclient.api.u.pro.security.fix.cve.plan.v1r,r-r�Z+uaclient.api.u.pro.security.fix.usn.plan.v1r.r�Z(uaclient.api.u.pro.status.is_attached.v1r/r0Zuaclient.clir1Zuaclient.cli.commandsr2r3r4Zuaclient.cli.detachr5Zuaclient.cli.parserr6Zuaclient.clouds.identityr7r8r9Zuaclient.configr:Zuaclient.defaultsr;Zuaclient.entitlementsr<Z(uaclient.entitlements.entitlement_statusr=r>r?Zuaclient.filesr@Zuaclient.files.noticesrAZuaclient.messages.urlsrBZuaclient.statusrCrDr�r�ryrzr�r��intrnr�r�r�r�r�r�r�r�r�r�ror�r�r�r�r�r�r�r�r�r�Z assert_vulnerability_issue_validr�ZCLI_ROOT_FIXZCLI_FIX_DESCZSECURITYZ
CLI_FIX_ISSUEZCLI_FIX_DRY_RUNZCLI_FIX_NO_RELATEDZfix_commandrTrTrTrU�<module>s�$
X?�l���,��%���
�?�0�"�	���R

������