Logo Zephyrnet

Nhà phát triển JavaScript phá hủy các dự án của chính họ trong "bài học" chuỗi cung ứng

Ngày:

Bạn có thể đã xem tin tức, ngay cả khi bạn không chắc điều gì đã xảy ra.

Trừ khi bạn là một lập trình viên JavaScript và bạn dựa vào một trong hai hoặc cả hai một cặp mô-đun được gọi là faker.jscolors.js.

Nếu bạn là người dùng của một trong hai dự án đó và nếu bạn (hoặc đã!) Có xu hướng chấp nhận bất kỳ và tất cả các bản cập nhật cho mã nguồn của bạn một cách tự động mà không cần bất kỳ loại kiểm tra hoặc đánh giá mã nào…

… Bạn có thể biết chính xác những gì đã xảy ra và nó ảnh hưởng đến bạn như thế nào.

Các cuộc tấn công chuỗi cung ứng

Độc giả lâu dài của Naked Security sẽ quen thuộc với vấn đề cái gọi là các cuộc tấn công chuỗi cung ứng trong các thư viện phần mềm nguồn mở, vì chúng tôi đã viết về loại vấn đề này trong hệ sinh thái lập trình trước đây.

Chúng tôi đã viết về các lỗ hổng bảo mật đột nhiên xuất hiện trong nhiều cộng đồng mã hóa, bao gồm PHP lập trình viên, Pythonistas, hồng ngọc người dùng và NPM người hâm mộ.

Năm ngoái, chúng tôi thậm chí có lý do để tranh luận về đạo đức của các nhà nghiên cứu hàn lâm tự phong đã cố tình sử dụng kho mã nguồn nhân Linux làm cơ sở thử nghiệm cho thứ mà họ không ngại gọi là đạo đức giả cam kết.

Các cuộc tấn công chuỗi cung ứng phần mềm thường liên quan đến nội dung độc hại, nguy hiểm hoặc được sửa đổi có chủ ý để lây nhiễm gián tiếp vào mạng hoặc nhóm phát triển của bạn, không giống như một cuộc tấn công trực tiếp trong đó những kẻ tấn công đột nhập vào mạng của bạn và thực hiện một cuộc tấn công trực diện.

Các cuộc tấn công vào chuỗi cung ứng thường được thực hiện một cách hoàn toàn không chủ ý bởi một trong những nhà cung cấp sản phẩm và dịch vụ, những người có thể chính họ đã sử dụng các sửa đổi trái phép từ ai đó ngược dòng của họ, v.v.

TÌM HIỂU THÊM VỀ CHUỖI CUNG ỨNG

Nhấp và kéo các sóng âm thanh bên dưới để chuyển đến bất kỳ điểm nào trong podcast.
Quý vị cũng có thể nghe trực tiếp trên Soundcloud, hoặc đọc một bản ghi hoàn chỉnh.


Phi đạo đức, có lẽ, nhưng đôi khi không phải là tội phạm

Tuy nhiên, như chúng tôi đã đề cập ở trên, các vấn đề chuỗi cung ứng kiểu này không phải lúc nào cũng nảy sinh từ mục đích tội phạm, mặc dù cuối cùng chúng có thể bị đánh giá là phi đạo đức (hoặc trẻ sơ sinh, hoặc thiếu suy nghĩ hoặc bất kỳ sự kết hợp nào của chúng).

Chúng tôi đã đề cập đạo đức giả cam kết, nhằm mục đích nhắc nhở tất cả chúng ta rằng có thể đưa mã backdoor độc hại vào bên dưới hai hoặc nhiều thay đổi không tự tạo ra lỗ hổng bảo mật, nhưng sẽ tạo ra lỗ hổng khi chúng kết hợp với nhau.

Và chúng tôi liên kết với câu chuyện của một "nhà nghiên cứu", người rất muốn nhắc nhở chúng ta rằng việc tạo ra các gói phần mềm nguy hiểm mà anh ta đã cố tình tải lên dễ dàng như thế nào gần 4000 người trong số họ trong một loạt "sự giúp đỡ" liên tục.

