Authorization Bugs ಪತ್ತೆಹಚ್ಚಲು AI ಅನ್ನು ಬಳಸುವುದು

ಬಗ್ ಬೌಂಟಿ ಕಾರ್ಯಕ್ರಮಗಳು ಬದಲಾಗುತ್ತಿವೆ. ಕೆಲವು ಕಾರ್ಯಕ್ರಮಗಳು ಬಹುಮಾನ ನೀಡುವುದನ್ನು ನಿಲ್ಲಿಸಿವೆ. ಇನ್ನು ಕೆಲವು ಪಾವತಿಗಳನ್ನು 80% ರಷ್ಟು ಕಡಿತಗೊಳಿಸಿವೆ. ಇದಕ್ಕೆ ಕಾರಣ AI ತುಂಬಾ ಹೆಚ್ಚು ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತಿರುವುದು ಎಂದಲ್ಲ. ಬದಲಾಗಿ, AI ತುಂಬಾ ಹೆಚ್ಚು ತಪ್ಪು ದೋಷಗಳನ್ನು (wrong bugs) ಪತ್ತೆಹಚ್ಚುತ್ತಿರುವುದು ಕಾರಣ. ಟ್ರಯಾಜ್ ತಂಡಗಳು ಕಳಪೆ ಗುಣಮಟ್ಟದ ವರದಿಗಳಿಂದ ಕಂಗಾಲಾಗುತ್ತಿವೆ.

ಇಂತಹ ಪರಿಸರದಲ್ಲಿ, ಅತ್ಯಂತ ಪ್ರಮುಖ ಕೌಶಲವೆಂದರೆ ದೋಷಗಳನ್ನು ಹುಡುಕುವುದು ಎಂದಲ್ಲ. ಬದಲಾಗಿ, ಒಂದು ದೋಷ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸುವುದು. ನೀವು ಸರಿಯಾದ ನಕಾರಾತ್ಮಕ ಅಂಶಗಳನ್ನು (negatives) ಕಂಡುಕೊಳ್ಳಬೇಕು.

ನಾನು ಸೋರ್ಸ್-ಅವೈಲಬಲ್ (source-available) ಗುರಿಗಳಿಗಾಗಿ ಎರಡು ಹಂತದ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತೇನೆ.

ಹಂತ 1: ಫ್ಯಾನ್-ಔಟ್ (Fan-out) ಕೋಡ್ ಅನ್ನು ಓದಲು ಅಗ್ಗದ AI ಮಾಡೆಲ್‌ಗಳನ್ನು ಬಳಸಿ. ಗುರಿಯನ್ನು ಸಣ್ಣ ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಿ. ಮುರಿದ ಇನ್ವೇರಿಯಂಟ್‌ಗಳನ್ನು (broken invariants) ಹುಡುಕಲು ಮಾಡೆಲ್‌ಗೆ ಕೇಳಿ. ಒಬ್ಜೆಕ್ಟ್ ಯಾವುದೇ ಓನರ್ ಚೆಕ್ ಇಲ್ಲದೆ ಲೋಡ್ ಆಗುವ ಅಥವಾ ಸೆಕ್ಯೂರಿಟಿ ಗೇಟ್ ಅನ್ನು ಬಿಟ್ಟುಹೋಗುವ ಸ್ಥಳಗಳನ್ನು ಹುಡುಕಿ. ಹೆಚ್ಚಿನ ರಿಕಾಲ್ (high recall) ಗುರಿಯಾಗಿಟ್ಟುಕೊಳ್ಳಿ. ಅನೇಕ ತಪ್ಪುಗಳಾಗಬಹುದು ಎಂದು ನಿರೀಕ್ಷಿಸಿ.

ಹಂತ 2: ಅಡ್ವರ್ಸರಿಯಲ್ ವೆರಿಫಿಕೇಶನ್ (Adversarial Verification) ಅಭ್ಯರ್ಥಿ ದೋಷಗಳನ್ನು (candidates) ತಳ್ಳಿಹಾಕಲು ದುಬಾರಿ, ಹೆಚ್ಚಿನ ತರ್ಕಬದ್ಧ ಸಾಮರ್ಥ್ಯವಿರುವ (high-reasoning) ಮಾಡೆಲ್ ಅನ್ನು ಬಳಸಿ. ಪ್ರತಿಯೊಂದು ಅಭ್ಯರ್ಥಿಯೂ ತಪ್ಪು ಎಂದು ಭಾವಿಸಿ. ನೀವು ನಿರ್ದಿಷ್ಟ ಕೋಡ್ ಸಾಲುಗಳನ್ನು ಉಲ್ಲೇಖಿಸಿದರೆ ಮಾತ್ರ ಆ ಅಭ್ಯರ್ಥಿ ಉಳಿಯುತ್ತದೆ. ಆ ಪಾತ್ (path) ತಲುಪಲು ಸಾಧ್ಯವಿದೆ ಮತ್ತು ಬೇರೆ ಯಾವುದೇ ಚೆಕ್ ಅದನ್ನು ತಡೆಯುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ನೀವು ಸಾಬೀತುಪಡಿಸಬೇಕು.

ಅತ್ಯಂತ ಮೌಲ್ಯಯುತವಾದ ಫಲಿತಾಂಶವೆಂದರೆ ಖಂಡನೆಗಳ (refutations) ಪಟ್ಟಿ. ಈ ಪಟ್ಟಿಯು ಟ್ರಯಾಜರ್‌ಗಳೊಂದಿಗೆ ನಂಬಿಕೆಯನ್ನು ಬೆಳೆಸುತ್ತದೆ.

