Giới Thiệu
Khi làm việc trên nhiều dự án khác nhau, một trong những khó khăn thường gặp mà chúng tôi phải đối mặt là lỗ hổng phụ thuộc. Việc xác định phiên bản gói nào bị lỗ hổng, nơi nó được sử dụng trong mã nguồn và cách khắc phục thường tốn hàng giờ đồng hồ. Các cảnh báo bảo mật từ các nền tảng rất hữu ích nhưng thường không cung cấp đủ bối cảnh để hành động nhanh chóng.
Điều này đã dẫn chúng tôi đến việc xây dựng Astra — một công cụ mã nguồn mở giúp quét các kho lưu trữ để phát hiện lỗ hổng, phụ thuộc không cần thiết hoặc đã lỗi thời, và cho biết chính xác nơi những phụ thuộc đó đang được sử dụng. Hơn nữa, Astra còn tích hợp các giải pháp hỗ trợ AI để giúp các nhà phát triển giữ quyền kiểm soát trong khi giải quyết vấn đề nhanh hơn.
Astra Là Gì?
Astra là một trình quét lỗ hổng phụ thuộc và hệ thống quản lý kho lưu trữ với các tính năng:
- Quét các kho lưu trữ và xác định các phụ thuộc
- Kiểm tra chúng với cơ sở dữ liệu lỗ hổng OSV.dev
- Nêu bật các phụ thuộc lỗi thời hoặc không sử dụng
- Hiển thị nơi trong mã nguồn mỗi phụ thuộc được sử dụng
- Đề xuất giải pháp hỗ trợ AI bằng cách tạo các nhánh vá an toàn
Tất cả đều đi kèm với một giao diện bảng điều khiển tương tác để làm cho kết quả rõ ràng và có thể hành động.
Cách Chúng Tôi Xây Dựng Nó
Công Nghệ Sử Dụng
- Frontend: React + Vite + Recharts cho giao diện sạch sẽ, tương tác
- Desktop: Electron để hỗ trợ đa nền tảng
- Backend: Node.js + Express + MongoDB để xử lý quét và lưu trữ
- Dữ Liệu Lỗ Hổng: API OSV.dev với truy vấn hàng loạt để tăng tốc độ
- Phát Hiện Sử Dụng Mã: Tree-sitter cho phân tích tĩnh
- Giải Pháp AI: Tích hợp Gemini CLI để đề xuất các bản vá mã an toàn
Những Thách Thức Chúng Tôi Đối Mặt
- Mở rộng quét cho các kho lớn → giải quyết bằng cách bỏ qua các thư mục rác và các mục trong
.gitignore
(cắt giảm ~80% tệp). - Truy vấn hàng loạt API OSV đáng tin cậy với các tập hợp phụ thuộc lớn.
- Hỗ trợ đa hệ sinh thái (npm + pip trong MVP).
- Bản vá AI ghi đè ý định của nhà phát triển → giải quyết bằng cách sử dụng quy trình nhánh vá giữ nhà phát triển trong tầm kiểm soát.
Chúng Tôi Tự Hào Về Điều Gì?
- Một nguyên mẫu hoạt động với giá trị thực tế.
- Tích hợp gợi ý mã AI một cách an toàn.
- Một giao diện bảng điều khiển sạch sẽ và trực quan.
- Hỗ trợ đa hệ sinh thái (JavaScript + Python) trong MVP đầu tiên.
Những Bài Học Chúng Tôi Rút Ra
- Độ phức tạp của bảo mật chuỗi cung ứng.
- Sử dụng Tree-sitter cho phân tích mã tĩnh.
- Kết hợp phân tích tĩnh với dữ liệu lỗ hổng thực (OSV).
- Thiết kế các công cụ hỗ trợ nhà phát triển.
Cách Kiro Hỗ Trợ
Kiro đã được sử dụng trong suốt quá trình phát triển Astra như một đối tác lập trình. Nó đã đóng vai trò lớn trong:
- Thiết kế kiến trúc hệ thống
- Thiết lập cấu trúc dự án
- Hướng dẫn cả phát triển backend và frontend
- Xây dựng API, tích hợp MongoDB, và kết nối với OSV.dev
- Tạo một giao diện React đáp ứng với hỗ trợ desktop
- Gỡ lỗi các vấn đề và cải thiện các thực hành bảo mật tốt nhất
Chúng tôi đã cấu trúc các cuộc trò chuyện với Kiro một cách lặp đi lặp lại: chia nhỏ dự án thành các nhiệm vụ nhỏ hơn (kiến trúc → backend → frontend), tinh chỉnh ý tưởng từng bước, và nhanh chóng khắc phục các trở ngại.
Sự giúp đỡ ấn tượng nhất đến từ:
- Mẫu nhắc để sửa lỗ hổng, giúp đơn giản hóa logic quét.
- Mã UI chất lượng cao, giúp bảng điều khiển sạch sẽ và sẵn sàng cho sản xuất.
Video Demo
Hãy Thử Ngay
🔗 GitHub Repo: Astra trên GitHub
🔗 Devpost Submission: Astra trên Devpost
Kế Hoạch Tương Lai Cho Astra
- Hỗ trợ cho nhiều hệ sinh thái hơn (Go, Java).
- Gợi ý AI thông minh hơn được xếp hạng theo khả năng khai thác.
- Tích hợp pipeline DevOps để kiểm tra các bản sửa lỗi trong môi trường staging.
- Bảng điều khiển nhóm để giám sát qua các tổ chức.
- Tăng tốc độ phát hiện sử dụng mã với tối ưu hóa Tree-sitter.
Với Astra, chúng tôi muốn biến những giờ phút khó khăn mà chúng tôi và các đồng nghiệp phải trải qua thành một công cụ làm cho bảo mật trở nên dễ tiếp cận, có thể hành động và thậm chí thú vị khi làm việc.