O fluxo de mudança de senha forçada, ativado quando a senha armazenada ainda é o padrão (`admin`), não verifica que a senha enviada pelo cliente realmente corresponde à senha atual. Qualquer valor não vazio em `pheditor_password` é suficiente para alcançar o formulário de mudança de senha, e enviar `pheditor_new_password` / `pheditor_confirm_password` no mesmo pedido é suficiente para definir uma nova senha arbitrária e obter uma sessão autenticada — sem provar nunca o conhecimento da senha atual. linha `pheditor.php` 163. ``` php if (PASSWORD == hash('sha 512 ', 'admin')) { // ainda padrão — forçar o prompt de mudança '`' Isto verifica se a constante **stored** `PASSWORD` ainda é o valor padrão. Ele não verifica se a **presentada** `pheditor_password` corresponde a ela. Como resultado, em qualquer instância que não altere a senha padrão, a verificação passa independentemente do que o cliente realmente envia, e o ramo subsequente de mudança de senha é alcançável sem autenticação.

# Qualquer valor não vazio funciona aqui — a senha nunca é verificada realmente curl -c /tmp/j.txt \ -d 'pheditor_password=qualquer coisa' \ -d 'pheditor_new_password=atacker 123 ' \ - d 'pheditor_confirma_password=atacker 123 ' \ "$TARGET" - L -s -o /dev/null # Sessão agora é autenticada como administrador, com a senha mudada para atacante 123 ``` Em qualquer instância em que a senha padrão ainda não tenha sido alterada, um atacante não autenticado pode definir uma nova senha de administrador arbitrária e obter uma sessão totalmente autenticada, sem conhecer a senha atual. Este é um bypass de autenticação completo, não apenas "credencias predefinidas em uso" — ele mantém mesmo se o operador acredita que a instância está protegida porque o formulário de login está presente.

Verifique a senha enviada contra a constante 'PASSWORD' armazenada *antes de* inserir o ramo de mudança de senha forçada, de modo que o fluxo seja alcançável apenas por alguém que realmente conhece a senha atual: ```php $soumission_hash = hash('sha 512 ', $_POST['pheditor_password']). se (PASSWORD) == hash('sha 512 ', 'admin') && $soumeed_hash === PASSWORD) { // proceda ao fluxo forçado de mudança de senha } senão { // trata como uma tentativa de login normal (incluindo limitação de taxa) } ```.

O relatório original apresentado juntamente com este achado também incluiu dois itens adicionais: - **Upload PHP sem restrições** — abordado como comportamento pretendido (Pheditor é um editor de arquivos PHP de administração única; criação/editação de arquivos PHP é o núcleo da sua função, e restrição de padrões apenas o caminho de upload não reduz o risco, uma vez que o mesmo resultado é alcançável através da ação `save`/`newfile`). Documentado explicitamente na seção do novo Modelo de Segurança do README. - **Contornação da lista de permissões terminais (`php -r...`)** — uma duplicação de um problema previamente reportado e já empaquetado (GHSA-g 3 hq- hphg- 8 fhh, consertado em v 2.0.7 ).

Este aviso foi especificamente aplicado ao bypass de autenticação, uma vez que é uma causa raiz distinta de ambos. As respostas completas aos três pontos estão nos comentários abaixo. Registro de aconselhamento: GHSA-f 25 v- x 6 Vr- 962 g. Não há nenhum identificador adicional listado.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 24 T 21: 54: 24.000 Z e lista a sua última modificação como 2026 - 07 - 24 T 21: 54: 24.000 Z. Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.

Software afetado e informações de versão: Pacote de pacotes de fadiga/fadiga — ECOSISTEM: introduzido 0, corrigido 2.0.8. Classificação e evidência: identificadores de fraqueza CWE- 1392. O registro contém 4 suporte de referências nestes tipos: WEB, PACKAGE.