Skip to main content

Command Palette

Search for a command to run...

CodeQL install A-Y

Updated
2 min read
  • Hi mọi người, có thể nhiều bạn đã biết thì CodeQL là công cụ rất hữu ích trong việc phân tích, tìm kiếm lỗ hổng bảo mật và biến thể của mã nguồn. Trong bài viết này mình sẽ demo lại quá trình cài đặt CodeQL trên vscode và sử dụng scan thử

    CodeQL and GitHub Advanced Security

  • Đầu tiên, bạn cần cài đặt extension CodeQL cho visual code, chờ việc setup và cài đặt CodeQL CLI, sau đó ta có thể test những câu lệnh codeql xem việc cài đặt đã thành công chưa

  • Theo docs thì defaul là cli sẽ cài path CodeQL cho bạn dùng luôn, nhưng nếu thử restart lại vscode mà không dùng được codeql command, thì hãy check log và tìm full path của CodeQL rồi add vào project (Chỗ này hãy tạo biến CodeQL vào enviroment, và setting của codeql sẽ tự load biến này vào, hoặc thêm hẳn vào path)

  • Tiếp đến sẽ có 2 phần, đó là việc chuyển hóa source code của bạn thành database và import vào. Thứ hai là chuẩn bị câu query logic tìm lỗ hổng

  • Ở đây mình sẽ lấy mẫu query của CodeQL trên nguồn github luôn https://github.com/github/codeql

  • Việc tạo mẫu query thì không khó khi bạn tải nguồn từ github trên và mở no với vscode, qua tab extension CodeQL chọn language tương ứng, chúng ta sẽ có các file code .ql để thực thi truy vấn phân tích và tìm kiếm trên database code

  • Cuối cùng là bước khó nhất, tạo database code từ mã nguồn. Theo chuẩn gốc, CodeQL chỉ hỗ trợ tạo database từ mã nguồn hoàn chỉnh, tức là bạn phải có toàn bộ code gốc, chứ không build được từ các file binary

      codeql database create project_name --language=lang --command="command build" --overwrite
    
  • Hoặc từ version 2.16.5 xuất hiện bản beta không cần options build (tất nhiên tỉ lệ chính xác sẽ thấp hơn)

      codeql database create javatest --language java --build-mode none --overwrite
    
  • Test trường hợp không cần —build-mode none này trước

  • Import folder này vào phần database trong vscode, và thế là bạn đã có thể chạy scan source code với CodeQL rồi (tất nhiên tỉ lệ xót lỗi trong phân tích sẽ tăng lên rất nhiều với options không build này)