ನೀವು ಪರಿಶೀಲಿಸಿದ ವಿಷಯವು ಚಾಲನೆಯಲ್ಲಿರುವ ವಿಷಯವಲ್ಲ
ಇತ್ತೀಚೆಗೆ ಒಂದು ಹೊಸ ಸಾಧನವು ಗಮನ ಸೆಳೆದಿದೆ. ಇದು curl ನಂತಹ ಕಮಾಂಡ್ಗಳ ಮುಂದೆ ಕುಳಿತು, ಸ್ಕ್ರಿಪ್ಟ್ ಚಾಲನೆಯಾಗುವ ಮೊದಲು ಅದನ್ನು ನಿಮಗೆ ತೋರಿಸುತ್ತದೆ. ಇದು ಅಪಾಯಕಾರಿ ಭಾಗಗಳನ್ನು ಎತ್ತಿ ತೋರಿಸುತ್ತದೆ. ಈ ಸಾಧನವು ಸಹಕಾರಿಯಾಗಿದೆ, ಆದರೆ ಇದು ಮೂಲ ಸಮಸ್ಯೆಯನ್ನು ಗಮನಿಸುವುದಿಲ್ಲ.
ಸಮಸ್ಯೆ ಎಂದರೆ ಬೈಟ್ಗಳು (bytes) ದುರುದ್ದೇಶಪೂರಿತವಾಗಿ ಕಾಣಿಸುತ್ತವೆಯೇ ಎಂದಲ್ಲ. ಸಮಸ್ಯೆ ಏನೆಂದರೆ, ಒಂದು URL ಇಂದು ಒಂದು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಮತ್ತು ನಾಳೆ ಬೇರೆ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನೀಡಬಹುದು. ನಿಮ್ಮ ಪರಿಶೀಲನೆಯು ಕೇವಲ ಒಂದು ನಿರ್ದಿಷ್ಟ ಕ್ಷಣಕ್ಕೆ ಮಾತ್ರ ಅನ್ವಯಿಸುತ್ತದೆ.
ಸಿಸ್ಟಮ್ ತಜ್ಞರು ಇದನ್ನು TOCTOU ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಇದರ ಅರ್ಥ 'time-of-check to time-of-use'. ನೀವು ಒಂದು ಫೈಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತೀರಿ, ನಂತರ ನೀವು ಅದನ್ನು ತೆರೆಯುವ ಮೊದಲು ಯಾರೋ ಅದನ್ನು ಬದಲಾಯಿಸುತ್ತಾರೆ. ನಿಮ್ಮ ಪರಿಶೀಲನೆಯು ಸರಿಯಾಗಿತ್ತು, ಆದರೆ ಅದು ಈಗ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ವಸ್ತುವಿನ ಬಗ್ಗೆ ಸರಿಯಾಗಿತ್ತು.
AI ಏಜೆಂಟ್ಗಳು ಈ ಅಪಾಯವನ್ನು ಮತ್ತಷ್ಟು ಹೆಚ್ಚಿಸುತ್ತವೆ. ಏಜೆಂಟ್ಗಳು ನಿರಂತರವಾಗಿ ಪರಿಶೀಲನೆಗಳನ್ನು ಮಾಡುತ್ತವೆ.
- ಏಜೆಂಟ್ ಒಂದು URL ಅನ್ನು ಪಿಂಗ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಯಶಸ್ವಿ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಸುರಕ್ಷತೆಯ ಸಂಕೇತವೆಂದು ಪರಿಗಣಿಸುತ್ತದೆ.
- ಏಜೆಂಟ್ ಒಂದು ಪ್ರೊಫೈಲ್ ಅನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಒಂದು ಘೋಷಣೆಯನ್ನು ಸತ್ಯವೆಂದು ಪರಿಗಣಿಸುತ್ತದೆ.
- ಏಜೆಂಟ್ ಒಂದು ಸಹಿಯನ್ನು (signature) ನೋಡುತ್ತದೆ ಮತ್ತು ಅದು ಚಾಲನೆ ಮಾಡಲಿರುವ ನಿಖರವಾದ ಬೈಟ್ಗಳು ಸಹಿ ಮಾಡಲ್ಪಟ್ಟವು ಎಂದು ಭಾವಿಸುತ್ತದೆ.
ಪ್ರತಿ ಪರಿಶೀಲನೆಯು ಒಂದು ಕ್ಷಣ ಅಥವಾ ಒಂದು ಚಾನಲ್ಗೆ ನಂಬಿಕೆಯನ್ನು ನೀಡುತ್ತದೆ. ನಂತರ ಏಜೆಂಟ್ ಆ ಪರಿಶೀಲನೆಯು ಎಂದಿಗೂ ಒಳಗೊಂಡಿರದ ಮುಂದಿನ ಹಂತದ (downstream) ವಿಷಯದ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಉದಾಹರಣೆಗೆ, ಏಜೆಂಟ್ ಒಂದು ಟೂಲ್ ಮ್ಯಾನಿಫೆಸ್ಟ್ ಅನ್ನು (tool manifest) ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಬಹುದು ಮತ್ತು ಅದರ ಫಲಿತಾಂಶವನ್ನು ಕ್ಯಾಶ್ (cache) ಮಾಡಬಹುದು. ಏಜೆಂಟ್ ಟೂಲ್ ಅನ್ನು ಕರೆಯುವ ಮೊದಲು ಎಂಡ್ಪಾಯಿಂಟ್ ಬದಲಾದರೆ, ಏಜೆಂಟ್ ತಪ್ಪಾದ ಆವೃತ್ತಿಯನ್ನು ಚಲಾಯಿಸುತ್ತದೆ. ವ್ಯಾಲಿಡೇಶನ್ ಯಶಸ್ವಿಯಾಯಿತು, ಆದರೆ ಅದು ಏಜೆಂಟ್ ಈಗ ಬಳಸದ ಮ್ಯಾನಿಫೆಸ್ಟ್ಗಾಗಿ ಯಶಸ್ವಿಯಾಯಿತು.
ಇದನ್ನು ಕಠಿಣವಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡುವ ಮೂಲಕ ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸುವುದು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ಹೆಚ್ಚಿನ ನಿಯಮಗಳು ಕೇವಲ ಸಮಯದ ವಿಂಡೋವನ್ನು (window) ಕಿರಿದಾಗಿಸುತ್ತವೆ ಅಷ್ಟೆ, ಅದನ್ನು ಮುಚ್ಚುವುದಿಲ್ಲ. ನಿಮ್ಮ ಸ್ಕ್ಯಾನ್ ಮತ್ತು ಚಾಲನೆಯ ನಡುವಿನ ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ ಉತ್ಪಾದಕರು (producer) ಇನ್ನೂ ವಿಭಿನ್ನ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ನೀಡಬಹುದು.
ಇದನ್ನು ಸರಿಪಡಿಸಲು, ಕ್ಷಣವನ್ನು ಪರಿಶೀಲಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಪ್ರಾರಂಭಿಸಿ.
ನಿಮ್ಮ ನಿರ್ಧಾರಗಳನ್ನು 'fetch' ಗೆ ಬದಲಾಗಿ ಒಂದು ಅಬಾಧಿತ (immutable) ಆಬ್ಜೆಕ್ಟ್ಗೆ ಕಟ್ಟುಹಾಕಿ.
- URL ಅನ್ನು ಅನುಮೋದಿಸಬೇಡಿ.
- ನಿರ್ದಿಷ್ಟ ಕಂಟೆಂಟ್ ಹ್ಯಾಶ್ ಅನ್ನು ಅನುಮೋದಿಸಿ.
- ಅದಕ್ಕಿಂತ ಉತ್ತಮವಾಗಿ, ವಿಶ್ವಾಸಾರ್ಹ ಕೀ (trusted key) ಸಹಿ ಮಾಡಿದ ಹ್ಯಾಶ್ ಅನ್ನು ಅನುಮೋದಿಸಿ.
ಇದು ಪ್ರಶ್ನೆಯನ್ನು "ಈ ಪಠ್ಯವು ಭಯಾನಕವಾಗಿದೆಯೇ?" ಎಂಬುದರಿಂದ "ಇದು ಕೀ (key) ಖಾತರಿಪಡಿಸಿದ ನಿಖರವಾದ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಆಗಿದೆಯೇ?" ಎಂಬುದಕ್ಕೆ ಬದಲಾಯಿಸುತ್ತದೆ. ಹ್ಯಾಶ್ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ, ನೀವು ಅದನ್ನು ನಿರಾಕರಿಸುತ್ತೀರಿ. ಅಲ್ಲಿ ಯಾವುದೇ ಚರ್ಚೆಯಿಲ್ಲ.
ಈ ವಿಧಾನವು ಪರಿಶೀಲನೆಯನ್ನು ಪೋರ್ಟಬಲ್ (portable) ಮಾಡುತ್ತದೆ. ಮೂರನೇ ವ್ಯಕ್ತಿಯು ಫಲಿತಾಂಶವನ್ನು ಸ್ವತಃ ಪರಿೀಲಿಸಲು ಅದೇ ಹ್ಯಾಶ್ ಮತ್ತು ಸಹಿಯನ್ನು ಬಳಸಬಹುದು. ಇದು ಆಬ್ಜೆಕ್ಟ್ನ ಗುಣಲಕ್ಷಣ
- ಪರಿಶೀಲನೆಯು ಬಳಸಲಾದ ನಿಖರವಾದ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗೆ ಸಂಬಂಧಿಸಿದೆಯೇ, ಅಥವಾ ಒಂದು ಕ್ಷಣ ಮತ್ತು ಒಂದು ಭರವಸೆಗೆ ಸಂಬಂಧಿಸಿದೆಯೇ?
- ಒಬ್ಬ ಅಪರಿಚಿತ ವ್ಯಕ್ತಿಯು ಅದೇ ಪರಿಶೀಲನೆಯನ್ನು ಮರು-ಚಾಲನೆ ಮಾಡಿ ಅದೇ ತೀರ್ಮಾನಕ್ಕೆ ಬರಲು ಸಾಧ್ಯವೇ?
ಮೊದಲನೆಯದಕ್ಕೆ ಉತ್ತರ 'ಒಂದು ಕ್ಷಣ' ಎಂದಾದರೆ, ಆ ಪರಿಶೀಲನೆಗೆ ಅವಧಿ ಮುಕ್ತಾಯದ ದಿನಾಂಕವಿರುತ್ತದೆ. ಎರಡನೆಯದಕ್ಕೆ ಉತ್ತರ 'ಇಲ್ಲ' ಎಂದಾದರೆ, ನಿಮ್ಮ ಬಳಿ ದೃಢೀಕರಣವಿಲ್ಲ ಎಂದರ್ಥ. ನಿಮ್ಮ ಬಳಿ ಕೇವಲ ಸಾಕ್ಷ್ಯವಷ್ಟೇ ಇದೆ.
ಪ್ರಸ್ತುತ ಇರುವ ಹೆಚ್ಚಿನ ಏಜೆಂಟ್ ದೃಢೀಕರಣಗಳು ಕೇವಲ ಸಾಕ್ಷ್ಯಗಳಾಗಿವೆ. "ಹ್ಯಾಂಡ್ಶೇಕ್ ಯಶಸ್ವಿಯಾಯಿತು" ಅಥವಾ "ಸ್ಕ್ಯಾನ್ ಸ್ವಚ್ಛವಾಗಿತ್ತು" ಎಂಬುದು ಒಂದು ಕ್ಷಣದ ಬಗ್ಗೆ ಹೇಳುವ ಸತ್ಯ ಹೇಳಿಕೆಗಳೇ ಹೊರತು, ಅವು ವಾಸ್ತವವಾಗಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಬೈಟ್ಗಳಿಗೆ (bytes) ಸಂಬಂಧಿಸಿರುವುದಿಲ್ಲ.
ಏಜೆಂಟ್ಗಳು ಮಾನವ ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದೆ ಸಾವಿರಾರು ಬಾರಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. ನೀವು ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗಳ ಮೇಲೆ ನಂಬಿಕೆಯನ್ನು ಸ್ಥಿರಗೊಳಿಸದಿದ್ದರೆ, ಇಡೀ ಸರಪಳಿಯು ಅತ್ಯಂತ ದುರ್ಬಲವಾದ ಮತ್ತು ಹಳೆಯದಾದ ಪರಿಶೀಲನೆಯನ್ನೇ ಅಳವಡಿಸಿಕೊಳ್ಳುತ್ತದೆ.
ಇದನ್ನು ಸರಿಪಡಿಸಲು ನಿಮಗೆ ಹೊಸ ತಂತ್ರಜ್ಞಾನದ ಅಗತ್ಯವಿಲ್ಲ. ಕಂಟೆಂಟ್ ಅಡ್ರೆಸಿಂಗ್ ಮತ್ತು ಡಿಜಿಟಲ್ ಸಹಿಗಳು ದಶಕಗಳಷ್ಟು ಹಳೆಯದಾಗಿವೆ. ನೀವು ಅವುಗಳನ್ನು ಕೇವಲ ಸರಿಯಾದ ವಿಷಯದತ್ತ ನಿರ್ದೇಶಿಸಬೇಕಷ್ಟೇ: ಅವುಗಳನ್ನು ಪಡೆತ ವಿನಂತಿಯನ್ನಲ್ಲ, ಬದಲಾಗಿ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ನಿಖರವಾದ ಬೈಟ್ಗಳನ್ನು (bytes).
ನೀವು ಒಂದು ಪರಿಶೀಲನೆಯನ್ನು ನಂಬುವ ಮೊದಲು, ಅದು ಯಾವುದಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಿ. ಅದು ಕೇವಲ ಒಂದು ಕ್ಷಣಕ್ಕೆ ಸಂಬಂಧಿಸಿದ್ದರೆ, ಅದರ ಅವಧಿ ಈಗಾಗಲೇ ಮುಗಿದಿದೆ ಎಂದರ್ಥ.
ಮೂಲ: https://dev.to/anp2network/the-thing-you-verified-is-not-the-thing-that-runs-hnl
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi