Diese Woche werden wir uns mit zwei hochgefährlichen Schwachstellen beschäftigen, eine in Rubygems und eine andere in Rsyslogs. Außerdem besprechen wir, wie wichtig es ist, sichere Codierungspraktiken zu definieren.
Unbefugte Edelsteinübernahme in Rubygems
Rubygems ist eine Paketregistrierung, die dazu dient, Software für das Ökosystem der Sprache Ruby bereitzustellen. Aufgrund eines Fehlers in der yank-Aktion war es für jeden RubyGems.org-Benutzer möglich, bestimmte Gems zu entfernen und zu ersetzen, auch wenn er dazu nicht berechtigt war.
Um verletzlich zu sein, braucht man ein Juwel:
- Ein oder mehrere Bindestriche in seinem Namen
- Ein vom Angreifer kontrollierter Edelstein mit dem Namen vor dem Bindestrich
- Erstellung innerhalb von 30 Tagen ODER keine Aktualisierung seit über 100 Tagen
Milderung
Laut dem Bundler-Team garantiert die Verwendung von Bundler im Modus -frozen oder -deployment bei der kontinuierlichen Integration und während des Deployments, dass Ihre Anwendung nicht unbemerkt zu Versionen wechselt, die mit diesem Exploit erstellt wurden.
Um Ihre Anwendungshistorie auf mögliche frühere Angriffe zu überprüfen, sehen Sie sich Ihre Gemfile.lock an und suchen Sie nach Gems, deren Plattform sich geändert hat, während sich die Versionsnummer nicht geändert hat. Zum Beispiel könnte ein Update von gemname-3.1.2 auf gemname-3.1.2-java auf einen möglichen Missbrauch dieser Schwachstelle hinweisen. RubyGems.org wurde gepatcht und ist nicht mehr anfällig für dieses Problem.
Möglicher Heap-basierter Pufferüberlauf in Rsyslogs
Rsyslog ist ein raketenschnelles System für die Protokollverarbeitung. Bei einigen Modulen für den TCP-Syslog-Empfang kommt es zu einem Überlauf des Heap-Puffers, wenn das " octet-counted framing" verwendet wird. Beim "octet-counted" Framing wird jeder Nachricht die tatsächliche Nachrichtenlänge vorangestellt, so dass ein Empfänger genau weiß, wo die Nachricht endet. Der Angreifer kann Heap-Werte beschädigen, was zu Problemen mit der Datenintegrität und Auswirkungen auf die Verfügbarkeit führt. Die Ausführung von Remotecode ist unwahrscheinlich, aber nicht unmöglich. Die Versionen 8.2204.0 und niedriger sind von dieser Sicherheitslücke betroffen.
Milderung
Octet-counted Framing ist nicht sehr verbreitet. In der Regel muss es beim Absender speziell aktiviert werden. Wenn die Benutzer es nicht benötigen, können sie es für die wichtigsten Module abschalten. Dadurch wird die Schwachstelle entschärft. Wie dies zu tun ist, hängt vom jeweiligen Modul ab. Hier finden Sie die betroffenen Module und Details zur Konfiguration je nach Modul. Der Patch ist in Version 8.2204.1 verfügbar .
Die Wichtigkeit der Definition von sicherem Code
Sichere Kodierung bedeutet, dass erfahrene Entwickler einen Code schreiben, der von Beginn des Softwareentwicklungszyklus (SDLC) an frei von Schwachstellen ist. Erst wenn diese Praxis definiert ist, kann die Entwicklergemeinschaft auf dieses Ziel hinarbeiten. Secure Code Warrior führte im Dezember 2021 in Zusammenarbeit mit Evans Data Corp. die Studie The state of developer-driven security survey, 2022 durch. Dabei wurden 1.200 Entwickler weltweit befragt, um die Fähigkeiten, Wahrnehmungen und Verhaltensweisen in Bezug auf sichere Coding-Praktiken sowie deren Auswirkungen und wahrgenommene Relevanz im SDLC zu verstehen.
Im Folgenden werden einige Punkte aus der Umfrage hervorgehoben:
- Von 1.200 aktiven Softwareentwicklern gaben nur 14 % an, dass sichere Programmierung für sie oberste Priorität hat.
- 37 % der befragten Entwickler gaben an, dass sie bekannte Schwachstellen in ihrem Code belassen, weil sie aufgrund knapper Fristen nicht die nötige Zeit haben, um sie zu beheben oder von Anfang an richtig zu programmieren.
- 36 % der Umfrageteilnehmer gaben außerdem an, dass sie Schwachstellen in ihrem Code beseitigen wollten, aber nicht über die nötigen Fähigkeiten oder Kenntnisse verfügten, um dies zu tun.
- Das Problem für Entwickler, sicheren Code zu schreiben, besteht in vielen Fällen darin, dass die Unternehmen, für die sie arbeiten, nicht erkannt haben, welche Best Practices für die Erstellung von sicherem Code erforderlich sind, und nicht genügend Ressourcen für die Schulung oder Befähigung ihrer Entwickler zur Erreichung dieser Ziele bereitgestellt haben.
Daher müssen Unternehmen nicht nur definieren, was sichere Codierungspraktiken sind, sondern auch längere Fristen vorsehen, die den Entwicklern genügend Zeit geben, ordnungsgemäß zu codieren, und praktische Schulungen anbieten, die ihnen helfen, Code-Schwachstellen effizient zu erkennen und zu beheben.
Ausführlichere Informationen zu der Umfrage finden Sie hier.
Kommentare