ನಾನು ಓಪನ್-ಸೋರ್ಸ್ ಐಡೆಂಟಿಟಿ ಸರ್ವರ್ ಆದ Ory Kratos ಅನ್ನು ಪರೀಕ್ಷಿಸಿದೆ. ನಾನು ಸೆಟ್ಟಿಂಗ್ಸ್ ಫ್ಲೋ ಅನ್ನು ಗಮನಿಸಿದೆ. ಈ ಪ್ರದೇಶವು ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾವಣೆ ಮತ್ತು ಇಮೇಲ್ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಇಲ್ಲಿನ ಒಂದು ಸಣ್ಣ ತಪ್ಪು ಅಕೌಂಟ್ ಟೇಕ್ ಓವರ್‌ಗೆ (account takeover) ಕಾರಣವಾಗಬಹುದು.

ಮೊದಲ ಹಂತವು ಒಂದು ಆಕರ್ಷಕ ದೋಷವನ್ನು ಪತ್ತೆಹಚ್ಚಿತು. OIDC ಸ್ಟ್ರಾಟಜಿಯಲ್ಲಿ, ಒಂದು ನಿರ್ದಿಷ್ಟ ಕಂಟೇನರ್ ಐಡೆಂಟಿಟಿ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ. ನೀವು ಕೇವಲ ಮಿಸ್ಸಿಂಗ್ ಚೆಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕುತ್ತಿದ್ದರೆ, ಇದನ್ನು ನೀವು ಹೆಚ್ಚಿನ ತೀವ್ರತೆಯ (high-severity) ದೋಷ ಎಂದು ವರದಿ ಮಾಡುತ್ತೀರಿ.

ಅದು ತಪ್ಪಾಗುತ್ತಿತ್ತು.

ಆ ಮಿಸ್ಸಿಂಗ್ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳಲು (exploitable) ಸಾಧ್ಯವಿಲ್ಲ. ಸಿಸ್ಟಮ್ ಲೈವ್ ಸೆಷನ್ ಕುಕೀ ಅಥವಾ ಸಹಿ ಮಾಡಲಾದ ಟೋಕನ್‌ನಿಂದ ಟಾರ್ಗೆಟ್ ಐಡೆಂಟಿಟಿಯನ್ನು ಪಡೆಯುತ್ತದೆ. ಕಂಟೇನರ್ ಟ್ರೇಟ್ಸ್‌ಗಳು (container traits) ಎಂದಿಗೂ ಅಸಲಿ ರೈಟ್ ಟಾರ್ಗೆಟ್‌ಗೆ ಅನ್ವಯಿಸುವುದಿಲ್ಲ. ವಿನ್ಯಾಸವು ಸರಿಯಾಗಿದೆ.

ಇದನ್ನು ವರದಿ ಮಾಡುವುದು ಸಮಯ ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಕುಗ್ಗಿಸುತ್ತದೆ. ನಾನು ನೀಡಿದ ಮೌಲ್ಯವೆಂದರೆ ವರದಿ ಸಲ್ಲಿಸದಿರಲು ಬೇಕಾದ ಆತ್ಮವಿಶ್ವಾಸ.

ನಾನು ಇದೇ ವಿಧಾನವನ್ನು ಬೇರೆ ಗುರಿಯ ಮೇಲೆ ಬಳಸಿದಾಗ, ನೈಜ ದೋಷವನ್ನು ಪತ್ತೆಹಚ್ಚಿದೆ. ಮುಖ್ಯ ಪಾತ್ ಅನುಸರಿಸುವ ಅಧಿಕಾರೀಕರಣ ಚೆಕ್ ಅನ್ನು (authorization check) ಒಂದು ಪರ್ಯಾಯ ಎಂಟ್ರಿ ಪಾಯಿಂಟ್ ತಪ್ಪಿಸಿತ್ತು. ರವೋಕ್ ಮಾಡಲಾದ (revoked) ಬಳಕೆದಾರರು ಇನ್ನೂ ಸೈಡ್ ಡೋರ್ ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದು. ಈ ದೋಷವು ಹೆಚ್ಚಿನ ಪರಿಣಾಮವನ್ನು ಹೊಂದಿತ್ತು ಮತ್ತು ಸಾಮಾನ್ಯ ಸ್ಕ್ಯಾನರ್‌ಗಳಿಗೆ ಕಾಣಿಸಲಿಲ್ಲ.

ಗೇಟ್‌ಕೀಪರ್‌ಗಳು ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ವರದಿಗಳ ವಿರುದ್ಧ ಗೋಡೆಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದಾರೆ. ಯಶಸ್ವಿಯಾಗಲು, ನಿಮ್ಮ AI ಕೆಲಸವು ಕಟ್ಟುನಿಟ್ಟಾಗಿರಬೇಕು. ಮನುಷ್ಯರಿಗಿಂತ ಹೆಚ್ಚಿನ ಕೋಡ್ ಅನ್ನು ಓದಲು AI ಬಳಸಿ. ನಂತರ ವರದಿ ಸಲ್ಲಿಸುವ ಮೊದಲು ನೀವು ತಪ್ಪು ಎಂದು ಸಾಬೀತುಪಡಿಸಲು AI ಬಳಸಿ.

ಪ್ರಮಾಣಕ್ಕಲ್ಲ (volume), ಸಿಗ್ನಲ್‌ಗೆ (signal) ಗಮನ ಕೊಡಿ.

Source: https://dev.to/fdjedkdlsspec/using-ai-to-find-authorization-bugs-and-to-prove-the-ones-that-arent-real-3m7d