Skip to content

Alibaba Cloud: hostname metadata reveals instance ID used as initial password #990

Description

@jorikfon

Description

English Description

Bug: On Alibaba Cloud instances, the hostname returned by the metadata service is essentially the instance ID with minor formatting (iZ...Z instead of i-...). Since MikoPBX uses the instance ID as the initial web admin password (by design — to prevent bots from compromising the system with default admin/admin credentials), displaying the hostname on the login page effectively reveals the password.

Context

MikoPBX intentionally uses the cloud instance ID as the initial web admin password instead of a default admin/admin. This is a deliberate design choice — bots and scanners were compromising freshly deployed systems before users could log in. The instance ID provides a unique per-instance credential that only the owner should know.

The problem is specific to Alibaba Cloud: its metadata service returns the instance ID as the hostname with trivial formatting differences (iZ8ps5b2pvynwvr61wyhdsZ vs i-8ps5b2pvynwvr61wyhds). On other cloud providers (AWS, GCE, Azure, etc.), the hostname is typically a user-assigned name unrelated to the instance ID.

Current Behavior

In src/Core/System/CloudProvisioning/AlibabaCloud.php:

$hostname = $metadata['hostname'] ?? '';   // Returns: iZ8ps5b2pvynwvr61wyhdsZ
$instanceId = $metadata['instance-id'];    // Returns: i-8ps5b2pvynwvr61wyhds

$config = new ProvisioningConfig(
    hostname: $hostname,        // Displayed on login page as PBX name
    webPassword: $instanceId    // Used as initial password
);

The login page shows:

  • PBX name: iZ8ps5b2pvynwvr61wyhdsZ (= instance ID with Z wrapper)
  • Hint: "Default password equals the unique identifier of the virtual machine in the cloud"

Password is trivially derived: replace first Z → -, remove trailing Z.

Expected Behavior

The hostname displayed on the login page should not reveal the instance ID. When the Alibaba Cloud hostname matches the instance ID pattern (/^iZ.*Z$/), use a generic name like MikoPBX instead.


Русское описание

Баг: На инстансах Alibaba Cloud hostname, возвращаемый сервисом метаданных, фактически является ID инстанса с минимальным форматированием (iZ...Z вместо i-...). Поскольку MikoPBX использует ID инстанса как начальный пароль веб-админки (это сделано намеренно — чтобы боты не ломали систему с дефолтным admin/admin), отображение hostname на странице входа фактически раскрывает пароль.

Контекст

MikoPBX намеренно использует ID облачного инстанса как начальный пароль вместо дефолтного admin/admin. Это осознанное решение — раньше боты и сканеры компрометировали свежеустановленные системы быстрее, чем пользователь успевал войти. ID инстанса обеспечивает уникальный пароль, который должен знать только владелец.

Проблема специфична для Alibaba Cloud: его сервис метаданных возвращает ID инстанса в качестве hostname с тривиальными отличиями в форматировании (iZ8ps5b2pvynwvr61wyhdsZ vs i-8ps5b2pvynwvr61wyhds). На других облаках hostname обычно не связан с instance ID.

Текущее поведение

На странице авторизации отображается:

  • Имя АТС: iZ8ps5b2pvynwvr61wyhdsZ (= instance ID с обёрткой Z)
  • Подсказка: "Default password equals the unique identifier of the virtual machine in the cloud"

Пароль тривиально получается из отображаемого имени: заменить первую Z на -, убрать последнюю Z.

Ожидаемое поведение

Hostname на странице входа не должен раскрывать instance ID. Если hostname из Alibaba Cloud совпадает с паттерном instance ID (/^iZ.*Z$/), использовать общее имя, например MikoPBX.

Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions