Vertiefung: Auffinden und Beheben hochgradig gefährlicher libcurl/curl-Schwachstellen
Vertiefung: Auffinden und Beheben hochgradig gefährlicher libcurl/curl-Schwachstellen
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6532538764183f7218a0f49f_Generic%20blog%20images%20-%20abstract%20geo%20(1).webp)
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6532538764183f7218a0f49f_Generic%20blog%20images%20-%20abstract%20geo%20(1).webp)
Erst vor kurzem wurden die Sicherheits- und Entwicklergemeinschaften durch eine Mitteilung des leitenden Entwicklers des curl-Projekts, Daniel Stenberg, darauf aufmerksam gemacht , dass eine neue Version von curl - die am 11. Oktober veröffentlicht wurde - zwei schwerwiegende Sicherheitslücken behebt, von denen er eine als "wahrscheinlich die schlimmste curl-Sicherheitslücke seit langem" bezeichnet.
In einem Postmortem in Stenbergs Blog wird darauf hingewiesen, dass die betroffenen Versionen der curl-Bibliothek für einen Heap-basierten Pufferüberlauf anfällig sind, der mit einem alten Problem im Zusammenhang mit dem seit 2002 verwendeten SOCKS5-Proxy-Protokoll steht.
Mit seiner Verwendung als Befehlszeilentool, die bis ins Jahr 1998 zurückreicht, wird curl weithin als Grundpfeiler des Internets angesehen. Mit einer so langen Geschichte und weitverbreiteten Nutzung ist es eine Abhängigkeit, die, wenn sie anfällig ist, anhaltende Auswirkungen auf die allgemeine Cybersicherheit haben könnte.
Dieser Vorfall weist Ähnlichkeiten mit dem verheerenden Log4Shell-Angriff in Log4j auf, einer weiteren verwundbaren Abhängigkeit, die fast zwei Jahre später immer noch ausgenutzt wird.
>>> Testen Sie jetzt Ihr Wissen mit unserer curl-Mission!
Die Sicherheitslücke: Pufferüberlauf
Die Schwachstelle ist unter CVE-2023-38545 aufgeführt und betrifft die Curl-Versionen 7.69.0 bis einschließlich 8.3.0. Bei dem primären Fehler handelt es sich um eine Heap-basierte Pufferüberlauf-Schwachstelle. Ersten Berichten zufolge könnte eine erfolgreiche Ausnutzung zu einem noch verheerenderen Angriff mit Remote-Code-Ausführung (RCE) führen. Dies ist zwar ein möglicher Arbeitsablauf für einen Bedrohungsakteur, aber eher ein seltener Anwendungsfall als eine Selbstverständlichkeit.
Die einzige Rettung, um einige der Risiken zu mindern, ist vielleicht, dass die bösartige Kommunikation über einen SOCKS5-Proxy laufen muss, was eine relativ seltene Anwendung ist.
Vergleichbar mit dem Curl-Exploit, werfen wir einen Blick auf diesen Buffer Overflow-Explainer:
Wenn curl angewiesen wird, einen SOCKS5-Proxy zu verwenden, wird der Hostname weitergegeben und vom Proxy aufgelöst. Wenn der Hostname jedoch die 255-Byte-Grenze überschreitet, löst curl den Hostnamen lokal auf (wie im folgenden Codeschnipsel zu sehen: Quelle).
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6532549b9043a95244d8ac8a_curlsnip1.webp)
Bei einem langsamen Handshake zwischen Client und Proxy ist es möglich, dass der lange Hostname anstelle der (kürzeren) aufgelösten Adresse in den Speicherpuffer kopiert wird. Der zugewiesene Speicherbereich lässt nur einen 255-Byte-Wert zu. Wenn er also einen Wert empfängt, der diese Grenze überschreitet, laufen die Daten über die Grenzen des Speicherpuffers hinaus.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/653254d90d2c29a6dc2f7834_curlsnip2.webp)
>>> Probieren Sie es selbst aus in dieser spielbaren Mission!
Pufferüberlauf ist ein mächtiger Angriffsvektor, der in vielen älteren Programmiersprachen vorkommt. In diesem speziellen Fall machte die Ausnutzung den Weg frei für einen ernsteren und schädlicheren Angriff in Form von RCE in einigen Kontexten, obwohl dieser Weg ungewöhnlich und unwahrscheinlich bleibt.
Wie können Sie das Risiko eines Pufferüberlaufs mindern?
In diesem Stadium besteht die höchste Priorität darin, die Patches auf alle anfälligen Instanzen anzuwenden, wobei darauf hinzuweisen ist, dass die Verwendung von curl so weit verbreitet ist, dass es nicht unbedingt offensichtlich ist oder angekündigt wird, dass Komponenten Ihres Systems die verwendete Abhängigkeit enthalten. In diesem Fall sind Überprüfungen und anschließende Patches erforderlich.
Im Allgemeinen können Pufferüberlauf-Fehler durch die Verwendung einer speichersicheren Sprache wie Rust entschärft werden, jedoch ist es bei einem ausufernden Projekt wie curl nicht praktikabel, es auf eine andere Sprache zu portieren oder es aus einer Laune heraus umzuschreiben. Wie Stenberg bemerkt, während er das Potenzial diskutiert, mehr Abhängigkeiten zu nutzen und zu unterstützen, die in speichersicheren Sprachen geschrieben sind - oder die Alternative, Teile von curl nach und nach zu ersetzen - "... die Entwicklung geschieht ... derzeit in einer fast eisigen Geschwindigkeit und zeigt mit schmerzlicher Klarheit die damit verbundenen Herausforderungen. curl wird für die absehbare Zukunft in C geschrieben bleiben." Es ist kein kleines Unterfangen, und die Auswirkungen auf die Sicherheit sind immens.
Sicherheitsfehler können und werden passieren, und es ist nicht immer möglich, sich darauf zu verlassen, dass Scanner und Tests jeden möglichen Angriffsvektor aufspüren. Daher ist unsere größte Waffe im Kampf gegen diese Bugs das Engagement für ein kontinuierliches Sicherheitsbewusstsein und den Aufbau von Fähigkeiten.
Möchten Sie mehr darüber erfahren, wie Sie sicheren Code schreiben und Risiken minimieren können?
Probieren Sie unsere Heap Overflow Herausforderung kostenlos.
Wenn Sie an weiteren kostenlosen Codierungsrichtlinien interessiert sind, besuchen Sie Sicherer Code Coach damit Sie immer auf dem neuesten Stand der besten Praktiken für die sichere Programmierung sind.
Ressourcen für den Einstieg
Vertrauensperson von Secure Code Warrior
Entdecken Sie den SCW Trust Agent, eine innovative Lösung, die die Sicherheit erhöht, indem sie die Kenntnisse und Fähigkeiten von Entwicklern in Bezug auf sicheren Code mit der von ihnen übertragenen Arbeit in Einklang bringt. Er bietet umfassende Transparenz und Kontrolle über das gesamte Code-Repository eines Unternehmens, indem er jeden Commit mit den sicheren Code-Profilen der Entwickler abgleicht. Mit SCW Trust Agent können Unternehmen ihre Sicherheitslage verbessern, die Entwicklungszyklen optimieren und die entwicklergesteuerte Sicherheit skalieren.
Trust Score von Secure Code Warrior
Entdecken Sie den SCW Trust Score, ein branchenweit einzigartiges Benchmarking zur Messung der Effektivität Ihres Sicherheitsprogramms. Vergleichen Sie sich mit Branchenkollegen, optimieren Sie Ihre Sicherheitslage und treffen Sie datengestützte Entscheidungen für eine verbesserte Software-Sicherheit.
Ressourcen für den Einstieg
Frauen in der Sicherheitsbranche sind auf dem Vormarsch: Wie die AWSN eine neue Generation von Superfrauen im Sicherheitsbereich hervorbringt
Secure-by-Design ist die neueste Initiative, die in aller Munde ist, und die australische Regierung, die mit der CISA auf den höchsten Ebenen der Global Governance zusammenarbeitet, fordert von den Anbietern einen höheren Standard für Softwarequalität und -sicherheit.
Frauen in der Sicherheitsbranche sind auf dem Vormarsch: Wie die AWSN eine neue Generation von Superfrauen im Sicherheitsbereich hervorbringt
Secure-by-Design ist die neueste Initiative, die in aller Munde ist, und die australische Regierung, die mit der CISA auf den höchsten Ebenen der Global Governance zusammenarbeitet, fordert von den Anbietern einen höheren Standard für Softwarequalität und -sicherheit.
SCW Trust Agent - Sichtbarkeit und Kontrolle zur Skalierung der entwicklergesteuerten Sicherheit
Der von Secure Code Warrior vorgestellte SCW Trust Agent bietet Sicherheitsverantwortlichen die Transparenz und Kontrolle, die sie für die Skalierung der entwicklergesteuerten Sicherheit in Unternehmen benötigen. Durch die Verbindung mit Code-Repositories wertet er Code-Commit-Metadaten aus, prüft Entwickler, verwendete Programmiersprachen und Zeitstempel für den Versand, um das Sicherheitswissen der Entwickler zu ermitteln.
Ist Ihr Sicherheitsprogramm bereit für den CISA-Strategieplan für Cybersicherheit?
Der Strategische Plan für Cybersicherheit sieht weitreichende Änderungen in der Art und Weise vor, wie die meisten Unternehmen an die Cybersicherheit herangehen, und Entwickler befinden sich in einer einzigartigen Position, um zur Erreichung dieser neuen Ziele beizutragen.
Vertiefung: Auffinden und Beheben hochgradig gefährlicher libcurl/curl-Schwachstellen
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6532538764183f7218a0f49f_Generic%20blog%20images%20-%20abstract%20geo%20(1).webp)
Erst vor kurzem wurden die Sicherheits- und Entwicklergemeinschaften durch eine Mitteilung des leitenden Entwicklers des curl-Projekts, Daniel Stenberg, darauf aufmerksam gemacht , dass eine neue Version von curl - die am 11. Oktober veröffentlicht wurde - zwei schwerwiegende Sicherheitslücken behebt, von denen er eine als "wahrscheinlich die schlimmste curl-Sicherheitslücke seit langem" bezeichnet.
In einem Postmortem in Stenbergs Blog wird darauf hingewiesen, dass die betroffenen Versionen der curl-Bibliothek für einen Heap-basierten Pufferüberlauf anfällig sind, der mit einem alten Problem im Zusammenhang mit dem seit 2002 verwendeten SOCKS5-Proxy-Protokoll steht.
Mit seiner Verwendung als Befehlszeilentool, die bis ins Jahr 1998 zurückreicht, wird curl weithin als Grundpfeiler des Internets angesehen. Mit einer so langen Geschichte und weitverbreiteten Nutzung ist es eine Abhängigkeit, die, wenn sie anfällig ist, anhaltende Auswirkungen auf die allgemeine Cybersicherheit haben könnte.
Dieser Vorfall weist Ähnlichkeiten mit dem verheerenden Log4Shell-Angriff in Log4j auf, einer weiteren verwundbaren Abhängigkeit, die fast zwei Jahre später immer noch ausgenutzt wird.
>>> Testen Sie jetzt Ihr Wissen mit unserer curl-Mission!
Die Sicherheitslücke: Pufferüberlauf
Die Schwachstelle ist unter CVE-2023-38545 aufgeführt und betrifft die Curl-Versionen 7.69.0 bis einschließlich 8.3.0. Bei dem primären Fehler handelt es sich um eine Heap-basierte Pufferüberlauf-Schwachstelle. Ersten Berichten zufolge könnte eine erfolgreiche Ausnutzung zu einem noch verheerenderen Angriff mit Remote-Code-Ausführung (RCE) führen. Dies ist zwar ein möglicher Arbeitsablauf für einen Bedrohungsakteur, aber eher ein seltener Anwendungsfall als eine Selbstverständlichkeit.
Die einzige Rettung, um einige der Risiken zu mindern, ist vielleicht, dass die bösartige Kommunikation über einen SOCKS5-Proxy laufen muss, was eine relativ seltene Anwendung ist.
Vergleichbar mit dem Curl-Exploit, werfen wir einen Blick auf diesen Buffer Overflow-Explainer:
Wenn curl angewiesen wird, einen SOCKS5-Proxy zu verwenden, wird der Hostname weitergegeben und vom Proxy aufgelöst. Wenn der Hostname jedoch die 255-Byte-Grenze überschreitet, löst curl den Hostnamen lokal auf (wie im folgenden Codeschnipsel zu sehen: Quelle).
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6532549b9043a95244d8ac8a_curlsnip1.webp)
Bei einem langsamen Handshake zwischen Client und Proxy ist es möglich, dass der lange Hostname anstelle der (kürzeren) aufgelösten Adresse in den Speicherpuffer kopiert wird. Der zugewiesene Speicherbereich lässt nur einen 255-Byte-Wert zu. Wenn er also einen Wert empfängt, der diese Grenze überschreitet, laufen die Daten über die Grenzen des Speicherpuffers hinaus.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/653254d90d2c29a6dc2f7834_curlsnip2.webp)
>>> Probieren Sie es selbst aus in dieser spielbaren Mission!
Pufferüberlauf ist ein mächtiger Angriffsvektor, der in vielen älteren Programmiersprachen vorkommt. In diesem speziellen Fall machte die Ausnutzung den Weg frei für einen ernsteren und schädlicheren Angriff in Form von RCE in einigen Kontexten, obwohl dieser Weg ungewöhnlich und unwahrscheinlich bleibt.
Wie können Sie das Risiko eines Pufferüberlaufs mindern?
In diesem Stadium besteht die höchste Priorität darin, die Patches auf alle anfälligen Instanzen anzuwenden, wobei darauf hinzuweisen ist, dass die Verwendung von curl so weit verbreitet ist, dass es nicht unbedingt offensichtlich ist oder angekündigt wird, dass Komponenten Ihres Systems die verwendete Abhängigkeit enthalten. In diesem Fall sind Überprüfungen und anschließende Patches erforderlich.
Im Allgemeinen können Pufferüberlauf-Fehler durch die Verwendung einer speichersicheren Sprache wie Rust entschärft werden, jedoch ist es bei einem ausufernden Projekt wie curl nicht praktikabel, es auf eine andere Sprache zu portieren oder es aus einer Laune heraus umzuschreiben. Wie Stenberg bemerkt, während er das Potenzial diskutiert, mehr Abhängigkeiten zu nutzen und zu unterstützen, die in speichersicheren Sprachen geschrieben sind - oder die Alternative, Teile von curl nach und nach zu ersetzen - "... die Entwicklung geschieht ... derzeit in einer fast eisigen Geschwindigkeit und zeigt mit schmerzlicher Klarheit die damit verbundenen Herausforderungen. curl wird für die absehbare Zukunft in C geschrieben bleiben." Es ist kein kleines Unterfangen, und die Auswirkungen auf die Sicherheit sind immens.
Sicherheitsfehler können und werden passieren, und es ist nicht immer möglich, sich darauf zu verlassen, dass Scanner und Tests jeden möglichen Angriffsvektor aufspüren. Daher ist unsere größte Waffe im Kampf gegen diese Bugs das Engagement für ein kontinuierliches Sicherheitsbewusstsein und den Aufbau von Fähigkeiten.
Möchten Sie mehr darüber erfahren, wie Sie sicheren Code schreiben und Risiken minimieren können?
Probieren Sie unsere Heap Overflow Herausforderung kostenlos.
Wenn Sie an weiteren kostenlosen Codierungsrichtlinien interessiert sind, besuchen Sie Sicherer Code Coach damit Sie immer auf dem neuesten Stand der besten Praktiken für die sichere Programmierung sind.
Ressourcen für den Einstieg
Frauen in der Sicherheitsbranche sind auf dem Vormarsch: Wie die AWSN eine neue Generation von Superfrauen im Sicherheitsbereich hervorbringt
Secure-by-Design ist die neueste Initiative, die in aller Munde ist, und die australische Regierung, die mit der CISA auf den höchsten Ebenen der Global Governance zusammenarbeitet, fordert von den Anbietern einen höheren Standard für Softwarequalität und -sicherheit.
SCW Trust Agent - Sichtbarkeit und Kontrolle zur Skalierung der entwicklergesteuerten Sicherheit
Der von Secure Code Warrior vorgestellte SCW Trust Agent bietet Sicherheitsverantwortlichen die Transparenz und Kontrolle, die sie für die Skalierung der entwicklergesteuerten Sicherheit in Unternehmen benötigen. Durch die Verbindung mit Code-Repositories wertet er Code-Commit-Metadaten aus, prüft Entwickler, verwendete Programmiersprachen und Zeitstempel für den Versand, um das Sicherheitswissen der Entwickler zu ermitteln.
Vertrauensperson von Secure Code Warrior
Entdecken Sie den SCW Trust Agent, eine innovative Lösung, die die Sicherheit erhöht, indem sie die Kenntnisse und Fähigkeiten von Entwicklern in Bezug auf sicheren Code mit der von ihnen übertragenen Arbeit in Einklang bringt. Er bietet umfassende Transparenz und Kontrolle über das gesamte Code-Repository eines Unternehmens, indem er jeden Commit mit den sicheren Code-Profilen der Entwickler abgleicht. Mit SCW Trust Agent können Unternehmen ihre Sicherheitslage verbessern, die Entwicklungszyklen optimieren und die entwicklergesteuerte Sicherheit skalieren.