Do Not Preset authorized_keys for the SSH Service
🗓️ 07 May 2025 00:00:00Reported by Copyright (C) 2025 Greenbone AGType
openvas🔗 plugins.openvas.org👁 5 Views
# SPDX-FileCopyrightText: 2025 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only
# ------------------------------------------------------------------
# METADATA
# ------------------------------------------------------------------
if(description)
{
script_oid("1.3.6.1.4.1.25623.1.0.130308");
script_version("2026-01-14T05:47:41+0000");
script_tag(name:"last_modification", value:"2026-01-14 05:47:41 +0000 (Wed, 14 Jan 2026)");
script_tag(name:"creation_date", value:"2025-05-07 11:44:19 +0000 (Wed, 07 May 2025)");
script_tag(name:"cvss_base", value:"0.0");
script_tag(name:"cvss_base_vector", value:"AV:L/AC:H/Au:S/C:N/I:N/A:N");
script_tag(name:"qod", value:"97");
script_name("Do Not Preset authorized_keys for the SSH Service");
script_category(ACT_GATHER_INFO);
script_copyright("Copyright (C) 2025 Greenbone AG");
script_family("Policy");
script_dependencies("compliance_tests.nasl", "compliance_os_check.nasl");
script_mandatory_keys("Compliance/Launch", "policy/ssh/login/euleros_openeuler_hce");
script_add_preference(name:"enableScript", type:"entry", value:"yes;no", id:1);
script_xref(name:"Policy", value:"EulerOS Baseline: openEuler Security Configuration Baseline (v1.0.0): 3. Running and Services: 3.3 SSH: 3.3.18 Do Not Preset authorized_keys for the SSH Service (Requirement)");
script_xref(name:"Policy", value:"HCE Linux (Huawei Cloud EulerOS): openEuler Security Configuration Baseline (v1.0.0): 3. Running and Services: 3.3 SSH: 3.3.18 Do Not Preset authorized_keys for the SSH Service (Requirement)");
script_xref(name:"Policy", value:"openEuler Baseline: openEuler Security Configuration Baseline (v1.0.0): 3. Running and Services: 3.3 SSH: 3.3.18 Do Not Preset authorized_keys for the SSH Service (Requirement)");
script_tag(name:"summary", value:"authorized_keys specifies the public key of the remote host.
You can store the public key in the $HOME/.ssh/authorized_keys file in the home directory for
public key authentication. Then you can directly log in to the system. If authorized_keys is preset
in the system and public and private key authentication is enabled on the server, attackers can
evade the authentication and directly log in to the specified system. Therefore, authorized_keys
cannot be preset in the system.
By default, authorized_keys is not preset in openEuler. Note that this rule applies only to the
initial system presetting. It does not apply to scenarios where public key authentication must be
used based on service requirements during system running.");
exit(0);
}
include("ssh_func.inc");
include("host_details.inc");
include("policy_reporting_module.inc");
enablescript = script_get_preference("enableScript");
if (enablescript == "no")
exit(0);
title = "Do Not Preset authorized_keys for the SSH Service";
solution = "Delete the detected authorized_keys file preset in the system, for example,
/root/.ssh/authorized_keys.
# rm /root/.ssh/authorized_keys";
check_type = "SSH_Cmd";
action = 'Run the command in the terminal:
# find /home/ /root/ -name authorized_keys';
expected_value = 'The output should be empty';
# ------------------------------------------------------------------
# CONNECTION CHECK
# ------------------------------------------------------------------
if(!get_kb_item("login/SSH/success") || !sock = ssh_login_or_reuse_connection()){
report_ssh_error(title: title,
solution: solution,
action: action,
expected_value: expected_value,
check_type: check_type);
exit(0);
}
# ------------------------------------------------------------------
# CHECK : Check sshd_config file
# ------------------------------------------------------------------
step_cmd = 'find /home/ /root/ -name authorized_keys 2>/dev/null';
actual_value = ssh_cmd(socket:sock, cmd:step_cmd, return_errors:TRUE, return_linux_errors_only:TRUE);
if(eregmatch(string: actual_value, pattern:"(No such file or directory|Permission denied|Command not found|Segmentation fault|service not found|is not running|syntax error near unexpected token|syntax error: unexpected end of file)", icase: TRUE)){
compliant = "incomplete";
comment = "Something went wrong during the audit check. Please try again.";
}else if(!actual_value){
compliant = "yes";
comment = "Check passed";
}else{
compliant = "no";
comment = "Check failed";
}
# ------------------------------------------------------------------
# REPORT
# ------------------------------------------------------------------
target = get_kb_item("policy/ssh/login/os-release");
comment = "Target: " + target + "\n" + comment;
report_audit(action: action,
actual_value: actual_value,
expected_value: expected_value,
is_compliant: compliant,
solution: solution,
check_type: check_type,
title: title,
comment: comment);
exit(0);
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
14 Jan 2026 00:00Current
7.2High risk
Vulners AI Score7.2