• SSL_OP_IGNORE_UNEXPECTED_EOF a runtime?!

    From Marco Gaiarin@21:1/5 to All on Wed Sep 20 11:50:02 2023
    Ho un servizio interno, specie di sacro graal intoccabile, a cui un client
    (un programmino molto semplice con poche dipendenze e che ovviamente è sacro come il servizio...) si collega via SSL.

    Su una debian stretch funziona:

    root@vdctms1:~# openssl s_client -connect 10.7.0.15:10011
    CONNECTED(00000003)
    write:errno=0
    ---
    no peer certificate available
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 0 bytes and written 176 bytes
    Verification: OK
    ---
    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
    Protocol : TLSv1.2
    Cipher : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1695200417
    Timeout : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no


    Su una buster no:

    gaio@hermione:~$ openssl s_client -connect 10.7.0.15:10011
    CONNECTED(00000003)
    40D7F2BD1E7F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:../ssl/record/rec_layer_s3.c:308:
    ---
    [...]

    Inizialmente pensavo fosse colpa di SSLv3, ma come vedete sopra l'handshake funziona perfettamente in TLSv1.2 che è ancora abilitato in buster.


    Ravanando in rete ho capito che il problema è che il client dovrebbe
    impostare il flag all'oggetto (SSL_OP_IGNORE_UNEXPECTED_EOF):

    https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_options.html
    https://wiki.openssl.org/index.php/List_of_SSL_OP_Flags

    perchè nelle recenti versioni è stato aggiunto per sopperire a una vulnerabilità.


    Ho quindi provato ad aggiungere in /etc/ssl/openssl.cnf in fondo:

    Options = SSL_OP_IGNORE_UNEXPECTED_EOF

    ma non è cambiato nulla.

    Ho anche provato una cosa del tipo:

    CipherString = ALL
    Options = SSL_OP_IGNORE_UNEXPECTED_EOF
    Protocol = -ALL,TLSv1.2

    ma l'errore è sempre quello.


    Cosa sbaglio?! Grazie.

    --
    Non mi interessa sentirmi intelligente guardando in tv dei cretini,
    preferirei sentirmi un cretino di fronte a persone eccellenti.
    (Franco Battiato)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco Gaiarin@21:1/5 to All on Thu Sep 21 20:50:01 2023
    Mandi! Marco Gaiarin
    In chel di` si favelave...

    Cosa sbaglio?! Grazie.

    Mi sa che è un baco, si veda:

    https://github.com/openssl/openssl/issues/18574


    Ma ancora qualcosa non mi torna...

    --
    I'm old enough to remember when the Internet wasn't a group of
    five websites, each consisting of screenshots of text from
    the other four. (Tom Eastman)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Davide Prina@21:1/5 to All on Sun Sep 24 11:20:01 2023
    Marco Gaiarin ha scritto:

    Su una debian stretch funziona:

    root@vdctms1:~# openssl s_client -connect 10.7.0.15:10011
    CONNECTED(00000003)

    Su una buster no:

    gaio@hermione:~$ openssl s_client -connect 10.7.0.15:10011
    CONNECTED(00000003)
    40D7F2BD1E7F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:../ssl/record/rec_layer_s3.c:308:

    secondo me è dovuto a modifiche nelle librerie OpenSSL.
    Non hai indicato cosa c'è su 10.7.0.15, presuppongo che ci sa anche
    li una stretch o che il tuo server sia stato stato compilato con
    librerie OpenSSL vecchie.

    il primo risultato che ho trovato, anche se è su PHP, indica nella
    prima risposta questo problema: https://stackoverflow.com/questions/72627218/openssl-error-messages-error0a000126ssl-routinesunexpected-eof-while-readin

    nel tuo caso penso tu possa risolvere ricompilando il server con
    librerie recenti e mettendo su strech un client OpenSSL recente.

    Tieni presente che negli ultimi anni sono stati anche deprecati
    diversi algoritmi di cifratura e chiper e poi disabilitati e
    tolti. Il consiglio è passare le macchine a versioni più recenti,
    sia per aumentare la sicurezza che per evitare problematiche
    di questo tipo.

    Poi se gestisci tu sia client che server io metterei su una
    connessione mTLS e userei solo TLS 1.3. Poi naturalmente dipende
    da cosa devi "proteggere" con tale comunicazione.

    Ciao
    Davide

    --
    La mia privacy non è affar tuo
    https://noyb.eu/it
    - You do not have my permission to use this email to train an AI -
    If you use this to train your AI than you accept to distribute under AGPL license >= 3.0 all the model trained, all the source you have used to
    training your model and all the source of the program that use that model

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco Gaiarin@21:1/5 to All on Mon Sep 25 16:20:01 2023
    Mandi! Davide Prina
    In chel di` si favelave...

    secondo me è dovuto a modifiche nelle librerie OpenSSL.

    E fin li...


    Non hai indicato cosa c'è su 10.7.0.15, presuppongo che ci sa anche
    li una stretch o che il tuo server sia stato stato compilato con
    librerie OpenSSL vecchie.

    Non lo so. Potrei chiedere, ma a naso una fedora paleozoica, conoscendo il collega...


    nel tuo caso penso tu possa risolvere ricompilando il server con
    librerie recenti e mettendo su strech un client OpenSSL recente.

    GAC. ;-)


    Il problema è che a quanto capisco openssl è customizzabile sul file di configurazione, e permette di impostare tutta una serie di flag. Ma
    nonostante io (penso di) averlo fatto correttamente, sembra bellamente ignorarlo.
    E da strace sembra leggere il file corretto...

    Poi è ovvio che se hanno tolto algoritmi non ci posso fare nulla, ma se come sospetto li hanno solo disattivati, con la configurazione dovrei essere in grado di riattivarli...


    Mah...

    --
    Mio figlio Christian diceva che la morte doveva essere qualcosa di
    bello, visto che nessuno ritornava. (Yolande Mukagasana)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)