Chúng ta đã sẵn sàng cho mã do AI tạo chưa? Thông tin dữ liệu PlatoBlockchain. Tìm kiếm dọc. Ái.

Chúng ta đã sẵn sàng cho mã do AI tạo chưa?

Trong những tháng gần đây, chúng ta đã ngạc nhiên trước chất lượng của các khuôn mặt, ảnh mèo, video, bài tiểu luận và thậm chí cả tác phẩm nghệ thuật do máy tính tạo ra. Trí tuệ nhân tạo (AI) và máy học (ML) cũng đã lặng lẽ bước vào lĩnh vực phát triển phần mềm, với các công cụ như GitHub Copilot, Tabnine, Polycode, và những người khác thực hiện bước hợp lý tiếp theo là đưa chức năng tự động hoàn thành mã hiện có vào steroid AI. Tuy nhiên, không giống như những bức ảnh về mèo, nguồn gốc, chất lượng và tính bảo mật của mã ứng dụng có thể có ý nghĩa sâu rộng — và ít nhất là về mặt bảo mật, nghiên cứu cho thấy rủi ro là có thật.

Trước khi nghiên cứu học thuật đã chỉ ra rằng GitHub Copilot thường tạo mã có lỗ hổng bảo mật. Gần đây hơn, phân tích thực tế từ kỹ sư bảo mật Invicti Kadir Arslan cho thấy rằng đề xuất mã không an toàn vẫn là quy luật chứ không phải là ngoại lệ với Copilot. Arslan nhận thấy rằng các đề xuất cho nhiều tác vụ phổ biến chỉ bao gồm những phần cơ bản nhất, thường đi theo con đường cơ bản nhất và kém an toàn nhất, đồng thời việc chấp nhận chúng mà không sửa đổi có thể dẫn đến các ứng dụng có chức năng nhưng dễ bị tấn công.

Một công cụ như Copilot (theo thiết kế) có khả năng tự động hoàn thành ở mức cao hơn, được đào tạo về mã nguồn mở để đề xuất các đoạn mã có thể phù hợp trong bối cảnh tương tự. Điều này làm cho chất lượng và tính bảo mật của các đề xuất gắn chặt với chất lượng và tính bảo mật của tập huấn luyện. Vì vậy, những câu hỏi lớn hơn không phải là về Copilot hay bất kỳ công cụ cụ thể nào khác mà là về mã phần mềm do AI tạo ra nói chung.

Thật hợp lý khi cho rằng Copilot chỉ là phần ngọn của ngọn giáo và những máy phát điện tương tự sẽ trở nên phổ biến trong những năm tới. Điều này có nghĩa là chúng ta, ngành công nghệ, cần bắt đầu đặt câu hỏi về cách tạo ra những mã đó, cách sử dụng nó và ai sẽ chịu trách nhiệm khi có sự cố xảy ra.

Hội chứng Satnav

Tính năng tự động hoàn thành mã truyền thống giúp tra cứu các định nghĩa hàm để hoàn thành tên hàm và nhắc nhở bạn những đối số bạn cần là một cách tiết kiệm thời gian đáng kể. Vì những đề xuất này chỉ là lối tắt để bạn tự tìm kiếm tài liệu nên chúng tôi đã học được cách tin tưởng tuyệt đối vào bất kỳ đề xuất nào của IDE. Khi một công cụ hỗ trợ AI xuất hiện, các đề xuất của nó không còn được đảm bảo là chính xác nữa — nhưng chúng vẫn mang lại cảm giác thân thiện và đáng tin cậy nên có nhiều khả năng được chấp nhận hơn.

Đặc biệt đối với các nhà phát triển ít kinh nghiệm hơn, sự tiện lợi của việc nhận được một khối mã miễn phí sẽ khuyến khích sự thay đổi suy nghĩ từ “Mã này có đủ gần với những gì tôi sẽ viết không” sang “Làm cách nào tôi có thể điều chỉnh mã này để nó phù hợp với mình”.

