php / php/php-src

check_cert() and php_openssl_store_errors do not pick up validation errors

Aperta
#8,372 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Extension: openssl Feature
Lingua principale
C
Stelle
40.4k
Fork
8.2k
Merge medio
2g 13h
PR unite (30g)
96

Descrizione

Description

The following code:

<?php

var_dump(openssl_x509_checkpurpose(file_get_contents('a.pem'), X509_PURPOSE_SSL_SERVER));
while ($msg = openssl_error_string())
    echo $msg . "<br />\n";"

where a.pem is

wget https://raw.githubusercontent.com/fuzyll/defcon-vm/master/extras/hfd/server.pem -O a.pem

(or any other single certificate file that won't validate; without intermediates etc)

Resulted in this output:

$ php x.php
bool(false)

But I expected this output instead:

$ php x.php
bool(false)
error: certificate chain too long (depth 0)

(or similar error message).

Why this doesn't work currently? Because X509_verify_cert() in check_cert() validation errors need to be picked up by

error = X509_STORE_CTX_get_error(csc)
X509_verify_cert_error_string(error)
X509_STORE_CTX_get_error_depth(csc)

which is not done in php ext/openssl internals.

PHP Version

PHP 8.1.4

Operating System

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dagli internals di ext/openssl intorno a check_cert() e php_openssl_store_errors(), quindi segui il percorso dell’errore di X509_verify_cert() descritto nell’issue. Esegui la riproduzione PHP fornita con a.pem; il lavoro è completato quando gli errori di validazione vengono esposti tramite openssl_error_string() insieme al risultato false.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
c, php
Ambito
security
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.