Như chúng tôi đã đề xuất vào thời điểm đó, cả hai “chuyên gia” đó - những kẻ đạo đức giả và kẻ quá tải - dường như đã áp dụng phương châm ích kỷ rằng một công việc đáng làm là đáng giá. làm quá...

… Do đó tạo ra một lượng lớn công việc không cần thiết cho các tình nguyện viên vô tội khác trong cộng đồng Linux và Python tương ứng.

Màu sắc và Faker lừa đảo

Lần này, người sáng lập hai mô-đun mã hóa JavaScript phổ biến được gọi là colors.jsfaker.js đã ném hai cờ lê hơi khác nhau vào công trình.

Màu sắc là một bộ công cụ nhỏ và đơn giản giúp bạn thêm văn bản màu vào đầu ra bảng điều khiển của mình, thường là để làm cho thông tin thú vị hơn và dễ đọc hơn.

Ví dụ: khi chúng tôi thực hiện Log4Shell - Phim video gần đây, chúng tôi đã thêm một mảng màu vào đầu ra của máy chủ LDAP giả lập của chúng tôi để giúp theo dõi các yêu cầu đến dễ dàng hơn, sử dụng chuỗi điều khiển ANSI trong đầu ra của thiết bị đầu cuối để thêm các dấu màu xanh lá cây và màu đỏ để biểu thị thành công và thất bại:

Sử dụng ít các điểm đánh dấu đầu cuối màu xanh lá cây và màu đỏ để thu hút và rõ ràng về mặt hình ảnh.

Thật không may cho colors.js người dùng, người sáng lập dự án, sau khi không xuất bản bất kỳ bản cập nhật nào kể từ năm 2019, đã bất ngờ thêm mã mới để lấy số phát hành từ 1.4.0 với số nhận dạng phiên bản hơi bất thường của 1.4.4-liberty-2.

Chán nản, rõ ràng là không bao giờ nhận được sự công nhận tài chính mà anh ấy cảm thấy mình xứng đáng có được từ nhiều người đang sử dụng công việc của mình, người sáng lập đã chuyển mã của riêng mình vào thùng rác bằng cách thêm một vòng lặp vô hạn như sau:

