ਇੱਕ ਡਿਪੈਂਡਾਬੋਟ ਬੰਪ ਨੇ ਇੱਕ ਵਾਰਮ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤਾ। 22 ਪੈਕੇਜ।
ਇੱਕ ਬੋਟ ਇੱਕ ਪੁੱਲ ਬੇਨਤੀ ਖੋਲ੍ਹਦਾ ਹੈ।
ਇੱਕ ਬੋਟ ਇੱਕ ਪੁੱਲ ਬੇਨਤੀ ਖੋਲ੍ਹਦਾ ਹੈ। ਇੱਕ ਮਨੁੱਖ ਇਸਨੂੰ 24 ਮਿੰਟ ਬਾਅਦ ਮਰਜ ਕਰਦਾ ਹੈ। ਉਸ ਤੋਂ 95 ਮਿੰਟ ਬਾਅਦ, ਇੱਕ ਵਾਰਮ ਨੇ ਉਸਦੇ 22 npm ਪੈਕੇਜਾਂ ਦੇ 110 ਖਤਰਨਾਕ ਸੰਸਕਰਣ, ਉਸਦੇ ਨਾਮ ਹੇਠ, ਉਸਦੇ CI ਵਿੱਚ ਮਿਲੇ ਟੋਕਨ ਨਾਲ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੇ ਹਨ।
ਲਿਖਤੀ ਐਡੀਸ਼ਨ ਪੜ੍ਹੋ (ਅੰਗਰੇਜ਼ੀ) ↗
ਇਹ ਵੀਡੀਓ ਕੀ ਕਵਰ ਕਰਦਾ ਹੈ
- ਇੱਕ ਬੋਟ, ਇੱਕ ਮਨੁੱਖ, ਇੱਕ ਵਾਰਮ
- ਇਹ ਕਿਵੇਂ ਹੋਇਆ, npm ਨੇ ਇਸਨੂੰ ਕਿਉਂ ਇਜਾਜ਼ਤ ਦਿੱਤੀ, ਦੋਸ਼ੀ ਕੌਣ ਹੈ
- ਸਮਾਂ-ਰੇਖਾ: ਜ਼ਹਿਰੀਲੀ ਕੈਸ਼
- 21:48 — ਡਿਪੈਂਡਾਬੋਟ ਬੰਪ
- ਇਹ ਕਿਉਂ ਕੰਮ ਕਰਦਾ ਹੈ
ਅਨੁਵਾਦਿਤ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ
ਮੂਲ ਅੰਗਰੇਜ਼ੀ ਬਿਰਤਾਂਤ ਤੋਂ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ। ਉਪਲਬਧ ਆਡੀਓ ਅਤੇ ਕੈਪਸ਼ਨ YouTube ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
ਇੱਕ ਬੋਟ, ਇੱਕ ਮਨੁੱਖ, ਇੱਕ ਵਾਰਮ
0:00 ਇੱਕ ਬੋਟ ਇੱਕ ਪੁੱਲ ਬੇਨਤੀ ਖੋਲ੍ਹਦਾ ਹੈ; ਇੱਕ ਮਨੁੱਖ ਇਸਨੂੰ ਚੌਵੀ ਮਿੰਟ ਬਾਅਦ ਮਰਜ ਕਰਦਾ ਹੈ। ਪੰਚਵੇਂ ਮਿੰਟ 'ਤੇ, ਇੱਕ ਵਾਰਮ ਨੇ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤਾ ਹੈ ਉਸਦੇ ਇੱਕ ਸੌ ਦਸ ਸੰਸਕਰਣ ਪੈਕੇਜ, ਉਸਦੇ ਰੂਪ ਵਿੱਚ। TanStack ਦੇ ਪੋਸਟਮਾਰਟਮ ਵਿੱਚ ਅੱਪਸਟ੍ਰੀਮ ਟਾਈਮਸਟੈਂਪ ਹਨ, ਡਾਊਨਸਟ੍ਰੀਮ ਮੇਨਟੇਨਰ ਦਾ ਬਾਕੀ ਹੈ, ਅਤੇ ਹੈਕਰ ਨਿਊਜ਼ ਇਸਨੂੰ ਗਿਆਰਾਂ ਸੌ ਪੁਆਇੰਟ ਅਤੇ ਇੱਕ ਨਾਮ ਦਿੰਦਾ ਹੈ: ਮਿੰਨੀ ਸ਼ਾਈ-ਹੁਲੁਡ। ਇਹ ਕਿਵੇਂ ਹੁੰਦਾ ਹੈ, npm ਇਸਨੂੰ ਕਿਉਂ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਦੋਸ਼ੀ ਕੌਣ ਹੈ।
ਇਹ ਕਿਵੇਂ ਹੋਇਆ, npm ਨੇ ਇਸਨੂੰ ਕਿਉਂ ਇਜਾਜ਼ਤ ਦਿੱਤੀ, ਦੋਸ਼ੀ ਕੌਣ ਹੈ
0:21 ਇਹ The Daily Diff ਹੈ, ਪੋਸਟਮਾਰਟਮ। 11 ਮਈ, ਸਵੇਰ। ਇੱਕ ਮੁੜ-ਨਾਮਿਤ ਫੋਰਕ TanStack Router ਵਿਰੁੱਧ ਇੱਕ ਪੁੱਲ ਬੇਨਤੀ ਖੋਲ੍ਹਦਾ ਹੈ। ਇਹ ਘੰਟੇ ਦੇ ਅੰਦਰ ਬੰਦ ਹੋ ਜਾਂਦਾ ਹੈ, ਪਰ ਇੱਕ ਬੈਂਚਮਾਰਕ ਵਰਕਫਲੋ ਨੇ ਪਹਿਲਾਂ ਹੀ ਇਸਦਾ ਕੋਡ ਚਲਾ ਲਿਆ ਹੈ ਅਤੇ
ਸਮਾਂ-ਰੇਖਾ: ਜ਼ਹਿਰੀਲੀ ਕੈਸ਼
0:33 ਇੱਕ ਜ਼ਹਿਰੀਲੀ ਕੈਸ਼ ਨੂੰ ਉਸ ਕੁੰਜੀ ਦੇ ਹੇਠਾਂ ਸੇਵ ਕਰ ਲਿਆ ਹੈ ਜੋ ਰਿਲੀਜ਼ ਵਰਕਫਲੋ ਵਰਤੇਗਾ। ਉੱਨੀ-ਵੀਹ। ਇੱਕ ਜਾਇਜ਼ ਮਰਜ ਰਿਲੀਜ਼ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਕੈਸ਼ ਵਾਪਸ ਆਉਂਦੀ ਹੈ, ਇੱਕ ਬਾਈਨਰੀ ਰਨਰ ਦੀ ਮੈਮੋਰੀ ਨੂੰ ਪੜ੍ਹਦੀ ਹੈ, ਪਬਲਿਸ਼ ਟੋਕਨ ਨੂੰ ਚੁੱਕਦੀ ਹੈ, ਅਤੇ ਬਿਆਲੀ ਪੈਕੇਜਾਂ ਵਿੱਚ ਚੌਰਾਸੀ ਸੰਸਕਰਣ ਭੇਜਦੀ ਹੈ, ਵੈਧ ਪ੍ਰਮਾਣਿਕਤਾ ਦੇ ਨਾਲ। ਟੈਸਟ ਅਸਫਲ ਹੁੰਦੇ ਹਨ। ਇਹ ਫਿਰ ਵੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਉੱਨੀ ਚਾਲੀ-ਛੇ, ਇੱਕ StepSecurity ਖੋਜਕਾਰ ਮੁੱਦਾ ਦਾਇਰ ਕਰਦਾ ਹੈ; ਨੌਂ UTC ਤੱਕ ਸਭ ਕੁਝ ਪੁਰਾਣਾ ਹੋ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਲਾਹ ਜਾਰੀ ਹੋ ਜਾਂਦੀ ਹੈ।
0:55 ਪੁਰਾਣਾ ਹੋਣਾ ਖਤਮ ਹੋਣਾ ਨਹੀਂ ਹੈ: npm ਨਿਰਭਰਤਾ ਵਾਲੀ ਕੋਈ ਵੀ ਚੀਜ਼ ਅਨਪਬਲਿਸ਼ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਕਈ ਘੰਟਿਆਂ ਤੱਕ ਸਥਾਪਿਤ ਕਰਨ ਯੋਗ ਰਹਿੰਦਾ ਹੈ। ਇੱਕੀ ਚਾਲੀ-ਅੱਠ। ਇੱਕ ਨੌਂ-ਸਟਾਰ ਹਵਾਬਾਜ਼ੀ-ਡਾਟਾ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ, Dependabot ਆਪਣੀ ਰੁਟੀਨ ਪੁੱਲ ਬੇਨਤੀ ਖੋਲ੍ਹਦਾ ਹੈ: dev-dependencies ਸਮੂਹ ਨੂੰ ਬੰਪ ਕਰੋ, ਤੇਰਾਂ ਅੱਪਡੇਟ। ਦੋ ਜ਼ਹਿਰੀਲੇ TanStack ਸੰਸਕਰਣ ਹਨ। ਬਾਈ-ਬਾਰਾਂ: ਮਰਜ ਕੀਤਾ ਗਿਆ। ਪਬਲਿਸ਼ ਵਰਕਫਲੋ npm C-I ਨੂੰ ਟੋਕਨ ਨਾਲ ਚਲਾਉਂਦਾ ਹੈ
21:48 — ਡਿਪੈਂਡਾਬੋਟ ਬੰਪ
1:15 ਸਕੋਪ; ਇੱਕ ਤਿਆਰੀ ਸਕ੍ਰਿਪਟ ਇਸਨੂੰ ਪੜ੍ਹਦੀ ਹੈ, ਅਤੇ ਬਾਈ-ਸਤਾਰਾਂ ਵਜੇ ਵਾਰਮ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਉਸਦੇ ਰੂਪ ਵਿੱਚ। ਹਰ ਪੈਕੇਜ ਦੇ ਪੰਜ ਸੰਸਕਰਣ ਜਿੱਥੇ ਟੋਕਨ ਪਹੁੰਚਦਾ ਹੈ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਇੱਕ ਪੁਰਾਣਾ ਸਾਈਡ ਪ੍ਰੋਜੈਕਟ ਵੀ: ਹਰ ਚੀਜ਼ ਲਈ ਇੱਕ ਕਲਾਸਿਕ ਟੋਕਨ। ਪੰਚਵੇਂ ਮਿੰਟਾਂ ਵਿੱਚ ਇੱਕ ਸੌ ਦਸ ਸੰਸਕਰਣ। ਉਸਨੂੰ ਅੱਧੀ ਰਾਤ ਤੋਂ ਬਾਅਦ ਈਮੇਲ ਰਾਹੀਂ ਪਤਾ ਲੱਗਦਾ ਹੈ। ਇਹ ਕਿਉਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਇੱਕ: npm install ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ ਅਜਨਬੀਆਂ ਦੇ ਲਾਈਫਸਾਈਕਲ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ, ਅਤੇ ਇੱਕ git ਨਿਰਭਰਤਾ ਦੀ ਤਿਆਰੀ ਸਕ੍ਰਿਪਟ ਗਿਣਦੀ ਹੈ।
1:39 ਦੋ: ਵਾਰਮ ਨੂੰ ਇੱਕ ਚੀਜ਼ ਚਾਹੀਦੀ ਹੈ: ਇੱਕ ਟੋਕਨ ਜੋ ਦੂਜੇ ਕਾਰਕ ਤੋਂ ਬਿਨਾਂ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਫਿਰ ਇਹ ਰਜਿਸਟਰੀ ਤੋਂ ਪੁੱਛਦਾ ਹੈ ਕਿ ਉਸ ਮੇਨਟੇਨਰ ਕੋਲ ਹੋਰ ਕੀ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਆਪਣੇ ਆਪ ਦੇ ਅੰਦਰ ਸਭ ਕੁਝ ਮੁੜ-ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਤਿੰਨ: ਚੇਨ ਵਿੱਚ ਕੁਝ ਵੀ ਇੱਕ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ।
ਇਹ ਕਿਉਂ ਕੰਮ ਕਰਦਾ ਹੈ
1:51 ਇੱਕ ਬੋਟ ਪ੍ਰਸਤਾਵਿਤ ਕਰਦਾ ਹੈ, ਇੱਕ ਪਾਈਪਲਾਈਨ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ, ਅਤੇ ਵਾਰਮ ਉਪਕਾਰ ਵਾਪਸ ਕਰਦਾ ਹੈ: ਇਸਦੇ ਡੈੱਡ-ਡ੍ਰੌਪ ਬ੍ਰਾਂਚਾਂ ਦਾ ਨਾਮ dependabot ਸਲੈਸ਼ github-actions ਸਲੈਸ਼ fremen ਹੈ। git blame। npm ਦਾ install ਮਾਡਲ, ਪੰਚਵੰਜਾ ਪ੍ਰਤੀਸ਼ਤ: ਸਕ੍ਰਿਪਟਾਂ ਇੰਸਟਾਲ 'ਤੇ ਚਲਦੀਆਂ ਹਨ, ਪੁਰਾਣਾ ਹੋਇਆ ਇੰਸਟਾਲ ਕਰਨ ਯੋਗ ਰਹਿੰਦਾ ਹੈ, ਦੋ-ਕਾਰਕ-ਬਾਈਪਾਸ ਟੋਕਨ ਮੌਜੂਦ ਹਨ। TanStack ਦਾ CI, ਪੰਚੀ: ਇੱਕ ਅਣ-ਆਡਿਟ ਕੀਤਾ ਪੁੱਲ ਬੇਨਤੀ ਟੀਚਾ ਵਰਕਫਲੋ ਚੱਲ ਰਿਹਾ ਹੈ ਕੈਸ਼ ਤੱਕ ਲਿਖਣ ਦੀ ਪਹੁੰਚ ਵਾਲਾ ਫੋਰਕ ਕੋਡ। ਬੰਪ ਦੀ ਆਦਤ, ਪੰਦਰਾਂ: ਤੇਰਾਂ ਅੱਪਡੇਟ ਚੌਵੀ ਮਿੰਟਾਂ ਵਿੱਚ ਮਰਜ ਕੀਤੇ ਗਏ, ਕਮਰੇ ਵਿੱਚ ਟੋਕਨ।
2:17 Dependabot, ਪੰਜ: ਇੰਨਾ ਭਰੋਸੇਮੰਦ ਕਿ ਵਾਰਮ ਇਸਦੀ ਵਰਦੀ ਪਹਿਨਦਾ ਹੈ।
git blame
2:20 ਧਮਾਕੇ ਦਾ ਘੇਰਾ: ਬਿਆਲੀ TanStack ਪੈਕੇਜ। ਬਾਈ ਡਾਊਨਸਟ੍ਰੀਮ, ਨੌਂ ਸਟਾਰ ਵਾਲੇ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਤੋਂ। ਇੱਕ ਸੌ ਸੱਠ ਤੋਂ ਵੱਧ ਈਕੋਸਿਸਟਮ-ਵਿਆਪਕ ਇੱਕ ਵਾਰ ਵਾਰਮ Mistral ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ। ਹਰ ਅੱਪਸਟ੍ਰੀਮ ਸੰਸਕਰਣ ਵਿੱਚ ਇੱਕ ਵੈਧ ਦਸਤਖਤ ਸੀ: ਅਧਿਕਾਰਤ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਪਾਈਪਲਾਈਨ। ਸੱਚ। ਫੈਸਲਾ, ਪੋਸਟਮਾਰਟਮ: SHIP IT। ਦੋਵੇਂ ਮੇਨਟੇਨਰ ਇੱਕ ਦਿਨ ਦੇ ਅੰਦਰ ਟਾਈਮਸਟੈਂਪਡ ਪੋਸਟਮਾਰਟਮ ਪੋਸਟ ਕਰਦੇ ਹਨ; ਤਿੰਨ ਦੇ ਅੰਦਰ, ਡਾਊਨਸਟ੍ਰੀਮ ਪਾਈਪਲਾਈਨ ignore-scripts ਨਾਲ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ, ਬਿਲਡ ਨੂੰ ਪਬਲਿਸ਼ ਤੋਂ ਵੱਖ ਕਰਦੀ ਹੈ, ਅਤੇ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਚੱਲਣ ਵਾਲੇ ਟੋਕਨ ਨੂੰ ਛੱਡ ਦਿੰਦੀ ਹੈ।
ਧਮਾਕੇ ਦਾ ਘੇਰਾ
2:47 npm ਦੇ ਡਿਫੌਲਟ ਨਹੀਂ ਬਦਲੇ ਹਨ। ਸੋਮਵਾਰ: ਇੰਸਟਾਲ 'ਤੇ ignore-scripts, ਅਤੇ ਪਬਲਿਸ਼ ਟੋਕਨ ਉਸ ਨੌਕਰੀ ਤੋਂ ਬਾਹਰ ਜੋ ਇਸਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਮੈਨੂੰ ਉਹ ਘਟਨਾ ਭੇਜੋ ਜਿਸ ਬਾਰੇ ਤੁਹਾਨੂੰ ਅਜੇ ਵੀ ਗੱਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ, ਟਿੱਪਣੀਆਂ ਵਿੱਚ, ਜਾਂ thedailydiff.dev 'ਤੇ। ਅਤੇ ਇਹ ਅੱਜ ਲਈ diff ਹੈ।
ਫੈਸਲਾ
3:00 ਮੈਂ Axrisi ਤੋਂ ਨਿਕੋ ਹਾਂ। ਜ਼ਿੰਮੇਵਾਰੀ ਨਾਲ ਮਰਜ ਕਰੋ।
ਸਰੋਤ
- TanStack postmortem (Tanner Linsley, May 11, refined May 15)tanstack.com
- TanStack "Hardening TanStack After the npm Compromise" (May 12)tanstack.com
- TanStack/router#7383 — the StepSecurity detection issuegithub.com
- Downstream incident post, @squawk/* (May 12)github.com
- Downstream hardening post (May 14)github.com
- The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)github.com
- @tan_stack advisory post, 21:19 UTCx.com
- StepSecurity — worm internals, bypass_2fa search, Dependabot-style branch nameswww.stepsecurity.io
- Socketsocket.dev
- Aikido — "over 160 packages, including Mistral"www.aikido.dev
- Hacker News (1,097 points)news.ycombinator.com



