7. April 2021

Eastereggs: wenn Entwicklerscherze nach hinten losgehen

Von Joachim Reinke

April 7, 2021

Easteregg, ISO 27001, Osterei

Easter Eggs wirken auf den ersten Blick harmlos. Ein versteckter Gag, eine geheime Tastenkombination, ein Entwicklername, ein kleiner Insider. In produktiver Software ist genau das aber schnell keine charmante Spielerei mehr, sondern versteckte Funktionalität, die dort eigentlich nichts zu suchen hat. MITRE führt dafür mit CWE-912 Hidden Functionality eine eigene Schwachstellenkategorie und beschreibt sehr klar: Auch wenn die Funktion nicht bösartig gemeint ist, vergrößert sie die Angriffsfläche und kann zusätzliche Schwächen freilegen.

Die kurze Antwort

Easter Eggs sind in professioneller Unternehmenssoftware keine gute Idee. Nicht weil Humor verboten wäre, sondern weil versteckte Funktionen in produktiven Systemen ein Sicherheits-, Qualitäts- und Vertrauensproblem sind. OWASP beschreibt dieses Risiko als Extraneous Functionality: also verborgene Backdoor-Funktionen oder interne Entwicklungsmechanismen, die nie für den Produktiveinsatz gedacht waren, aber trotzdem in der Anwendung verbleiben.

Was mit Easter Eggs hier eigentlich gemeint ist

Gemeint sind nicht nur harmlose Spielereien mit einer lustigen Animation. Es geht um mehr: Das können absichtlich eingebaute Easter Eggs sein, aber auch Entwickler-Abkürzungen, versteckte Debug-Funktionen, Hardcoded-Accounts oder andere Funktionen, die nicht dokumentiert, nicht spezifiziert und für normale Benutzer oder Administratoren nicht offensichtlich zugänglich sind. Genau das macht das Thema sicherheitsseitig unerquicklich.

Das eigentliche Problem: Was nicht offiziell da sein sollte, wird auch nicht sauber mitgedacht

Sobald eine Funktion nicht Teil der offiziellen Spezifikation ist, fällt sie oft aus der normalen Qualitäts- und Sicherheitslogik heraus. Sie wird seltener sauber dokumentiert, seltener in Risiken einbezogen und oft auch nicht mit derselben Disziplin getestet wie der offizielle Funktionsumfang. Es bleiben Funktionen in der App aktiv, die nie für die Auslieferung gedacht waren.

Humor ist nicht das Problem. Heimlichkeit ist das Problem.

Ein kleiner Insider im Entwicklerteam ist nicht automatisch kritisch. Kritisch wird es, wenn produktive Software Funktionen enthält, die weder fachlich freigegeben noch dokumentiert noch erwartet sind. Selbst nicht bösartige versteckte Funktionalität kann Angreifern zusätzliche Möglichkeiten bieten, weil sie Verhalten freilegt, das außerhalb der beabsichtigten Nutzung liegt.

Warum Easter Eggs sicherheitsseitig heikel sind

Der Sicherheitshebel ist einfach: Jede zusätzliche, versteckte Funktion kann ein unerwarteter Einstiegspunkt sein. Das gilt besonders dann, wenn sie intern als praktische Entwicklungsabkürzung gedacht war, etwa für Tests, Support oder Fehlersuche. OWASP nennt als Beispiele unter anderem versteckte Backdoor-Funktionalität und während der Entwicklung deaktivierte Sicherheitsmechanismen, die in der produktiven App verbleiben. Genau daraus kann später ein realer Angriffsweg werden.

Auch nicht-ausnutzbare Easter Eggs sind ein Qualitätsproblem

Selbst wenn eine versteckte Funktion nicht direkt ausnutzbar ist, bleibt sie problematisch. Denn produktive Software sollte nachvollziehbar, dokumentiert und beherrschbar sein. Sicherheit sollte schon in Design und Entwicklung "eingebacken" werden muss und Entwicklungsprozesse sollten die Wahrscheinlichkeit und Auswirkungen von Kompromittierungen minimieren sollen. Versteckte Zusatzfunktionen laufen genau dieser Idee entgegen.

Der häufigste Denkfehler