GitHub tuyên bố rất rõ ràng rằng các đề xuất của Copilot phải luôn được phân tích, xem xét và kiểm tra cẩn thận, nhưng bản chất con người quy định rằng ngay cả những mã dưới tiêu chuẩn đôi khi cũng sẽ được đưa vào sản xuất. Nó hơi giống việc lái xe trong khi nhìn vào GPS nhiều hơn là đường đi.

Các vấn đề về an ninh chuỗi cung ứng

Sản phẩm Khủng hoảng bảo mật Log4j đã đưa bảo mật chuỗi cung ứng phần mềm và đặc biệt là bảo mật nguồn mở trở thành tâm điểm chú ý, với một sự thay đổi gần đây Bản ghi nhớ của Nhà Trắng về phát triển phần mềm an toàn và một giải pháp mới dự luật cải thiện an ninh nguồn mở. Với những sáng kiến ​​này và các sáng kiến ​​khác, việc có bất kỳ mã nguồn mở nào trong ứng dụng của bạn có thể sớm cần được ghi vào danh mục vật liệu phần mềm (SBOM), điều này chỉ khả thi nếu bạn cố ý đưa vào một phần phụ thuộc cụ thể. Các công cụ phân tích thành phần phần mềm (SCA) cũng dựa vào kiến ​​thức đó để phát hiện và gắn cờ các thành phần nguồn mở lỗi thời hoặc dễ bị tấn công.

Nhưng điều gì sẽ xảy ra nếu ứng dụng của bạn bao gồm mã do AI tạo ra mà cuối cùng lại bắt nguồn từ bộ đào tạo nguồn mở? Về mặt lý thuyết, nếu thậm chí một đề xuất quan trọng giống hệt với mã hiện có và được chấp nhận nguyên trạng, bạn có thể có mã nguồn mở trong phần mềm của mình nhưng không có trong SBOM của bạn. Điều này có thể dẫn đến các vấn đề về tuân thủ, chưa kể đến khả năng phải chịu trách nhiệm pháp lý nếu mã trở nên không an toàn và dẫn đến vi phạm — và SCA sẽ không giúp bạn vì nó chỉ có thể tìm thấy các phần phụ thuộc dễ bị tấn công chứ không tìm thấy lỗ hổng trong mã của chính bạn .

Cạm bẫy cấp phép và ghi công

Tiếp tục dòng suy nghĩ đó, để sử dụng mã nguồn mở, bạn cần tuân thủ các điều khoản cấp phép của nó. Tùy thuộc vào giấy phép nguồn mở cụ thể, ít nhất bạn sẽ cần cung cấp thông tin ghi công hoặc đôi khi phát hành mã của riêng mình dưới dạng nguồn mở. Một số giấy phép cấm sử dụng thương mại hoàn toàn. Dù giấy phép là gì, bạn cần biết mã đó đến từ đâu và nó được cấp phép như thế nào.

Một lần nữa, điều gì sẽ xảy ra nếu bạn có mã do AI tạo trong ứng dụng của mình giống hệt với mã nguồn mở hiện có? Nếu bạn đã tiến hành kiểm tra, liệu nó có phát hiện ra rằng bạn đang sử dụng mã mà không có sự ghi nhận cần thiết không? Hoặc có thể bạn cần mở nguồn một số mã thương mại của mình để duy trì tuân thủ? Có lẽ đó chưa phải là một rủi ro thực tế với các công cụ hiện tại, nhưng đây là những loại câu hỏi mà tất cả chúng ta nên đặt ra ngày hôm nay, không phải trong 10 năm tới. (Và cần nói rõ hơn, GitHub Copilot có một bộ lọc tùy chọn để chặn các đề xuất phù hợp với mã hiện có nhằm giảm thiểu rủi ro trong chuỗi cung ứng.)

Ý nghĩa bảo mật sâu sắc hơn

