Vercel Security
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In Vercel ist ein Team die vollständige Umgebung, die einem Kunden gehört, und ein Projekt ist eine Anwendung.
Für eine Sicherheitsüberprüfung von Vercel müssen Sie nach einem Benutzer mit Viewer-Rollenberechtigung oder mindestens Projekt-Viewer-Berechtigung über die Projekte fragen, die Sie überprüfen möchten (falls Sie nur die Projekte und nicht die Teamkonfiguration überprüfen müssen).
Zweck: Verwalten Sie grundlegende Projekteinstellungen wie Projektname, Framework und Build-Konfigurationen.
Übertragung
Fehlkonfiguration: Ermöglicht die Übertragung des Projekts zu einem anderen Team
Risiko: Ein Angreifer könnte das Projekt stehlen
Projekt löschen
Fehlkonfiguration: Ermöglicht das Löschen des Projekts
Risiko: Löschen des Projekts
Zweck: Verwalten Sie benutzerdefinierte Domains, DNS-Einstellungen und SSL-Konfigurationen.
DNS-Konfigurationsfehler
Fehlkonfiguration: Falsche DNS-Einträge (A, CNAME), die auf bösartige Server verweisen.
Risiko: Domain-Hijacking, Datenverkehrsüberwachung und Phishing-Angriffe.
SSL/TLS-Zertifikatsverwaltung
Fehlkonfiguration: Verwendung schwacher oder abgelaufener SSL/TLS-Zertifikate.
Risiko: Anfällig für Man-in-the-Middle (MITM)-Angriffe, die die Datenintegrität und Vertraulichkeit gefährden.
DNSSEC-Implementierung
Fehlkonfiguration: DNSSEC nicht aktiviert oder falsche DNSSEC-Einstellungen.
Risiko: Erhöhte Anfälligkeit für DNS-Spoofing und Cache Poisoning-Angriffe.
Umgebung pro Domain verwenden
Fehlkonfiguration: Ändern der in der Produktion verwendeten Umgebung durch die Domain.
Risiko: Potenzielle Geheimnisse oder Funktionen offenlegen, die in der Produktion nicht verfügbar sein sollten.
Zweck: Definieren Sie verschiedene Umgebungen (Entwicklung, Vorschau, Produktion) mit spezifischen Einstellungen und Variablen.
Umgebungsisolierung
Fehlkonfiguration: Teilen von Umgebungsvariablen zwischen Umgebungen.
Risiko: Leckage von Produktionsgeheimnissen in Entwicklungs- oder Vorschauumgebungen, was die Exposition erhöht.
Zugriff auf sensible Umgebungen
Fehlkonfiguration: Gewährung eines breiten Zugriffs auf Produktionsumgebungen.
Risiko: Unbefugte Änderungen oder Zugriff auf Live-Anwendungen, was zu potenziellen Ausfallzeiten oder Datenverletzungen führen kann.
Zweck: Verwalten Sie umgebungsspezifische Variablen und Geheimnisse, die von der Anwendung verwendet werden.
Sensible Variablen offenlegen
Fehlkonfiguration: Präfixierung sensibler Variablen mit NEXT_PUBLIC_
, wodurch sie auf der Client-Seite zugänglich werden.
Risiko: Offenlegung von API-Schlüsseln, Datenbankanmeldeinformationen oder anderen sensiblen Daten für die Öffentlichkeit, was zu Datenverletzungen führt.
Sensible deaktiviert
Fehlkonfiguration: Wenn deaktiviert (Standard) ist es möglich, die Werte der generierten Geheimnisse zu lesen.
Risiko: Erhöhte Wahrscheinlichkeit einer versehentlichen Offenlegung oder unbefugten Zugriffs auf sensible Informationen.
Geteilte Umgebungsvariablen
Fehlkonfiguration: Dies sind Umgebungsvariablen, die auf Teamebene festgelegt sind und ebenfalls sensible Informationen enthalten könnten.
Risiko: Erhöhte Wahrscheinlichkeit einer versehentlichen Offenlegung oder unbefugten Zugriffs auf sensible Informationen.
Zweck: Konfigurieren Sie Git-Repository-Integrationen, Branch-Schutz und Bereitstellungsauslöser.
Ignorierter Build-Schritt (TODO)
Fehlkonfiguration: Es scheint, dass diese Option es ermöglicht, ein Bash-Skript/Befehle zu konfigurieren, die ausgeführt werden, wenn ein neuer Commit in GitHub gepusht wird, was RCE ermöglichen könnte.
Risiko: TBD
Zweck: Verbinden Sie Drittanbieterdienste und -tools, um die Projektfunktionen zu verbessern.
Unsichere Drittanbieter-Integrationen
Fehlkonfiguration: Integration mit untrusted oder unsicheren Drittanbieterdiensten.
Risiko: Einführung von Schwachstellen, Datenlecks oder Hintertüren durch kompromittierte Integrationen.
Überberechtigte Integrationen
Fehlkonfiguration: Gewährung übermäßiger Berechtigungen an integrierte Dienste.
Risiko: Unbefugter Zugriff auf Projektressourcen, Datenmanipulation oder Dienstunterbrechungen.
Mangelnde Integrationsüberwachung
Fehlkonfiguration: Versäumnis, Drittanbieter-Integrationen zu überwachen und zu prüfen.
Risiko: Verzögerte Erkennung kompromittierter Integrationen, was die potenziellen Auswirkungen von Sicherheitsverletzungen erhöht.
Zweck: Sichern Sie Bereitstellungen durch verschiedene Schutzmechanismen und steuern Sie, wer auf Ihre Umgebungen zugreifen und bereitstellen kann.
Vercel-Authentifizierung
Fehlkonfiguration: Deaktivierung der Authentifizierung oder Nichteinhaltung der Überprüfung von Teammitgliedern.
Risiko: Unbefugte Benutzer können auf Bereitstellungen zugreifen, was zu Datenverletzungen oder Missbrauch der Anwendung führt.
Schutzumgehung für Automatisierung
Fehlkonfiguration: Öffentliches Offenlegen des Umgehungsgeheimnisses oder Verwendung schwacher Geheimnisse.
Risiko: Angreifer können Bereitstellungsschutzmaßnahmen umgehen und auf geschützte Bereitstellungen zugreifen und diese manipulieren.
Teilen von Links
Fehlkonfiguration: Links ohne Einschränkungen teilen oder versäumen, veraltete Links zu widerrufen.
Risiko: Unbefugter Zugriff auf geschützte Bereitstellungen, Umgehung von Authentifizierung und IP-Beschränkungen.
OPTIONS Allowlist
Fehlkonfiguration: Zu breite Pfade oder sensible Endpunkte auf die Allowlist setzen.
Risiko: Angreifer können ungeschützte Pfade ausnutzen, um unbefugte Aktionen durchzuführen oder Sicherheitsüberprüfungen zu umgehen.
Passwortschutz
Fehlkonfiguration: Verwendung schwacher Passwörter oder unsichere Weitergabe.
Risiko: Unbefugter Zugriff auf Bereitstellungen, wenn Passwörter erraten oder geleakt werden.
Hinweis: Verfügbar im Pro-Plan als Teil des Advanced Deployment Protection für zusätzlich 150 $/Monat.
Ausnahmen beim Bereitstellungsschutz
Fehlkonfiguration: Unabsichtliches Hinzufügen von Produktions- oder sensiblen Domains zur Ausnahmeliste.
Risiko: Offenlegung kritischer Bereitstellungen für die Öffentlichkeit, was zu Datenlecks oder unbefugtem Zugriff führt.
Hinweis: Verfügbar im Pro-Plan als Teil des Advanced Deployment Protection für zusätzlich 150 $/Monat.
Vertrauenswürdige IPs
Fehlkonfiguration: Falsche Angabe von IP-Adressen oder CIDR-Bereichen.
Risiko: Legitime Benutzer werden blockiert oder unbefugte IPs erhalten Zugriff.
Hinweis: Verfügbar im Enterprise-Plan.
Zweck: Konfigurieren Sie serverlose Funktionen, einschließlich Runtime-Einstellungen, Speicherzuweisung und Sicherheitsrichtlinien.
Nichts
Zweck: Verwalten Sie Caching-Strategien und -Einstellungen zur Optimierung der Leistung und Kontrolle der Datenspeicherung.
Cache leeren
Fehlkonfiguration: Es ermöglicht das Löschen des gesamten Caches.
Risiko: Unbefugte Benutzer löschen den Cache, was zu einem potenziellen DoS führen kann.
Zweck: Planen Sie automatisierte Aufgaben und Skripte, die in festgelegten Intervallen ausgeführt werden.
Cron-Job deaktivieren
Fehlkonfiguration: Es ermöglicht das Deaktivieren von Cron-Jobs, die im Code deklariert sind.
Risiko: Potenzielle Unterbrechung des Dienstes (je nachdem, wofür die Cron-Jobs gedacht waren).
Zweck: Konfigurieren Sie externe Protokollierungsdienste, um Anwendungsprotokolle zur Überwachung und Prüfung zu erfassen und zu speichern.
Nichts (wird von den Teameinstellungen verwaltet)
Zweck: Zentrale Anlaufstelle für verschiedene sicherheitsrelevante Einstellungen, die den Projektzugriff, den Quellschutz und mehr betreffen.
Build-Protokolle und Quellschutz
Fehlkonfiguration: Deaktivierung des Schutzes oder öffentliche Offenlegung der Pfade /logs
und /src
.
Risiko: Unbefugter Zugriff auf Build-Protokolle und Quellcode, was zu Informationslecks und potenzieller Ausnutzung von Schwachstellen führt.
Git Fork-Schutz
Fehlkonfiguration: Zulassung unbefugter Pull-Requests ohne ordnungsgemäße Überprüfungen.
Risiko: Bösartiger Code kann in den Codebestand integriert werden, was Schwachstellen oder Hintertüren einführt.
Sichere Backend-Zugriffe mit OIDC-Föderation
Fehlkonfiguration: Falsche Einrichtung von OIDC-Parametern oder Verwendung unsicherer Aussteller-URLs.
Risiko: Unbefugter Zugriff auf Backend-Dienste durch fehlerhafte Authentifizierungsabläufe.
Bereitstellungserhaltungsrichtlinie
Fehlkonfiguration: Festlegung von Aufbewahrungsfristen, die zu kurz sind (Verlust der Bereitstellungshistorie) oder zu lang (unnötige Datenaufbewahrung).
Risiko: Unfähigkeit, bei Bedarf Rollbacks durchzuführen, oder erhöhtes Risiko der Datenexposition durch alte Bereitstellungen.
Kürzlich gelöschte Bereitstellungen
Fehlkonfiguration: Keine Überwachung gelöschter Bereitstellungen oder ausschließlich auf automatisierte Löschungen verlassen.
Risiko: Verlust kritischer Bereitstellungshistorie, was Prüfungen und Rollbacks erschwert.
Zweck: Zugriff auf zusätzliche Projekteinstellungen zur Feinabstimmung von Konfigurationen und zur Verbesserung der Sicherheit.
Verzeichnisauflistung
Fehlkonfiguration: Aktivierung der Verzeichnisauflistung ermöglicht es Benutzern, den Inhalt von Verzeichnissen ohne Indexdatei anzuzeigen.
Risiko: Offenlegung sensibler Dateien, Anwendungsstruktur und potenzieller Einstiegspunkte für Angriffe.
Angriffsherausforderungsmodus aktivieren
Fehlkonfiguration: Die Aktivierung verbessert die Verteidigung der Webanwendung gegen DoS, jedoch auf Kosten der Benutzerfreundlichkeit.
Risiko: Potenzielle Probleme mit der Benutzererfahrung.
Fehlkonfiguration: Ermöglicht das Entsperren/Blockieren von Datenverkehr.
Risiko: Potenzieller DoS, der bösartigen Datenverkehr zulässt oder legitimen Datenverkehr blockiert.
Fehlkonfiguration: Ermöglicht den Zugriff auf den vollständigen Quellcode der Anwendung.
Risiko: Potenzielle Offenlegung sensibler Informationen.
Fehlkonfiguration: Dieser Schutz stellt sicher, dass die Client- und Serveranwendung immer dieselbe Version verwenden, sodass es keine Desynchronisation gibt, bei der der Client eine andere Version als der Server verwendet und sie sich daher nicht verstehen.
Risiko: Deaktivierung dieses (wenn aktiviert) könnte in zukünftigen Bereitstellungen DoS-Probleme verursachen.
Übertragung
Fehlkonfiguration: Ermöglicht die Übertragung aller Projekte zu einem anderen Team.
Risiko: Ein Angreifer könnte die Projekte stehlen.
Projekt löschen
Fehlkonfiguration: Ermöglicht das Löschen des Teams mit allen Projekten.
Risiko: Löschen der Projekte.
Speed Insights Kostenlimit
Fehlkonfiguration: Ein Angreifer könnte diese Zahl erhöhen.
Risiko: Erhöhte Kosten.
Mitglieder hinzufügen
Fehlkonfiguration: Ein Angreifer könnte Persistenz aufrechterhalten, indem er ein Konto einlädt, das er kontrolliert.
Risiko: Persistenz des Angreifers.
Rollen
Fehlkonfiguration: Gewährung zu vieler Berechtigungen an Personen, die sie nicht benötigen, erhöht das Risiko der Vercel-Konfiguration. Überprüfen Sie alle möglichen Rollen unter https://vercel.com/docs/accounts/team-members-and-roles/access-roles.
Risiko: Erhöhte Exposition des Vercel-Teams.
Eine Zugriffsgruppe in Vercel ist eine Sammlung von Projekten und Teammitgliedern mit vordefinierten Rollenzuweisungen, die eine zentrale und optimierte Zugriffsverwaltung über mehrere Projekte hinweg ermöglichen.
Potenzielle Fehlkonfigurationen:
Überberechtigung von Mitgliedern: Zuweisung von Rollen mit mehr Berechtigungen als nötig, was zu unbefugtem Zugriff oder Aktionen führt.
Unangemessene Rollenzuweisungen: Falsche Zuweisung von Rollen, die nicht mit den Verantwortlichkeiten der Teammitglieder übereinstimmen, was zu einer Privilegieneskalation führt.
Mangelnde Projekttrennung: Versäumnis, sensible Projekte zu trennen, was einen breiteren Zugriff als beabsichtigt ermöglicht.
Unzureichendes Gruppenmanagement: Nicht regelmäßiges Überprüfen oder Aktualisieren von Zugriffsgruppen, was zu veralteten oder unangemessenen Zugriffsberechtigungen führt.
Inkonsistente Rollendefinitionen: Verwendung inkonsistenter oder unklarer Rollendefinitionen in verschiedenen Zugriffsgruppen, was zu Verwirrung und Sicherheitslücken führt.
Log Drains zu Drittanbietern:
Fehlkonfiguration: Ein Angreifer könnte einen Log Drain konfigurieren, um die Protokolle zu stehlen.
Risiko: Teilweise Persistenz.
Team-E-Mail-Domain: Bei der Konfiguration lädt diese Einstellung automatisch Vercel-Persönliche Konten mit E-Mail-Adressen, die auf die angegebene Domain enden (z. B. mydomain.com
), ein, Ihrem Team bei der Anmeldung und im Dashboard beizutreten.
Fehlkonfiguration:
Falsche Angabe der E-Mail-Domain oder einer falsch geschriebenen Domain in der Team-E-Mail-Domain-Einstellung.
Verwendung einer gängigen E-Mail-Domain (z. B. gmail.com
, hotmail.com
) anstelle einer unternehmensspezifischen Domain.
Risiken:
Unbefugter Zugriff: Benutzer mit E-Mail-Adressen von unbeabsichtigten Domains könnten Einladungen erhalten, Ihrem Team beizutreten.
Datenexposition: Potenzielle Offenlegung sensibler Projektinformationen an unbefugte Personen.
Geschützte Git-Scopes: Ermöglicht Ihnen, bis zu 5 Git-Scopes zu Ihrem Team hinzuzufügen, um zu verhindern, dass andere Vercel-Teams Repositories aus dem geschützten Scope bereitstellen. Mehrere Teams können denselben Scope angeben, was beiden Teams den Zugriff ermöglicht.
Fehlkonfiguration: Kritische Git-Scopes nicht zur geschützten Liste hinzufügen.
Risiken:
Unbefugte Bereitstellungen: Andere Teams könnten Repositories aus den Git-Scopes Ihrer Organisation ohne Genehmigung bereitstellen.
Offenlegung von geistigem Eigentum: Proprietärer Code könnte bereitgestellt und außerhalb Ihres Teams zugegriffen werden.
Richtlinien für Umgebungsvariablen: Erzwingt Richtlinien für die Erstellung und Bearbeitung der Umgebungsvariablen des Teams. Insbesondere können Sie durchsetzen, dass alle Umgebungsvariablen als sensible Umgebungsvariablen erstellt werden, die nur vom Bereitstellungssystem von Vercel entschlüsselt werden können.
Fehlkonfiguration: Beibehaltung der Deaktivierung der Durchsetzung sensibler Umgebungsvariablen.
Risiken:
Offenlegung von Geheimnissen: Umgebungsvariablen könnten von unbefugten Teammitgliedern eingesehen oder bearbeitet werden.
Datenverletzung: Sensible Informationen wie API-Schlüssel und Anmeldeinformationen könnten geleakt werden.
Audit-Protokoll: Bietet einen Export der Aktivitäten des Teams für bis zu 90 Tage. Audit-Protokolle helfen bei der Überwachung und Verfolgung von Aktionen, die von Teammitgliedern durchgeführt werden.
Fehlkonfiguration: Gewährung des Zugriffs auf Audit-Protokolle für unbefugte Teammitglieder.
Risiken:
Datenschutzverletzungen: Offenlegung sensibler Benutzeraktivitäten und -daten.
Manipulation von Protokollen: Böswillige Akteure könnten Protokolle ändern oder löschen, um ihre Spuren zu verwischen.
SAML Single Sign-On: Ermöglicht die Anpassung der SAML-Authentifizierung und der Verzeichnis-Synchronisierung für Ihr Team, wodurch die Integration mit einem Identitätsanbieter (IdP) für zentrale Authentifizierung und Benutzerverwaltung ermöglicht wird.
Fehlkonfiguration: Ein Angreifer könnte die Teamkonfiguration durch das Einrichten von SAML-Parametern wie Entity ID, SSO-URL oder Zertifikat-Fingerabdrücken zurückdoor.
Risiko: Persistenz aufrechterhalten.
Sichtbarkeit der IP-Adresse: Steuert, ob IP-Adressen, die unter bestimmten Datenschutzgesetzen als persönliche Informationen gelten können, in Überwachungsabfragen und Log Drains angezeigt werden.
Fehlkonfiguration: Sichtbarkeit der IP-Adresse ohne Notwendigkeit aktiviert lassen.
Risiken:
Datenschutzverletzungen: Nichteinhaltung von Datenschutzvorschriften wie GDPR.
Rechtliche Konsequenzen: Potenzielle Geldstrafen und Strafen für den unsachgemäßen Umgang mit persönlichen Daten.
IP-Blockierung: Ermöglicht die Konfiguration von IP-Adressen und CIDR-Bereichen, von denen Vercel Anfragen blockieren sollte. Blockierte Anfragen tragen nicht zu Ihrer Abrechnung bei.
Fehlkonfiguration: Könnte von einem Angreifer missbraucht werden, um bösartigen Datenverkehr zuzulassen oder legitimen Datenverkehr zu blockieren.
Risiken:
Dienstverweigerung für legitime Benutzer: Blockierung des Zugriffs für gültige Benutzer oder Partner.
Betriebliche Störungen: Verlust der Dienstverfügbarkeit für bestimmte Regionen oder Kunden.
Vercel Secure Compute ermöglicht sichere, private Verbindungen zwischen Vercel-Funktionen und Backend-Umgebungen (z. B. Datenbanken), indem isolierte Netzwerke mit dedizierten IP-Adressen eingerichtet werden. Dies beseitigt die Notwendigkeit, Backend-Dienste öffentlich zugänglich zu machen, und verbessert die Sicherheit, Compliance und Privatsphäre.
Falsche Auswahl der AWS-Region
Fehlkonfiguration: Auswahl einer AWS-Region für das Secure Compute-Netzwerk, die nicht mit der Region der Backend-Dienste übereinstimmt.
Risiko: Erhöhte Latenz, potenzielle Probleme mit der Datenresidenz-Compliance und verschlechterte Leistung.
Überlappende CIDR-Blöcke
Fehlkonfiguration: Auswahl von CIDR-Blöcken, die mit bestehenden VPCs oder anderen Netzwerken überlappen.
Risiko: Netzwerk-Konflikte, die zu fehlgeschlagenen Verbindungen, unbefugtem Zugriff oder Datenlecks zwischen Netzwerken führen.
Unzureichende VPC-Peering-Konfiguration
Fehlkonfiguration: Falsche Einrichtung des VPC-Peerings (z. B. falsche VPC-IDs, unvollständige Aktualisierungen der Routing-Tabellen).
Risiko: Unbefugter Zugriff auf die Backend-Infrastruktur, fehlgeschlagene sichere Verbindungen und potenzielle Datenverletzungen.
Übermäßige Projektzuweisungen
Fehlkonfiguration: Zuweisung mehrerer Projekte zu einem einzigen Secure Compute-Netzwerk ohne angemessene Isolation.
Risiko: Gemeinsame IP-Exposition erhöht die Angriffsfläche, was möglicherweise kompromittierte Projekte betrifft.
Unzureichendes IP-Adressmanagement
Fehlkonfiguration: Versäumnis, dedizierte IP-Adressen angemessen zu verwalten oder zu rotieren.
Risiko: IP-Spoofing, Verfolgung von Schwachstellen und potenzielle Blacklistung, wenn IPs mit bösartigen Aktivitäten in Verbindung gebracht werden.
Unnötige Einbeziehung von Build-Containern
Fehlkonfiguration: Hinzufügen von Build-Containern zum Secure Compute-Netzwerk, wenn kein Backend-Zugriff während der Builds erforderlich ist.
Risiko: Erweiterte Angriffsfläche, erhöhte Bereitstellungsverzögerungen und unnötiger Verbrauch von Netzwerkressourcen.
Versäumnis, Umgehungsgeheimnisse sicher zu behandeln
Fehlkonfiguration: Offenlegung oder unsachgemäße Handhabung von Geheimnissen, die zur Umgehung von Bereitstellungsschutzmaßnahmen verwendet werden.
Risiko: Unbefugter Zugriff auf geschützte Bereitstellungen, der es Angreifern ermöglicht, bösartigen Code zu manipulieren oder bereitzustellen.
Ignorieren von Failover-Konfigurationen für Regionen
Fehlkonfiguration: Keine Einrichtung passiver Failover-Regionen oder falsche Konfiguration der Failover-Einstellungen.
Risiko: Ausfallzeiten des Dienstes während Ausfällen der primären Region, was zu reduzierter Verfügbarkeit und potenzieller Dateninkonsistenz führt.
Überschreitung der VPC-Peering-Verbindungsgrenzen
Fehlkonfiguration: Versuch, mehr VPC-Peering-Verbindungen als die zulässige Grenze (z. B. mehr als 50 Verbindungen) herzustellen.
Risiko: Unfähigkeit, notwendige Backend-Dienste sicher zu verbinden, was zu Bereitstellungsfehlern und betrieblichen Störungen führt.
Unsichere Netzwerkeinstellungen
Fehlkonfiguration: Schwache Firewall-Regeln, fehlende Verschlüsselung oder unsachgemäße Netzwerksegmentierung innerhalb des Secure Compute-Netzwerks.
Risiko: Datenabfang, unbefugter Zugriff auf Backend-Dienste und erhöhte Anfälligkeit für Angriffe.
Zweck: Verwalten Sie umgebungsspezifische Variablen und Geheimnisse, die von allen Projekten verwendet werden.
Sensible Variablen offenlegen
Fehlkonfiguration: Präfixierung sensibler Variablen mit NEXT_PUBLIC_
, wodurch sie auf der Client-Seite zugänglich werden.
Risiko: Offenlegung von API-Schlüsseln, Datenbankanmeldeinformationen oder anderen sensiblen Daten für die Öffentlichkeit, was zu Datenverletzungen führt.
Sensible deaktiviert
Fehlkonfiguration: Wenn deaktiviert (Standard) ist es möglich, die Werte der generierten Geheimnisse zu lesen.
Risiko: Erhöhte Wahrscheinlichkeit einer versehentlichen Offenlegung oder unbefugten Zugriffs auf sensible Informationen.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)