ಒಂದು SBOM ನೀವು ಏನನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ. ಆದರೆ ನೀವು ಅದನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬೇಕಿತ್ತೇ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

SBOM ಎಂಬುದು ಒಂದು ರಸೀದಿಯಿದ್ದಂತೆ. ನೀವು ಏನನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದೀರಿ ಎಂದು ಅದು ನಿಮಗೆ ತಿಳಿಸುತ್ತದೆ. ಆದರೆ ಅದನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದು ಸರಿಯೇ ಅಥವಾ ತಪ್ಪೇ ಎಂದು ಅದು ಹೇಳುವುದಿಲ್ಲ.

ಹೆಚ್ಚಿನ ತಂಡಗಳು ತಮ್ಮ CI/CD ಪೈಪ್‌ಲೈನ್‌ಗಳಲ್ಲಿ SBOM ಮತ್ತು CVE ಸ್ಕ್ಯಾನ್‌ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳಲ್ಲಿನ 알려진 (known) ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಈ ಪರಿಕರಗಳು ಉತ್ತಮವಾಗಿವೆ. ಆದರೆ AI ಕೋಡಿಂಗ್ ಏಜೆಂಟ್‌ಗಳನ್ನು ಬಳಸುವಾಗ ಇವುಗಳಿಗೆ ದೊಡ್ಡ ಮಟ್ಟದ ಅಂಧಕಾರವಿದೆ (blind spot).

ಒಂದು AI ಏಜೆಂಟ್ ಪ್ಯಾಕೇಜ್ ಹೆಸರನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಆ ಹೆಸರು ನಿಜವಾಗಿದ್ದರೂ, ಅದು ಕೇವಲ ಕಲ್ಪನೆಯಾಗಿದ್ದರೂ (hallucination) ಅಥವಾ ಟೈಪೋಸ್ಕ್ವಾಟ್ (typosquat) ಆಗಿದ್ದರೂ, ಅದು ಒಂದೇ ರೀತಿಯ ಆತ್ಮವಿಶ್ವಾಸದಿಂದ ಇದನ್ನು ಮಾಡುತ್ತದೆ.

ಒಬ್ಬ ದಾಳಿಕೋರನು ನಿನ್ನೆ ಒಂದು ದುಷ್ಟ (malicious) ಪ್ಯಾಕೇಜ್ ಹೆಸರನ್ನು ನೋಂದಾಯಿಸಿದ್ದರೆ, ಅದಕ್ಕೆ ಇನ್ನೂ ಯಾವುದೇ CVE ಇರುವುದಿಲ್ಲ. ನಿಮ್ಮ ಪೋಸ್ಟ್-ಇನ್‌ಸ್ಟಾಲ್ ಸ್ಕ್ಯಾನ್ ಅದನ್ನು ನೋಡಿ 'ಕ್ಲೀನ್' ಎಂದು ಗುರುತಿಸುತ್ತದೆ. ಸ್ಕ್ಯಾನ್ ಪ್ರಾಮಾಣಿಕವಾಗಿರುತ್ತದೆ, ಆದರೆ ಅದು ತಪ್ಪು ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುತ್ತದೆ. ಅದು "ಇದು ಕೆಟ್ಟದ್ದು ಎಂದು ತಿಳಿದಿದೆಯೇ?" ಎಂದು ಉತ್ತರಿಸುತ್ತದೆಯೇ ಹೊರತು "ನಮ್ಮ ಸ್ಟ್ಯಾಕ್‌ನಲ್ಲಿ ಈ ಹೆಸರು ಇರಬೇಕೇ?" ಎಂದು ಕೇಳುವುದಿಲ್ಲ.

ಒಂದು ದುಷ್ಟ ಪ್ಯಾಕೇಜ್ ಅನ್ನು SBOM ದಾಖಲಿಸುವಷ್ಟರಲ್ಲಿ, ಹಾನಿಯು ಈಗಾಗಲೇ ಆಗಿರುತ್ತದೆ. ದುಷ್ಟ ಕೋಡ್‌ಗಳು ಹೆಚ್ಚಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಹಂತದಲ್ಲಿ postinstall ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಮೂಲಕ ಚಲಿಸುತ್ತವೆ. ನಿಮ್ಮ ಸ್ಕ್ಯಾನರ್ ಫೈಲ್ ಟ್ರೀ ಅನ್ನು ನೋಡುವ ಮೊದಲೇ, ಅವು ನಿಮ್ಮ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್‌ಗಳು (environment variables) ಮತ್ತು CI ಸೀಕ್ರೆಟ್‌ಗಳನ್ನು ಕದಿಯಬಹುದು.

