Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2022-0778 | Kitploit
Tools/GitHubGitHub/jeongjunsoo/cve-2022-0778
SchwachstellenanalyseExploitationKryptographieLernen & BildungLabs & Praxis
GitHubjeongjunsoo/cve-2022-0778

CVE-2022-0778

Repository anzeigen
1vor 2 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2022-0778

Mitwirkende

  • 정준수(@jeongjunsoo)

Zusammenfassung

  • Die Schwachstelle CVE-2022-0778 betrifft die Funktion BN_mod_sqrt(), mit der in OpenSSL die Quadratwurzel einer Primzahl berechnet wird.

  • Wenn diese Funktion ein böswillig manipuliertes Zertifikat verarbeitet, das nicht auf einer Primzahl basiert, können ungepatchte Server einem DoS-Angriff ausgesetzt sein.


Ziel

  • OpenSSL 1.0.2
  • OpenSSL 1.1.1
  • OpenSSL 3.0

Vor dem Patch

root@kitploit:~
i = 1;
if (!BN_mod_sqr(t, b, p, ctx))
    goto end;
while (!BN_is_one(t)) {
    i++;
    if (i == e) {
        ERR_raise(ERR_LIB_BN, BN_R_NOT_A_SQUARE);
        goto end;
    }
    if (!BN_mod_mul(t, t, t, p, ctx))
        goto end;
}

  • Gemäß diesem Algorithmus sollte die Schleife enden, sobald der Wert i den Wert e erreicht.
  • Wenn jedoch durch bestimmte Eingaben sowohl i als auch e den Wert 1 annehmen, endet die Schleife nicht und es entsteht eine Endlosschleife.
  • Dies führt zu einem Denial-of-Service.

Nach dem Patch

root@kitploit:~
for (i = 1; i < e; i++) {
    if (i == 1) {
        if (!BN_mod_sqr(t, b, p, ctx))
            goto end;
    } else {
        if (!BN_mod_mul(t, t, t, p, ctx))
            goto end;
    }
    if (BN_is_one(t))
        break;
}
/* If not found, a is not a square or p is not prime. */
if (i >= e) {
    ERR_raise(ERR_LIB_BN, BN_R_NOT_A_SQUARE);
    goto end;
}

  • Die vorhandene while-Schleife wurde in eine for-Schleife geändert.
  • Dadurch wurde der Patch so umgesetzt, dass die Schleife automatisch endet, sobald i den Wert e erreicht.
  • Mit diesem Patch wurde das Risiko einer Endlosschleife beseitigt.

Umgebungseinrichtung und Ausführung

  • Ubuntu-Umgebung einrichten

  • docker compose up -d – Testumgebung ausführen

  • docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345

  • docker compose exec curl top – Prozessstatus prüfen

  • docker compose exec curl bash – bash ausführen

  • curl -k https://172.17.0.1:12345 – HTTPS-Anfrage an Port 12345 senden


Ausführung

  • Bereiten Sie für die Übung drei Terminalfenster (A, B, C) vor.

  • Führen Sie im Terminal A den Befehl docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345 aus, um das Docker-Image zu starten.

  • Führen Sie als Nächstes im Terminal B den Befehl docker compose exec curl top aus, um den Status der derzeit laufenden Prozesse zu prüfen.

  • Geben Sie schließlich im Terminal C docker compose exec curl bash ein und senden Sie anschließend mit curl -k https://172.17.0.1:12345 eine HTTPS-Anfrage an Port 12345.

Ergebnis

  • Wie das Ergebnis des im Terminal B ausgeführten top-Befehls zeigt, beansprucht der curl-Prozess fast 100 % der CPU-Ressourcen. Dies wird durch die Endlosschleife verursacht.

Fazit

  • Diese Schwachstelle ist auf das Fehlen einer Primzahlprüfung zurückzuführen.
  • Um das Problem der Endlosschleife zu verhindern, wurde der Patch durch die Umwandlung der while-Schleife in eine for-Schleife umgesetzt.

Referenzen

  • https://github.com/drago-96/CVE-2022-0778

  • https://hackyboiz.github.io/2022/03/19/syru/cve-2022-0778/

  • https://github.com/yywing/cve-2022-0778/


Tool herunterladen