Der häufigste Denkfehler lautet: "Das ist doch nur ein kleiner Scherz, der niemandem wehtut." Das kann stimmen. Es kann aber genauso gut falsch sein. Das Problem ist nicht, dass jede versteckte Funktion automatisch gefährlich ist. Das Problem ist, dass Sie es im Zweifel gerade nicht belastbar wissen. Hidden Functionality ist ein zusätzliches Risiko, selbst wenn sie nicht absichtlich schädlich ist.

In Unternehmenssoftware zählt nicht Originalität, sondern Beherrschbarkeit

Für unternehmenskritische Software ist nicht entscheidend, ob Entwickler kreativ waren. Entscheidend ist, ob die Anwendung nachvollziehbar spezifiziert, überprüfbar, testbar und wartbar ist. Das NIST SSDF beschreibt sichere Softwareentwicklung genau als Satz von Praktiken, die in den gesamten Entwicklungsprozess integriert werden sollen, um Schwachstellen in ausgelieferter Software zu reduzieren und ihre Ursachen früh zu adressieren. Versteckte Zusatzfunktionen passen schlecht zu dieser Logik.

Was Hersteller stattdessen tun sollten

Ein professioneller Hersteller braucht keinen inoffiziellen Überraschungsbereich in seiner Software, sondern einen sauberen Entwicklungsprozess. Wichtig dafür sind unter anderem Threat Modelling, saubere Anforderungserhebung, Governance und Rollen sowie sichere Coding-Praktiken. Diese sollten in jeden SDLC integriert werden sollen. Der sinnvolle Weg lautet also nicht: „Easter Eggs besser verstecken“, sondern: versteckte Funktionalität gar nicht erst in produktive Software hineinlassen. 

Was hat das mit ISO 27001 zu tun?

Sehr viel.

ISO 27001 betrachtet Software nicht nur unter dem Gesichtspunkt "läuft oder läuft nicht", sondern auch unter dem Gesichtspunkt, wie sie entwickelt wurde. Genau hier setzen die Anforderungen A.8.25 und A.8.28 an. A.8.25 verlangt, dass Regeln für die sichere Entwicklung von Software und Systemen festgelegt und angewandt werden. A.8.28 verlangt zusätzlich, dass bei der Softwareentwicklung die Grundsätze sicherer Codierung angewandt werden.

Versteckte Easter Eggs, Entwicklerscherze, Debug-Hintertüren oder andere nicht spezifizierte Zusatzfunktionen passen genau dazu schlecht. Denn sie stehen quer zu einem sauberen, beherrschten Entwicklungsprozess: Sie sind meist nicht fachlich begründet, oft nicht sauber dokumentiert, werden leichter bei Reviews übersehen und unterlaufen die Idee, dass produktive Software nur das tun sollte, was bewusst vorgesehen, geprüft und freigegeben wurde.

Anders gesagt: Wer sichere Entwicklung und sichere Codierung ernst nimmt, baut keine Überraschungen in produktive Software ein.

Für Käufer von Software ist das ebenfalls ein Thema

Nicht nur Hersteller, auch Kunden sollten das Thema ernst nehmen. NIST beschreibt im SSDF, dass Software Acquirers sichere Entwicklungspraktiken ihrer Lieferanten verstehen und in Beschaffungsgesprächen adressieren sollen.

Praktisch heißt das: Wenn Sie unternehmenskritische Software einkaufen, ist die Frage legitim, wie der Anbieter verhindert, dass Debug-Funktionen, versteckte Backdoors oder andere nicht spezifizierte Funktionen in die Produktion gelangen.

Gute Fragen an Software-Anbieter

Wenn Sie Software einkaufen oder bewerten, helfen ein paar nüchterne Fragen:

1. Wie verhindert der Anbieter versteckte oder nicht spezifizierte Funktionalität?

Sichere Entwicklungspraktiken aktiv mit Lieferanten zu besprechen. Genau hier gehört diese Frage hin. Lassen Sie sich erklären, wie Ihre Softwarelieferanten dafür sorgen, dass sichere Entwicklungsprinzipien eingesetzt werden. Ein ISO 27001-Zertifikat des Softwareherstellers kann hier sinnvoll sein, ist aber nicht unbedingt alleine ausschlaggebend. Insbesondere sollte auf den passenden Anwendungsbereich und die entsprechenden Punkte im Statement of Applicability geachtet werden.

