Google hat die Version 147 des Webbrowser Chrome veröffentlicht. Gleichzeitig ist eine stabile Version des freien Projekts Chromium verfügbar, das die Grundlage für Chrome bildet. Der Browser Chrome unterscheidet sich von Chromium durch die Verwendung von Google-Logos, die Bereitstellung eines System zur Benachrichtigung im Falle eines Absturzes, Modulen zum Abspielen von kopiergeschütztem Video (DRM), ein automatisches Update-System, eine permanente Sandbox-Isolierung, die Bereitstellung von Schlüsseln zu den Google APIs und die Übertragung von RLZ-Parametern bei Suchanfragen. Für diejenigen, die mehr Zeit für Updates benötigen, wird zusätzlich eine Extended Stable-Version unterstützt, die um 8 Wochen verlängert wird. Die nächste Version Chrome 148 ist für den 5. Mai geplant.
Wichtige Änderungen in Chrome 147 (1, 2, 3, 4):
- Ein vertikaler Tab-Anzeigemodus wurde hinzugefügt, der die obere horizontalen Tab-Leiste durch eine seitliche Leiste mit vertikalen Tabs ersetzt. Vertikale Tabs können im entfalteten Modus (Symbol + Teil der Beschreibung) und im eingeklappten Modus (nur Symbole) angezeigt werden. Wenn der Cursor über einen seitlichen Tab bewegt wird, wird eine Vorschau mit dem Inhalt angezeigt. Die Verwaltung von Tab-Gruppen wurde vereinfacht. Im Kontextmenü, das beim Rechtsklick auf die Tab-Leiste erscheint, wurde die Option „Tabs vertikal anzeigen“ hinzugefügt. Wenn die Option nicht standardmäßig angezeigt wird, kann sie über die Einstellung „chrome://flags/#vertical-tabs“ aktiviert werden.
- Der überarbeitete Lesemodus zeigt nur den relevanten Text der Seite an, während alle begleitenden Steuerelemente, Banner, Menüs, Navigationsleisten und andere nicht mit dem Inhalt verbundene Seitenbereiche ausgeblendet werden. In der neuen Version wird das relevante Inhalt in dem gesamten sichtbaren Bereich angezeigt, ähnlich wie bei Firefox, und nicht mehr wie zuvor in einem schmalen Seitenfenster neben der ursprünglichen Seite. Wenn der neue Modus nicht standardmäßig aktiviert ist, kann er über die Einstellung „chrome://flags/#read-anything-immersive-reading-mode“ aktiviert werden.
- Im Menü „Hilfe“ wurde eine Schaltfläche hinzugefügt, um eine Beschwerde zur Aufnahme in die Liste der blockierten Webseiten zu senden, die für Betrug oder Phishing erstellt wurden. Die Schaltfläche wird im aktiviertem „Sicheren Browsen“-Modus angezeigt.
- Die Schutzmaßnahmen gegen Zugriffe auf das lokale System beim Interagieren mit öffentlichen Webseiten wurden erweitert. Zugriffe von Webseiten auf IP-Adressen Der Zugriff auf interne Netzwerke (Intranet oder interne Adressen) oder den Loopback-Interface (127.0.0.0/8) erfordert eine Bestätigung vom Benutzer. Der Schutz gilt jetzt nicht nur für Versuche, Ressourcen über HTTP/HTTPS zu laden, fetch()-Anfragen und iframe-Einfügungen, sondern auch für Verbindungen über WebSockets und WebTransport sowie für fetch-Anfragen, die über die Methode WindowClient.navigate() initiiert werden. Der Zugriff auf interne Ressourcen wird von Angreifern genutzt, um eine indirekte Identifizierung durchzuführen und CSRF-Angriffe auf Router, Access Points, Drucker, Unternehmens-Weboberflächen und andere Geräte und Dienste, die Anfragen nur aus dem lokalen Netzwerk akzeptieren, zu realisieren.
- Die Funktionalität zur Analyse von XML wurde von libxml2 auf eine neue Bibliothek umgestellt, die in Rust geschrieben wurde und auf Sicherheitsaspekte abzielt. Diese Änderung betrifft nur XML; wie zuvor angekündigt, wird die Unterstützung für XSLT bald eingestellt.
- Die Möglichkeit, die Methode startViewTransition() anzuwenden, wurde nun nicht nur für die gesamte Seite, sondern auch für einzelne HTML-Elemente umgesetzt.
- Die CSS-Funktion contrast-color() wurde hinzugefügt, die die entgegengesetzte Variante für die angegebene Farbe zurückgibt (für Weiß wird Schwarz und für Schwarz wird Weiß zurückgegeben). Diese Funktion kann verwendet werden, um die Hintergrundfarbe für eine bestimmte Textfarbe und umgekehrt auszuwählen.
- Die CSS-Eigenschaft «border-shape» wurde hinzugefügt, die es ermöglicht, nicht-rechteckige Umrandungen für Elemente zu erstellen, beispielsweise runde oder polygonale Rahmen. Die CSS-Eigenschaft «border-shape» akzeptiert die gleichen Formen wie die Eigenschaft «clip-path», definiert jedoch im Gegensatz zu letzterer die Kontur, decodiert sie und schneidet den Inhalt außerhalb der Kontur ab.
- Das Interface CSSPseudoElement wurde hinzugefügt, das die Arbeit mit CSS-Pseudoelementen aus JavaScript ermöglicht.
- Im Link-Element wurde die Möglichkeit implementiert, das Attribut «rel=modulepreload» anzuwenden, um nicht nur Skripte, sondern auch CSS-Stilmodule () und JSON-Daten () vorab zu laden.
- Das Verhalten bei der Berechnung der Breite von Rahmen und Konturen in den CSS-Eigenschaften border-width, outline-width und column-rule-width wurde an Firefox und WebKit-Browser angeglichen. Bisher wurde die Breite in den genannten Eigenschaften unabhängig von den gesetzten Werten auf null gesetzt, wenn die Eigenschaften border-style, outline-style oder column-rule-style auf 'none' oder 'hidden' gesetzt waren. Jetzt setzen die Werte für border-width, outline-width und column-rule-width immer die vom Entwickler festgelegten Werte, unabhängig vom Inhalt der Eigenschaften '*-style'.
- Eine Methode Math.sumPrecise() wurde hinzugefügt, um die Summe von Elementen in Arrays und anderen aufzählbaren Objekten mit höherer Genauigkeit als bei der üblichen Summierung in Schleifen zu berechnen (Verluste an Präzision bei der zwischenzeitlichen Speicherung der Ergebnisse werden ausgeschlossen).
- Das Attribut Request.isReloadNavigation wurde hinzugefügt, um festzustellen, ob die Seite neu geladen wurde, zum Beispiel nach einem Klick auf die Schaltfläche 'Aktualisieren' oder dem Aufruf der Methoden location.reload() und history.go(0).
- Um die Genauigkeit der indirekten Identifizierung zu verringern, wurde die Logik zur Rundung der über die API Device Memory zurückgegebenen Speichermenge geändert, die Informationen über den Arbeitsspeicher bereitstellt. Diese Informationen können nützlich sein, um leichte Varianten von Webanwendungen zu erstellen, die für Geräte mit wenig RAM geladen werden, oder um erweiterte Funktionen bei vorhandenem hohem Speicher zu aktivieren. In den Builds für die Android-Plattform wird die Speichermenge jetzt auf 1, 2, 4 und 8 gerundet, während für andere Plattformen auf 2, 4, 8, 16 und 32 gerundet wird.
- Für isolierte Webanwendungen (IWA – Isolated Web Apps) wurde die API Web Printing implementiert, die Methoden zur Erkennung von Druckern, zum Senden von Dokumenten zum Drucken und zur Verwaltung der Druck Warteschlange bereitstellt. Die in der API verwendeten Attributnamen und Semantiken entsprechen dem Protokoll IPP (Internet Printing Protocol).
- Im Modus 'Origin Trials' wurde die API WebNN implementiert, die die von der Betriebssystem bereitgestellten Dienste für maschinelles Lernen und die damit verbundenen Hardwarefähigkeiten nutzen kann.
- Verbesserungen wurden an den Werkzeugen für Webentwickler vorgenommen. Der integrierte KI-Assistent bietet jetzt eine automatische Kontextwahl. Das „Device Mode“-Panel, das für das Testen der Website auf verschiedenen Mobilgeräten verwendet wird, wurde modernisiert. Im Network-Panel erfolgt jetzt die automatische Dekodierung von komprimierten Inhalten in Anfragen mit dem Header Content-Encoding: gzip oder deflate. Es besteht die Möglichkeit, reguläre Ausdrücke zur Filterung von CSS-Stilen zu verwenden.
Neben neuen Funktionen und Fehlerbehebungen wurden in der neuen Version 60 Sicherheitsanfälligkeiten behoben. Viele dieser Schwachstellen wurden durch automatisierte Tests mit den Werkzeugen AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer und AFL aufgedeckt. Zwei Probleme (Pufferüberlauf und Ganzzahlüberlauf in WebML) wurden als kritisch eingestuft, was bedeutet, dass die Sicherheitsanfälligkeiten es ermöglichen, alle Schutzebenen des Browsers zu umgehen und Code außerhalb der Sandbox-Umgebung im System auszuführen. Im Rahmen des Belohnungsprogramms für die Auffindung von Sicherheitsanfälligkeiten hat Google für die aktuelle Version 60 Preise ausgeschrieben und insgesamt 118.000 US-Dollar ausgezahlt (zwei Preise je 43.000 $, zwei Preise je 11.000 $ sowie je einen Preis in Höhe von 4.000 $, 3.000 $, 2.000 $ und 1.000 $. Die Höhe von 52 Belohnungen ist bisher nicht festgelegt.
Quelle: opennet.ru
