După o vulnerabilitate recentă SSH, Systemd reduce dependențele


Recentul backdoor sshd/xz (CVE-2024-3094) dezvăluie riscuri în libsystemd-ul din systemd, declanșând o dezbatere despre reducerea dependențelor.

În lumina evenimentelor recente, a apărut o dezbatere semnificativă despre vulnerabilitățile în care systemd este implicat indirect, în special în timpul incidentului cu backdoor sshd/xz (CVE-2024-3094), care a evidențiat riscurile potențiale de securitate asociate cu dependențele lui libsystemd, o bibliotecă crucială pentru integrarea serviciilor cu systemd.

Esenta problemei constă în observația că libsystemd, fiind legat de toate serviciile systemd și de orice servicii terțe care doresc să comunice cu systemd, introduce dependențe suplimentare care pot reprezenta surse de vulnerabilități.

Soluția propusă pentru această problemă de vulnerabilitate este o reducere substanțială a dependențelor libsystemd astfel încât să includă doar libc, biblioteca standard C, minimizând astfel suprafața de atac pentru posibile amenințări de securitate. Implementările actuale includ mai multe alte biblioteci, care s-ar putea să nu fie necesare pentru implementarea funcționalităților de bază ale libsystemd.

Ca răspuns la aceste preocupări, a fost făcută o cerere de funcționalitate pentru ca systemd să minimizeze dependențele libsystemd doar la libc. Rațiunea din spatele acestei cereri este de a reduce libsystemd la funcționalitățile sale de bază, reducând astfel riscul vulnerabilităților care ar putea compromite securitatea sistemului.

Totuși, această abordare poate implica reorganizarea libsystemd în mai multe biblioteci, fiecare adresând API-uri specifice, și asigurarea că doar dependențele necesare sunt incluse acolo unde sunt cu adevărat necesare.

Lennart Poettering, o figură importantă în spatele systemd, a răspuns preocupărilor subliniind schimbările recente care atenuează unele dintre aceste îngrijorări legate de securitate. Potrivit lui, libsystemd nu mai impune biblioteci de compresie ca dependențe stricte în cea mai recentă versiune principală de pe git.

În plus, sunt în curs de desfășurare planuri pentru a elimina libgcrypt ca dependență obligatorie, simplificând și mai mult libsystemd și îmbunătățind securitatea sistemului. De asemenea, s-a menționat că sshd a implementat funcția sd_notify() în mod independent, o mișcare pe care Poettering o recomandă pentru proiecte de acest tip.

În cele din urmă, discuția a atins și posibilitatea de a expune informațiile despre încărcarea dinamică (dlopen) într-un mod care ar putea fi citit din metadatele ELF, oferind o modalitate mai transparentă de a înțelege și gestiona dependențele.

Această propunere sugerează o abordare colaborativă, încurajând contribuțiile și sprijinul din partea diferiților factori interesați din ecosistemul Linux, inclusiv întreținătorii de pachete și constructorii de sisteme.

Detaliile întregii discuții și propuneri sunt disponibile pentru urmărire în depozitul GitHub al proiectului.