Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π° Π΅ Π²ΡΠΎΡΠ° Π°ΡΠ°ΠΊΠ° ΡΡΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ 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), Π² ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΡΡΡΡΠ²Π° ΡΡΡΠΈΠ½Π³ Ρ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈ ΠΏΡΠΈΡ Π²Π°Π½Π°ΡΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·Π²ΡΠ½ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° 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