/* remove this line after testing */
let am = require('../lib/custom/american');
am();
for (let i = 666; i < Infinity; i++) { if (i % 333) { // console.log('testing'.zalgo.rainbow) } console.log('testing testing testing testing testing testing testing'.zalgo)
}

Vòng lặp ở cuối mã này in văn bản testing testing ... testing lặp đi lặp lại, sau khi áp dụng một hàm được gọi là zalgo với nó.

Zalgo hóa

Zalgo hóa, nếu bạn chưa bao giờ nghe nói về nó, là một cách làm cho các ký tự La Mã thông thường trông kỳ lạ và vô nghĩa bằng cách rải rác chúng bằng dấu, tuyết tùng, umlauts và những cái gọi là khác dấu phụ - một chút giống như đặt tên cho ban nhạc của bạn Motorhead thay vì Motorhead, nhưng không có sự hạn chế của việc chỉ thêm một biểu tượng phụ duy nhất.

Văn bản ghép nối không chỉ vô nghĩa mà còn thường xuyên đặt nặng lên phần mềm kết xuất văn bản bên dưới đang cố gắng soạn thảo văn bản và bố trí nó để hiển thị.

Một nhà thư pháp con người sẽ bối rối khi được yêu cầu thêm mọi trọng âm có thể có vào mỗi chữ cái trong một từ, biết rằng điều đó sẽ chẳng có ý nghĩa gì cả.

Nhưng một nhà soạn nhạc trên máy tính sẽ đơn giản cố gắng bắt buộc bằng cách kết hợp tất cả các dấu hiệu mà bạn yêu cầu, tạo cho ban nhạc của bạn Zalgometal một cái tên cách điệu như thế này:

Dấu phụ được thêm vào một cách ngẫu nhiên và vô nghĩa trong toàn bộ văn bản

Đài tưởng niệm Aaron Schwartz

Faker người dùng đã trải nghiệm một loại cập nhật khác, với dự án về cơ bản bị xóa và thay thế bằng README hồ sơ yêu cầu “Điều gì thực sự đã xảy ra với Aaron Swartz? "

Schwartz, một "kẻ hacktivist" bị buộc tội liên bang liên quan đến việc truy cập trái phép vào các tài liệu học thuật mà anh ta nghĩ là nên làm không bị giữ sau tường trả tiền, buồn bã tự sát trong lúc căng thẳng vì chờ ngày xét xử.

Dự án Faker sắp kết thúc. Lưu ý nhận xét "trò chơi kết thúc", thiếu bất kỳ tệp mã nguồn nào,
và README tưởng nhớ Aaron Schwartz.

Faker là một bộ công cụ hữu ích dành cho các nhà phát triển, giúp dễ dàng tạo ra một lượng lớn dữ liệu thực tế nhưng được tạo sẵn để đảm bảo chất lượng, chẳng hạn như tạo 100,000 tên và bổ trợ mà bạn có thể thêm vào cơ sở dữ liệu người dùng của mình trong quá trình phát triển.

Dữ liệu giả là một khía cạnh quan trọng để tránh thảm họa về quyền riêng tư trong khi bạn vẫn đang làm việc với mã chưa được kiểm tra, chưa hoàn thiện vì điều đó có nghĩa là bạn không tiết lộ dữ liệu chính hãng, nhạy cảm theo những cách thiếu suy nghĩ (và có thể là bất hợp pháp).

Tác giả của Faker dường như đã cố gắng thương mại hóa dự án trong suốt năm 2021, nhưng không thành công, vì vậy có vẻ như bây giờ anh ấy đã cung cấp mã của nó đảo chính de ân sủng.

Kế hoạch này dường như chẳng đi đến đâu, với rất ít tiền tài trợ từ người dùng doanh nghiệp.

Cho rằng mã đã được phát hành trong nhiều năm theo giấy phép MIT - về cơ bản có nghĩa là bất kỳ ai cũng có thể sử dụng nó miễn phí, ngay cả trong các sản phẩm thương mại, mã nguồn đóng, miễn là họ không tự nhận là đã tạo ra nó - có không có gì để ngăn người dùng hiện tại tiếp tục với phiên bản trước đó hoặc thực sự là bất kỳ phiên bản nào trước đó.

Họ thậm chí có thể thực hiện các sửa đổi và cải tiến của riêng mình như họ muốn…

… Vì vậy không rõ kết quả cuối cùng của việc chuyển dự án vào thùng rác một cách ngoạn mục như vậy có khả năng dành cho tác giả là gì, vì anh ta không thể ghi lại lần nữa giấy phép của những người dùng đã tải xuống và triển khai nó.

Có ai thắng, hay tất cả chúng ta đều thua?

Như một người bình luận bị hại cho biết (ai đó có lẽ đã đưa bản cập nhật vào sản xuất mà không xem xét những gì đã thay đổi và người bị ngừng hoạt động tạm thời do đó), nó đã không thực sự kết thúc tốt đẹp đối với bất kỳ ai:

Thật thú vị khi những người không có danh tiếng dường như nghĩ rằng danh tiếng không có giá trị sao ?? Đối với tất cả những người ở đây nói rằng “chúng tôi đã được dạy một bài học quý giá về việc tin tưởng vào phần mềm miễn phí”; hiểu điều này…

Để gây ra cho tôi 15 phút đau buồn, tất cả những gì Marak phải làm là hủy hoại danh tiếng của chính mình một cách không thể phục hồi.

Bạn đứng về phía ai trong trường hợp như thế này? Cho chúng tôi biết trong các ý kiến ​​dưới đây…


Nguồn: https://nakedsecurity.sophos.com/2022/01/11/javascript-developer-destroys-own-projects-in-supply-chain-lesson/

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?