ಪರಿಣಾಮ ಬರುವ ಮೊದಲೇ ನಿಮಗೆ ಒಂದು ತೀರ್ಪು (verdict) ಬೇಕು.

ಇದನ್ನು ಪರಿಹರಿಸಲು ನಾನು ಒಂದು ಸರಳ ಪರಿಕರವನ್ನು ನಿರ್ಮಿಸಿದ್ದೇನೆ. ಇದು ಒಂದು pre-install provenance gate. ಇದು ಸ್ಕ್ಯಾನರ್‌ನಿಂದ ಭಿನ್ನವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ:

• ಇದು npm install ಚಲಿಸುವ ಮೊದಲು ಹೆಸರುಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. • ಇದು ದೃಢೀಕರಿಸಲ್ಪಟ್ಟ ಬೇಸ್‌ಲೈನ್‌ಗೆ (vouched baseline) ವಿರುದ್ಧವಾಗಿ 'default-deny' ವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ. • ಇದು ಜನಪ್ರಿಯ ಪ್ಯಾಕೇಜ್‌ಗಳಿಂದ ಎಡಿಟ್ ಡಿಸ್ಟೆನ್ಸ್ (edit distance) ಅನ್ನು ಅಳೆಯುವ ಮೂಲಕ ಟೈಪೋಸ್ಕ್ವಾಟ್‌ಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ. • ಇದು ಯಾವುದೇ ತಿಳಿದಿರುವ ಉತ್ತಮ ಹೆಸರುಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗದ ಕಲ್ಪನೆಗಳನ್ನು (hallucinations) ಹಿಡಿಯುತ್ತದೆ. • ನೀವು ಯಾವುದೇ ವಿಕೃತ ರಿಜಿಸ್ಟ್ರಿಯನ್ನು (rogue registry) ಬಳಸುತ್ತಿಲ್ಲ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಇದು ನಿಮ್ಮ .npmrc ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ.

ಈ ಪರಿಕರವು ಆಫ್‌ಲೈನ್ ಆಗಿದೆ, ಕೀ-ಲೆಸ್ (keyless) ಆಗಿದೆ ಮತ್ತು ಕೇವಲ Python ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸುವುದಿಲ್ಲ. ಇದು ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ರೆಸೋಲ್ ಮಾಡುವುದಿಲ್ಲ. ಇದು ಕೇವಲ ಸೂಚಿಸಲಾದ ಹೆಸರುಗಳನ್ನು ನೋಡುತ್ತದೆ ಮತ್ತು ಕೇಳುತ್ತದೆ: "ನಾವು ಈ ಹೆಸರನ್ನು ದೃಢೀಕರಿಸುತ್ತೇವೆಯೇ?"

ಹೆಸರು ನಿಮ್ಮ ದೃಢೀಕರಿಸಲ್ಪಟ್ಟ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ನಲ್ಲಿ ಇಲ್ಲದಿದ್ದರೆ ಮತ್ತು ಜನಪ್ರಿಯ ಬೇಸ್‌ಲೈನ್‌ಗಳಲ್ಲೂ ಇಲ್ಲದಿದ್ದರೆ, ಗೇಟ್ DENY ಎಂದು ನೀಡುತ್ತದೆ.

ಏನಾಗಿದೆಯೋ ಅದರ ದಾಖಲೆಗಳ ಮೇಲೆ ಮಾತ್ರ ಅವಲಂಬಿತರಾಗುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಏನಾಗಲು ಅನುಮತಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಪ್ರಾರಂಭಿಸಿ.

ಮೂಲ: https://dev.to/alex_spinov/an-sbom-proves-what-you-installed-it-cant-prove-you-should-have-117c

ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi