ΠΠ°Π±Π΅Π»ΡΠ·Π°Π½Π° Π΅ Π²ΡΠΎΡΠ° Π°ΡΠ°ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ NPM, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ°ΠΌΠΎΡΠ°Π·ΠΏΠΎΡΡΡΠ°Π½ΡΠ²Π°ΡΠΈΡ ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΠΉ Shai-Hulud, ΠΊΠΎΠΉΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π° Π·Π»ΠΎΠ²ΡΠ΅Π΄Π΅Π½ ΡΠΎΡΡΡΠ΅Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Π·Π»ΠΎΠ²ΡΠ΅Π΄Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° 605 ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΡΠΎ ΠΈΠΌΠ°Ρ Π½Π°Π΄ 100 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ.
ΠΠ° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π»ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΡΠΈΠ½Π³ ΡΠ° ΡΡΠΏΠ΅Π»ΠΈ Π΄Π° ΠΏΡΠΈΡ Π²Π°Π½Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΊΠ°ΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ΅ ΠΎΡ ΠΏΡΠΈΡ Π²Π°Π½Π°ΡΠΈΡ Π°ΠΊΠ°ΡΠ½Ρ, Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°, Π² ΠΊΠΎΡΡΠΎ Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΠΎΠ΄ Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅. ΠΠ°ΠΏΡΡΠ½Π°ΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΠΉ ΡΡΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ΅Π΄Π°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠ΅Π³Π»Ρ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° TruffleHog.
ΠΠΊΠΎ Π±ΡΠ΄Π΅ ΠΎΡΠΊΡΠΈΡ ΡΠΎΠΊΠ΅Π½ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ NPM, ΡΠ΅ΡΠ²Π΅ΠΉΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π½ΠΎΠ²ΠΈ Π·Π»ΠΎΠ²ΡΠ΅Π΄Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ΅Π΄Π°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ Π²Π΅ΡΠΈΠ³Π°ΡΠ° ΡΠ΅ Π·Π°ΡΠ°Π·ΡΠ²Π°Ρ. ΠΡΠ²Π΅Π½ ΡΠΎΠΊΠ΅Π½Π° Π½Π° NPM, ΡΠ΅ΡΠ²Π΅ΠΉΡΡ Π·Π°ΠΏΠ°Π·Π²Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ GitHub ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ AWS, Azure ΠΈ GCP (Google Cloud Platform), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ ΡΠΊΠ΅Π½Π΅ΡΡΡ TruffleHog.
ΠΡΠΊΡΠΈΡΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π² GitHub ΡΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠΌΠ΅Π½Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ βqzx15djl71alh6p80hβ) ΠΈ ΡΡΠ°Π·Π°ΡΠ° βSha1-Hulud: The Second Comingβ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π² ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π° ΡΠΎΡΠΌΠ° ΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° GitHub Actions. Π ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈ ΡΠ°ΠΉΠ» Π² JSON ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ jsonactionsSecrets.json ΠΈΠ»ΠΈ contents.json), Π² ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΡΡΡΡΠ²Π° ΡΡΡΠΎΠΊΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈ ΠΏΡΠΈΡ Π²Π°Π½Π°ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° base64. ΠΠ° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·Π²ΡΠ½ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° GitHub, ΡΠ΅ΡΠ²Π΅ΠΉΡΡ ΡΡΠ·Π΄Π°Π²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° GitHub Actions Ρ ΠΈΠΌΠ΅ΡΠΎ β.github/workflows/formatter_123456789.ymlβ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° runner Ρ ΠΈΠΌΠ΅ΡΠΎ SHA1HULUD.
Π Π°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°ΡΠ° Π°ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π· ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π°Ρ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ²ΡΠ΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°. Π Π·Π»ΠΎΠ²ΡΠ΅Π΄Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ΅ Π·Π°ΡΠ²ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° JavaScript Bun. Π ΡΠ°ΠΉΠ»Π° package.json Π² ΡΠ΅ΠΊΡΠΈΡ βpreinstallβ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΡΠ΅Π΄ΠΈ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ°, ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° βnode setup_bun.jsβ.

Π ΡΠ°ΠΉΠ»Π° βsetup_bun.jsβ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΡΡΠΊΠΈΡΠ°Π½ ΡΠΊΡΠΈΠΏΡ βbun_environment.jsβ, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΊΠΎΠ΄ Π½Π° ΡΠ΅ΡΠ²Π΅ΠΉ. ΠΠ° Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΡΠ΅ΡΠ²Π΅ΠΉΡΡ Π½Π°ΠΌΠΈΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° package.json (ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° setup_bun.js), Π΄ΠΎΠ±Π°Π²Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ setup_bun.js ΠΈ bun_environment.js, ΠΏΡΠ΅ΠΎΠΏΠ°ΠΊΠΎΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βnpm publishβ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ.
Π‘ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ: @zapier/zapier-sdk (2.8 ΠΌΠ»Π½. ΡΠ²Π°Π»ΡΠ½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ°), @posthog/core (2.8 ΠΌΠ»Π½.), posthog-node (1.5 ΠΌΠ»Π½.), @asyncapi/specs (1.4 ΠΌΠ»Π½.), @postman/tunnel-agent (1.2 ΠΌΠ»Π½.). ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ Π°ΡΠ°ΠΊΠ°ΡΠ° Π΅ Π·Π°ΠΏΠΎΡΠ½Π°Π»Π° Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ @asyncapi/specs.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
