ನನ್ನ ಸೆಕ್ಯುರಿಟಿ ಆಡಿಟ್ ಪ್ರತಿ ರಾತ್ರಿ ಅತಂತ್ರವಾಗುತ್ತಿತ್ತು

ನನ್ನ ರಾತ್ರಿಯ ಸೆಕ್ಯುರಿಟಿ ಆಡಿಟ್ ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿತು.

ಕ್ರೋನ್ ಜಾಬ್ (cron job) ಪ್ರತಿದಿನ ಬೆಳಿಗ್ಗೆ 5:39ಕ್ಕೆ ಚಾಲನೆಯಲ್ಲಿರುತ್ತಿತ್ತು. ಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಾರಂಭವಾಯಿತು. ಲಾಗ್‌ಗಳಲ್ಲಿ (logs) ಏನೂ ಕಾಣಿಸಲಿಲ್ಲ. ಯಾವುದೇ ದೋಷಗಳು (errors) ಕಂಡುಬರಲಿಲ್ಲ. ಫೈಲ್‌ಗೆ ಯಾವುದೇ ವರದಿ ಬರೆಯಲ್ಪಟ್ಟಿರಲಿಲ್ಲ.

ನಾನು ಎರಡು ದಿನಗಳ ಕಾಲ ಡಿಬಗ್ (debugging) ಮಾಡಿದೆ. ಪರಿಹಾರವು ಕೇವಲ ಮೂರು ಸಾಲುಗಳ ಬ್ಯಾಶ್ (bash) ಕೋಡ್ ಆಗಿತ್ತು.

ಸಮಸ್ಯೆಯೆಂದರೆ ಅದು ಮೌನ ವೈಫಲ್ಯ (silent failure) ಆಗಿತ್ತು.

ನನ್ನ ಸ್ಕ್ರಿಪ್ಟ್ 13 ಪರಿசோதனೆಗಳನ್ನು ನಡೆಸುತ್ತದೆ. ಒಂದು ಪರಿசோதனை CLI ಮೂಲಕ ಆಳವಾದ ಸೆಕ್ಯುರಿಟಿ ಆಡಿಟ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ. ಆ ಕಮಾಂಡ್ ಅತಂತ್ರವಾಗಿತ್ತು (hanging). ಅದು ಯಾವುದೇ ದೋಷವನ್ನು ತೋರಿಸಲಿಲ್ಲ. ಅದು ಕೇವಲ ಅನಂತಕಾಲ ಕಾಯುತ್ತಿತ್ತು.

CLI ಗೆ ಗೇಟ್‌ವೇಯಿಂದ ಪ್ರತಿಕ್ರಿಯೆಯ ನಿರೀಕ್ಷೆಯಿತ್ತು. ಕ್ರೋನ್ ಪರಿಸರದಲ್ಲಿ (cron environment), ಆ ಪ್ರತಿಕ್ರಿಯೆ ಎಂದಿಗೂ ಬರಲಿಲ್ಲ. CLI ಗೆ ಯಾವುದೇ ಆಂತರಿಕ ಟೈಮೌಟ್ (timeout) ಇರಲಿಲ್ಲ. ಇದು ಇಡೀ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ತಡೆಹಿಡಿಯಿತು. ಸ್ಕ್ರಿಪ್ಟ್ ಎಂದಿಗೂ ಪೂರ್ಣಗೊಳ್ಳದ ಕಾರಣ, ವರದಿಯನ್ನು ಉಳಿಸುವ ಸಾಲಿಗೆ ಅದು ಎಂದಿಗೂ ತಲುಪಲಿಲ್ಲ.

ನಾನು ಈ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ಅದನ್ನು ಸರಿಪಡಿಸಿದೆ:

  • ನಾನು ಕಮಾಂಡ್ ಅನ್ನು ಟೈಮೌಟ್‌ನಲ್ಲಿ ಸುತ್ತಿದೆ (wrapped).
  • ನಾನು ದೋಷ ಸಂದೇಶವನ್ನು "not available" ಬದಲಿಗೆ "command timed out" ಎಂದು ಬದಲಾಯಿಸಿದೆ.
  • ದೋಷಗಳನ್ನು ಸರಿಯಾಗಿ ಪತ್ತೆಹಚ್ಚಲು ನಾನು set -eo pipefail ಅನ್ನು ಬಳಸಿದೆ.