2. Gibt es verpflichtende Code Reviews?

Code Reviews sind eine bewährte Präventionsmaßnahme gegen "extraneous functionality". KI kann ebenfalls helfen.

3. Wie wird sichergestellt, dass Test- und Debug-Funktionen nicht in Produktion bleiben?

Gerade das Stehenlassen nicht für die Auslieferung gedachter Funktionen ist Kern des Problems. Der Anbieter der Software sollte in der Lage sein zu erkären, wie er dieses Thema behandelt.

4. Wie ist sichere Entwicklung organisatorisch verankert?

Hier sollte der Lieferant Governance, Rollen und sichere Entwicklungspraktiken ausdrücklich als Teil guter Sicherheitsentwicklung nachweisen können.

Was will der Auditor sehen?

Ein Auditor will in so einem Thema nicht hören: "Unsere Entwickler bauen sowas schon nicht ein." Er will erkennen, dass sichere Entwicklung nicht auf Hoffnung basiert, sondern auf geregelten Verfahren: klare Anforderungen, Code Reviews, Testdisziplin, Governance und ein Entwicklungsprozess, der unerwünschte Zusatzfunktionalität nicht einfach durchwinkt.

FAQ

Was ist ein Easter Egg in Software?

Im Sicherheitskontext ist damit meist versteckte Funktionalität gemeint, die nicht dokumentiert, nicht Teil der Spezifikation und für normale Benutzer oder Administratoren nicht offensichtlich zugänglich ist.

Sind Easter Eggs automatisch eine Sicherheitslücke?

Nicht automatisch jede einzelne. Aber auch nicht bösartig gemeinte versteckte Funktionalität kann die Angriffsfläche vergrößern und zusätzliche Schwächen freilegen.

 

Warum sind Entwicklerscherze in Unternehmenssoftware problematisch?

Weil sie außerhalb von Spezifikation, Dokumentation und oft auch außerhalb sauberer Test- und Freigabelogik laufen. Genau dieses Zurücklassen nicht für die Produktion gedachter Funktionalität ist ein Risiko. 

Wie verhindert man so etwas am besten?

Als Käufer der Software können Sie den Lieferanten zu seinen Praktiken im Bereich sicherer Softareentwicklung befragen und sich explizit die Frage beantworten lassen, wie Eastereggs verhindert werden.

Als Hersteller können Sie selbst sichere Coding-Praktiken einführen, in denen das Einbringen von Eastereggs nicht gestattet ist und über Code Reviews und mit Hilfe von KI-Unterstützung danach suchen.

Ist das nur ein Thema für Softwarehersteller?

Nein. Auch Software-Käufer sollten sichere Entwicklungspraktiken ihrer Lieferanten verstehen und in der Beschaffung thematisieren.

Was ist der größte Denkfehler?

Zu glauben, ein verstecktes Feature sei harmlos, nur weil es als Spaß oder Abkürzung gedacht war. Sicherheitsseitig ist gerade diese fehlende Einordnung das Problem.

 

Unser Tipp

Easter Eggs sind in Unternehmenssoftware keine charmante Kleinigkeit, sondern meist ein Zeichen für schlecht beherrschte Entwicklung. Das eigentliche Problem ist nicht der Witz, sondern die versteckte Funktionalität außerhalb von Spezifikation, Testdisziplin und Sicherheitslogik. Wer sichere Software will, braucht keine geheimen Zusatzfunktionen, sondern saubere Entwicklungsprozesse.

Wenn Sie im Rahmen einer ISO 27001-Zertifizierung Ihre Softwareentwicklung sicher machen wollen, dann lassen Sie uns sprechen oder Sie chatten uns einfach an (direkt hier auf der Seite unten rechts).

Über den Autor

Joachim Reinke

Joachim Reinke unterstützt seit 2017 Unternehmen beim Aufbau praxistauglicher Managementsysteme für Informationssicherheit und Qualität. In dieser Zeit hat er bereits mehr als 100 Unternehmen begleitet. Er ist zertifizierter Lead Auditor und als Dozent für Informationssicherheit und Qualitätsmanagement bei Zertifizierern und Trainingsanbietern tätig. Kunden schätzen besonders seine klare, praxisnahe und verständliche Vermittlung auch anspruchsvoller Inhalte.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}