ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π° Π²ΡΠΎΡΠ°Ρ Π°ΡΠ°ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ 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