Quay trở lại vấn đề bảo mật, mô hình AI/ML chỉ tốt (và tệ) như tập huấn luyện của nó. Chúng ta đã thấy điều đó trong quá khứ - ví dụ, trong trường hợp thuật toán nhận dạng khuôn mặt thể hiện sự thiên vị chủng tộc vì dữ liệu họ đã được đào tạo. Vì vậy, nếu chúng tôi có nghiên cứu cho thấy rằng trình tạo mã thường đưa ra các đề xuất mà không xem xét đến tính bảo mật, thì chúng tôi có thể suy ra rằng đây là tập hợp học tập của nó (tức là mã có sẵn công khai). Và điều gì sẽ xảy ra nếu mã do AI tạo ra không an toàn sau đó phản hồi trở lại cơ sở mã đó? Các đề xuất có thể được an toàn không?

Các câu hỏi bảo mật không dừng lại ở đó. Nếu các trình tạo mã dựa trên AI trở nên phổ biến và bắt đầu chiếm một tỷ lệ đáng kể trong mã mới, thì có khả năng ai đó sẽ cố gắng tấn công chúng. Người ta đã có thể đánh lừa khả năng nhận dạng hình ảnh của AI bằng cách đầu độc bộ học tập của nó. Sớm hay muộn, những kẻ độc hại sẽ cố gắng đưa mã có lỗ hổng duy nhất vào các kho lưu trữ công khai với hy vọng rằng mã đó sẽ xuất hiện dưới dạng đề xuất và cuối cùng sẽ xuất hiện trong một ứng dụng sản xuất, tạo điều kiện cho một cuộc tấn công dễ dàng.

Còn độc canh thì sao? Nếu nhiều ứng dụng sử dụng cùng một đề xuất có tính dễ bị tổn thương cao, bất kể nguồn gốc của nó là gì, chúng ta có thể xem xét các lỗ hổng bảo mật hoặc thậm chí có thể là các lỗ hổng dành riêng cho AI.

Để mắt đến AI

Ngày nay, một số kịch bản này có vẻ xa vời nhưng chúng đều là những điều mà chúng ta trong ngành công nghệ cần thảo luận. Một lần nữa, GitHub Copilot chỉ được chú ý vì nó hiện đang dẫn đầu và GitHub đưa ra những cảnh báo rõ ràng về những cảnh báo của các đề xuất do AI tạo ra. Giống như tính năng tự động hoàn thành trên điện thoại hoặc đề xuất lộ trình trong satnav của bạn, chúng chỉ là những gợi ý giúp cuộc sống của chúng ta dễ dàng hơn và việc lấy hay bỏ chúng là tùy thuộc vào chúng ta.

Với tiềm năng cải thiện hiệu quả phát triển theo cấp số nhân, các trình tạo mã dựa trên AI có thể sẽ trở thành một phần lâu dài của thế giới phần mềm. Tuy nhiên, về mặt bảo mật ứng dụng, đây vẫn là một nguồn mã dễ bị tổn thương khác cần phải vượt qua quá trình kiểm tra bảo mật nghiêm ngặt trước khi được phép đưa vào sản xuất. Chúng tôi đang xem xét một cách hoàn toàn mới để đưa các lỗ hổng bảo mật (và các phần phụ thuộc có thể không được kiểm tra) trực tiếp vào mã bên thứ nhất của bạn, do đó, sẽ hợp lý nếu coi các cơ sở mã được tăng cường AI là không đáng tin cậy cho đến khi được kiểm tra — và điều đó có nghĩa là kiểm tra mọi thứ thường xuyên như bạn Có thể.

Ngay cả các giải pháp ML tương đối minh bạch như Copilot cũng đã đặt ra một số câu hỏi về pháp lý và đạo đức, chưa kể đến những lo ngại về bảo mật. Nhưng hãy tưởng tượng rằng một ngày nào đó, một công cụ mới nào đó bắt đầu tạo mã hoạt động hoàn hảo và vượt qua các bài kiểm tra bảo mật, ngoại trừ một chi tiết nhỏ: Không ai biết nó hoạt động như thế nào. Đó là lúc phải hoảng sợ.

Dấu thời gian:

Thêm từ Đọc tối