ಈಗ ವರದಿ ಸರಿಯಾದ ಸಮಯಕ್ಕೆ ಬರುತ್ತದೆ. ಆಡಿಟ್ ಅತಂತ್ರವಾದರೂ, ವರದಿಯು ಉಳಿದ 12 ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಉಳಿಸುತ್ತದೆ. ವರದಿ ಇಲ್ಲದಿರುವುದಕ್ಕಿಂತ ಅರೆಬರೆ ವರದಿ ಇರುವುದು ಉತ್ತಮ.

ಇದು ಏಜೆಂಟ್ ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸಿಂಗ್ (agent sandboxing) ಬಗ್ಗೆ ನನಗೆ ಮೂರು ಪಾಠಗಳನ್ನು ಕಲಿಸಿತು:

  1. ಯಾವುದೇ ಡಿಪೆಂಡೆನ್ಸಿ (dependency) ದೋಷವನ್ನು ಎಚ್ಚರಿಸುವ ರೀತಿಯಲ್ಲಿ ತೋರಿಸುತ್ತದೆ ಎಂದು ಎಂದಿಗೂ ನಂಬಬೇಡಿ. ನೀವು ಕ್ರೋನ್ ಜಾಬ್‌ನಲ್ಲಿ ಬಾಹ್ಯ ಸಾಧನವನ್ನು (external tool) ಬಳಸುತ್ತಿದ್ದರೆ, ಯಾವಾಗಲೂ ಟೈಮೌಟ್ ಅನ್ನು ಹೊಂದಿಸಿ. ಪ್ರತಿಯೊಂದಕ್ಕೂ ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಮಯದ ಮಿತಿ ಇರಲಿ.

  2. ಭಾಗಶಃ ಯಶಸ್ಸಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಿ. ಒಂದು ಭಾಗ ವಿಫಲವಾದರೂ ನಿಮ್ಮ ಸಿಸ್ಟಮ್ ವರದಿಯನ್ನು ಬರೆಯುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.

  3. ಮೌನ ವೈಫಲ್ಯಗಳನ್ನು (silent failures) ತಪ್ಪಿಸಿ. ಎಚ್ಚರಿಕೆಯ ದೋಷವು ನಿಮ್ಮನ್ನು ಎಚ್ಚರಿಸುತ್ತದೆ. ಮೌನ ವೈಫಲ್ಯವು ತುಂಬಾ ತಡವಾಗುವವರೆಗೆ ನಿರ್ಣಾಯಕ ಡೇಟಾವನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುವಂತೆ ಮಾಡುತ್ತದೆ.

ನೀವು ಏಜೆಂಟ್‌ಗೆ ಕಮಾಂಡ್‌ಗಳನ್ನು ಚಲಾಯಿಸಲು ಅನುಮತಿ ನೀಡಿದಾಗ, ಆ ಕಮಾಂಡ್‌ಗಳ ಪ್ರತಿಯೊಂದು ವೈಫಲ್ಯದ ವಿಧಾನವನ್ನೂ ನೀವು ಸ್ವೀಕರಿಸುತ್ತೀರಿ. ಒಂದು ಸಾಧನದಲ್ಲಿನ ಅತಂತ್ರ ಸ್ಥಿತಿಯು ನಿಮ್ಮ ಇಡೀ ಪೈಪ್‌ಲೈನ್‌ನ ಅತಂತ್ರ ಸ್ಥಿತಿಯಾಗುತ್ತದೆ.

ಸೆಕ್ಯುರಿಟಿ ಎಂದರೆ ಕೇವಲ ದುಷ್ಟ ಕೃತ್ಯ ಮಾಡುವವರನ್ನು ತಡೆಯುವುದು ಮಾತ್ರವಲ್ಲ. ನಿಮ್ಮ ಮೂಲಸೌಕರ್ಯವು (infrastructure) ನೀವು ಗಮನಿಸುವಷ್ಟು ಎಚ್ಚರಿಕೆಯ ದೋಷವನ್ನು ತೋರಿಸುವಂತೆ ಮಾಡುವುದು ಕೂಡ ಆಗಿದೆ.

ನೀವು ಬಾಹ್ಯ ಸಾಧನಗಳನ್ನು ಕರೆಯುವ ಸ್ವಯಂಚಾಲಿತ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಈ ವಾರ ನಿಮ್ಮ ಟೈಮೌಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ.

ಮೂಲ: https://dev.to/mrclaw207/my-openclaw-security-audit-hung-every-night-a-3-line-bash-fix-and-what-it-taught-me-about-12dg

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