𝗦𝘁𝗼𝗽 𝗧𝗿𝘂𝘀𝘁𝗶𝗻𝗴 𝗧𝗵𝗲 𝗔𝗴𝗲𝗻𝘁: ಅನುಮೋದನೆಗಳನ್ನು ನಿಖರವಾದ ಟೂಲ್ ಕಾಲ್ಗಳಿಗೆ (Tool Calls) ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಜೋಡಿಸಿ
ಹೆಚ್ಚಿನ ಏಜೆಂಟಿಕ್ ಸಿಸ್ಟಮ್ಗಳು (agentic systems) ಫೈಲ್ ಬರೆಯುವುದು ಅಥವಾ ಹಣ ವರ್ಗಾವಣೆ ಮಾಡುವಂತಹ ಅಪಾಯಕಾರಿ ಕ್ರಮಗಳನ್ನು ಕೇವಲ ಒಂದು ಸರಳ ಅನುಮೋದನೆಯ ಮೂಲಕ ರಕ್ಷಿಸುತ್ತವೆ.
ಸಾಮಾನ್ಯವಾಗಿ, ಈ ಅನುಮೋದನೆಯು ಸಿಸ್ಟಮ್ ಸ್ಟೇಟ್ನಲ್ಲಿರುವ ಒಂದು ಬೂಲಿಯನ್ ಫ್ಲಾಗ್ (boolean flag) ಆಗಿರುತ್ತದೆ.
ಉದಾಹರಣೆಗೆ: approved: true.
ಇದು ಒಂದು ತಪ್ಪು. ಬೂಲಿಯನ್ ವಿಧಾನವು ದಾಳಿಕೋರರು ಬಳಸಿಕೊಳ್ಳಬಹುದಾದ ಮೂರು ರೀತಿಯಲ್ಲಿ ವಿಫಲವಾಗುತ್ತದೆ:
- ಫ್ಲಿಪ್ (Flip): ಪ್ರಾಂಪ್ಟ್ ಇಂಜೆಕ್ಷನ್ (prompt injection) ಅಥವಾ ಕೋಡ್ ದೋಷಗಳ ಮೂಲಕ ದಾಳಿಕೋರರು ಸ್ಟೇಟ್ ಅನ್ನು 'false' ನಿಂದ 'true' ಗೆ ಬದಲಾಯಿಸಬಹುದು.
- ರಿಪ್ಲೇ (Replay): ನೀವು "read file" ನಂತಹ ಸುರಕ್ಷಿತ ಕಮಾಂಡ್ ಅನ್ನು ಅನುಮೋದಿಸುತ್ತೀರಿ. ಸಿಸ್ಟಮ್ "true" ಅನ್ನು ನೋಡಿ, ನಂತರ "delete database" ನಂತಹ ಎರಡನೇ ಅಪಾಯಕಾರಿ ಕಮಾಂಡ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
- ಆರ್ಗ್ಯುಮೆಂಟ್ ಡ್ರಿಫ್ಟ್ (Argument Drift): ನೀವು "$10 ಕಳುಹಿಸಿ" ಎಂದು ಅನುಮೋದಿಸುತ್ತೀರಿ. ದಾಳಿಕೋರರು ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು ಮೊತ್ತವನ್ನು $10,000 ಕ್ಕೆ ಬದಲಾಯಿಸುತ್ತಾರೆ. ಆದರೂ ಫ್ಲಾಗ್ "true" ಎಂದೇ ಇರುತ್ತದೆ.
ಸಮಸ್ಯೆ ಏನೆಂದರೆ, ನೀವು ಅನುಮೋದನೆಯನ್ನು ಇಡೀ ಸೆಷನ್ನ (session) ಒಂದು ಗುಣಲಕ್ಷಣವಾಗಿ ಪರಿಗಣಿಸುತ್ತಿದ್ದೀರಿ. ಬದಲಾಗಿ, ಅದು ಒಂದು ನಿರ್ದಿಷ್ಟ ಕಾಲ್ಗೆ (call) ಸಾಕ್ಷಿಯಾಗಿರಬೇಕು.
ಇದನ್ನು ಸರಿಪಡಿಸುವುದು ಹೇಗೆ:
ಮನುಷ್ಯನು ಒಂದು ಕಾಲ್ ಅನ್ನು ಅನುಮೋದಿಸಿದಾಗ, ಒಂದು ಸುರಕ್ಷಿತ ಟ್ಯಾಗ್ (secure tag) ಅನ್ನು ರಚಿಸಿ. ಈ ಟ್ಯಾಗ್ ಈ ನಾಲ್ಕು ವಿಷಯಗಳನ್ನು ಲಾಕ್ ಮಾಡಬೇಕು:
- ವಿಶಿಷ್ಟವಾದ ಟೂಲ್ ಕಾಲ್ ಐಡಿ (unique tool call ID).
- ನಿಖರವಾದ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳ ಹ್ಯಾಶ್ (hash).
- ಬಳಕೆದಾರರ ಗುರುತು (user identity).
- ಅವಧಿ ಮುಕ್ತಾಯದ ಸಮಯ (expiration time).
ಕಾರ್ಯಗತಗೊಳಿಸುವ ನಿಖರ ಕ್ಷಣದಲ್ಲಿ ಈ ಟ್ಯಾಗ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ಸಿಸ್ಟಮ್ಗೆ ಮಾತ್ರ ತಿಳಿದಿರುವ ಸೀಕ್ರೆಟ್ ಕೀ (secret key) ಅನ್ನು ಬಳಸಿ.
ಅನುಷ್ಠಾನಕ್ಕಾಗಿ (implementation) ಈ ನಿಯಮಗಳನ್ನು ಪಾಲಿಸಿ:
- ಕೆನಾನಿಕಲೈಸೇಶನ್ (Canonicalization) ಬಳಸಿ: ಅನುಮೋದಿಸುವವರು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವವರು ಇಬ್ಬರೂ ನಿಖರವಾದ ಒಂದೇ ಬೈಟ್ಗಳನ್ನು ಹ್ಯಾಶ್ ಮಾಡಬೇಕು. ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಕೀಗಳು ಹೊಂದಿಕೆಯಾಗುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು RFC 8785 ಬಳಸಿ.
- ಫೇಲ್ ಕ್ಲೋಸ್ಡ್ (Fail Closed): ಟ್ಯಾಗ್ ಇಲ್ಲದಿದ್ದರೆ, ಅವಧಿ ಮುಗಿದಿದ್ದರೆ ಅಥವಾ ತಪ್ಪಾಗಿದ್ದರೆ, ನಿರ್ದಿಷ್ಟವಾದ "not approved" ಎರರ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ. ಅದನ್ನು ಸಾಮಾನ್ಯ ಟೂಲ್ ರಿಸಲ್ಟ್ ಎಂದು ಪರಿಗಣಿಸಬೇಡಿ.
- ಡಿಫಾಲ್ಟ್ನಿಂದ ನಿರಾಕರಿಸಿ (Deny by Default): ಸ್ಪಷ್ಟವಾದ ಅನುಮೋದನೆಯ ಅಗತ್ಯವಿರುವ ಟೂಲ್ಗಳನ್ನು ಮಾತ್ರ ಅನುಮತಿಸಿ. ಉಳಿದೆಲ್ಲವನ್ನೂ ನಿರಾಕರಿಸಿ.
- ರಿಪ್ಲೇಗಳನ್ನು ನಿರ್ವಹಿಸಿ (Handle Replays): ನೀವು Temporal ನಂತಹ ಎಂಜಿನ್ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ನಿಮ್ಮ ಸೀಕ್ರೆಟ್ ಕೀ ಡಿಟರ್ಮಿನಿಸ್ಟಿಕ್ (deterministic) ಆಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಸಿಸ್ಟಮ್ ರೀಸ್ಟಾರ್ಟ್ ಆದ ನಂತರ ಕೀ ಬದಲಾದರೆ, ಎಲ್ಲಾ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಅನುಮೋದನೆಗಳು ವಿಫಲವಾಗುತ್ತವೆ.
ಅಧಿಕಾರೀಕರಣವು (Authorization) ಕೇವಲ ಒಂದು ಅಸ್ಥಿರ ಸ್ಟೇಟ್ ಆಗಿರಬಾರದು. ಅದು ಈ ಕೆಳಗಿನದ್ದನ್ನು ಸಾಬೀತುಪಡಿಸುವ ಒಂದು ಬೌಂಡ್ ಎನ್ವೆಲಪ್ (bound envelope) ಆಗಿರಬೇಕು: "ಈ ನಿರ್ದಿಷ್ಟ ವ್ಯಕ್ತಿಯು ಈ ನಿರ್ದಿಷ್ಟ ಟೂಲ್ಗಾಗಿ, ಈ ನಿರ್ದಿಷ್ಟ ಸಮಯದವರೆಗೆ, ಈ ನಿರ್ದಿಷ್ಟ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಅನುಮೋದಿಸಿದ್ದಾರೆ."
ಬೂಲಿಯನ್ಗಳನ್ನು ಬಳಸುವುದು ನಿಲ್ಲಿಸಿ. ಅವು ಸರಳೀಕರಣವಲ್ಲ. ಅವು ಒಂದು ಬಗ್ (bug).
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi