APP_KEY trong Laravel bị lộ: Hàng trăm ứng dụng có nguy cơ bị chiếm quyền điều khiển từ xa

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
107
946 bài viết
APP_KEY trong Laravel bị lộ: Hàng trăm ứng dụng có nguy cơ bị chiếm quyền điều khiển từ xa
Một nguy cơ khá nghiêm trọng đang âm thầm tồn tại trong cộng đồng sử dụng Laravel (framework PHP phổ biến trên toàn thế giới). Chỉ cần để lộ mã APP_KEY (khóa bảo mật được Laravel sử dụng để mã hóa dữ liệu), tin tặc có thể dễ dàng chiếm quyền điều khiển máy chủ của người dùng từ xa.

b913f23a3ddd8b83d2cc.jpg

Điều đáng lo ngại hơn là hàng trăm ngàn khóa APP_KEY đã bị rò rỉ công khai trên GitHub, trong đó có ít nhất 600 ứng dụng Laravel đang hoạt động bị xác định là có thể khai thác được.

Từ năm 2018 đến tháng 5/2025, các chuyên gia đã trích xuất hơn 260.000 khóa APP_KEY từ GitHub. Phát hiện hơn 600 ứng dụng dễ bị tấn công với hơn 10.000 khóa là duy nhất và ít nhất 400 khóa còn sử dụng được.

Trong Laravel, APP_KEY là một chuỗi 32 byte ngẫu nhiên được tạo ra khi cài đặt ứng dụng, thường nằm trong file .env. Nó dùng để:
  • Mã hóa/giải mã dữ liệu nhạy cảm,
  • Ký và xác thực session cookie,
  • Tạo token đăng nhập và xử lý các chức năng bảo mật khác.
Nếu tin tặc lấy được APP_KEY, chúng có thể:
  • Tạo hoặc giải mã session cookie, giả mạo quyền truy cập.
  • Khai thác lỗi deserialization trong hàm decrypt() của Laravel để thực thi mã độc từ xa (RCE – Remote Code Execution).

Tin tặc đã thực hiện tấn công như thế nào?​

  1. Tin tặc tìm kiếm APP_KEY bị rò rỉ trên GitHub (hoặc các nền tảng công khai).
  2. Kết hợp với thông tin về APP_URL (cũng hay bị lộ trong file .env), chúng có thể truy cập trực tiếp vào ứng dụng đang chạy.
  3. Gửi payload chứa dữ liệu mã hóa nguy hiểm (gadget chain) tới máy chủ.
  4. Laravel tự động giải mã và deserialize payload, dẫn đến việc thực thi mã từ xa mà không cần vượt qua logic ứng dụng hay đăng nhập.
Điều này cho phép tin tặc vượt qua mọi lớp bảo vệ logic ứng dụng và chiếm toàn quyền điều khiển hệ thống web server.

Ảnh hưởng thực tế: Không chỉ Laravel​

  • 63% các APP_KEY bị lộ xuất phát từ file .env, thường chứa thêm nhiều thông tin nhạy cảm khác như:
    • Thông tin kết nối cơ sở dữ liệu
    • Token dịch vụ đám mây (AWS, Google Cloud…)
    • API key liên quan đến chatbot, AI, hỗ trợ khách hàng, thương mại điện tử...
  • Hơn 28.000 cặp APP_KEY + APP_URL bị lộ cùng lúc và trong đó có ít nhất 10% hợp lệ, đủ điều kiện khai thác trực tiếp.

Những điểm đặc biệt cần lưu ý​

  • Laravel không còn lỗi này trong mặc định, nhưng lỗi quay lại nếu dev dùng SESSION_DRIVER=cookie và xử lý decrypt() không cẩn thận.
  • Lỗi liên quan đến PHP object deserialization, vốn đã bị khai thác rộng rãi với các công cụ như phpggc – giúp kẻ tấn công tạo ra các “gadget chain” tùy chỉnh để chèn mã độc.

Khuyến nghị bảo vệ hệ thống Laravel và các ứng dụng liên quan

  1. Không bao giờ commit file ".env" lên GitHub hoặc bất kỳ kho mã nguồn công khai nào.
  2. Nếu phát hiện đã lộ APP_KEY:
    • Không chỉ xóa khỏi repo.
    • Phải xoay vòng (rotate) khóa APP_KEY ngay lập tức.
    • Cập nhật toàn bộ hệ thống đang dùng key cũ bằng key mới.
  3. Không sử dụng SESSION_DRIVER=cookie trừ khi hiểu rõ rủi ro.
  4. Triển khai giám sát bí mật liên tục trong CI/CD, container, Docker image, log pipeline…
  5. Sử dụng các công cụ quét bảo mật bí mật như GitGuardian hoặc các nền tảng tự động phát hiện secrets để theo dõi repo và hạ tầng.
Câu chuyện Laravel chỉ là phần nổi của tảng băng chìm. Trong bối cảnh CI/CD, Docker, AI và microservices bùng nổ, việc bảo vệ thông tin nhạy cảm (secret management) cần được coi là trụ cột bảo mật chứ không còn là bước phụ trong quy trình phát triển phần mềm. Việc rò rỉ APP_KEY hay bất kỳ token nào. Không còn là “lỗi nhỏ” mà là một mối đe dọa trực tiếp đến dữ liệu, khách hàng và hạ tầng doanh nghiệp.
Theo The Hacker News
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
app_key github laravel
Bên trên