𝗕𝗮𝗼 𝗯ả𝗼 𝗺ậ𝘁 𝗰𝗮́𝗰 𝗸𝗶̣𝗰 𝗯𝗮̉𝗻 𝗕𝗮𝘀𝗵 𝗱𝗼 𝗔𝗜 𝘁𝗮̣𝗼 𝗿𝗮

AI viết Bash rất dễ dàng. Nhưng nó cũng làm hỏng mọi thứ rất nhanh. Một kịch bản nhỏ có thể xóa toàn bộ thư mục home của bạn nếu một biến bị trống. Một kịch bản ghi log đơn giản có thể làm rò rỉ các thông tin bí mật của bạn lên một máy chủ công khai.

Tôi đã từng chạy các kịch bản AI lỗi. Hầu hết các kỹ sư cũng vậy. Hãy sử dụng danh sách kiểm tra này để ngăn chặn thảm họa trước khi chúng xảy ra.

Thêm các dòng này vào đầu mỗi kịch bản:

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

Tại sao bạn cần chúng:

  • set -e: Dừng kịch bản nếu bất kỳ lệnh nào thất bại.
  • set -u: Dừng kịch bản nếu một biến chưa được định nghĩa. Điều này giúp ngăn chặn các lỗi kiểu rm -rf /.
  • set -o pipefail: Đảm bảo các lỗi trong một đường ống (pipeline) thực sự làm dừng kịch bản.
  • IFS=$'\n\t': Ngăn chặn các lỗi do khoảng trắng trong tên tệp.

Hãy lưu ý những sai lầm phổ biến sau đây của AI:

  1. Thiếu dấu ngoặc kép AI thường viết: rm -rf $TARGET_DIR Bạn phải viết: rm -rf "$TARGET_DIR" Nếu không có dấu ngoặc kép, một khoảng trắng trong tên thư mục có thể xóa nhầm các tệp khác. Luôn bao quanh các biến của bạn bằng dấu ngoặc kép.

  2. Rò rỉ thông tin bí mật AI thường sử dụng set -x để gỡ lỗi. Điều này sẽ in mọi lệnh vào nhật ký (logs) của bạn. Nếu bạn sử dụng một mã thông báo API (API token), mã đó sẽ hiển thị trong nhật ký CI của bạn. Hãy luôn xóa set -x hoặc sử dụng set +x để ẩn các phần nhạy cảm.

  3. Quá nhiều đặc quyền AI thường thêm sudo vào mọi lệnh. Đừng làm như vậy. Hãy chạy kịch bản dưới quyền người dùng không phải root bất cứ khi nào có thể. Điều này giúp hạn chế thiệt hại nếu có sự cố xảy ra.

  4. Tải xuống nguy hiểm Đừng bao giờ chạy: curl https://example.com/install.sh | bash Thay vào đó:

  • Tải tệp về trước: curl https://example.com/install.sh > install.sh
  • Đọc tệp.
  • Chạy thủ công: sudo bash install.sh

Mẹo chuyên nghiệp: Sử dụng shellcheck. Hãy chạy shellcheck trên mọi kịch bản. Nó có thể tìm thấy các biến thiếu dấu ngoặc kép và các thiết lập an toàn bị thiếu chỉ trong vài giây. Nó phát hiện được những gì mắt thường có thể bỏ sót.

Quy tắc vàng: Hãy coi kết quả đầu ra của AI như một bản nháp. Hoặc là đưa các yêu cầu an toàn vào lời nhắc (prompt) của bạn, hoặc tự mình gia cố mã nguồn. Đừng chạy kịch bản bash của AI mà không kiểm tra trước.

Nguồn: https://dev.to/devopsaitoolkit/securing-ai-generated-bash-scripts-before-you-run-them-401m

Cộng đồng học tập tùy chọn: https://t.me/GyaanSetuAi