Bạn được thuê để sửa một lỗi nhỏ cho một trang web chuyên sâu về bảo mật. Nhìn vào mã, nó chứa đầy lỗ hổng bảo mật. Bạn làm nghề gì? [đóng cửa]


109

Tôi đã được ai đó thuê để làm một số công việc nhỏ trên một trang web. Đó là một trang web cho một công ty lớn. Nó chứa dữ liệu rất nhạy cảm, vì vậy bảo mật là rất quan trọng. Khi phân tích mã, tôi nhận thấy nó chứa đầy lỗ hổng bảo mật - đọc, rất nhiều tệp PHP ném người dùng nhận / đăng dữ liệu trực tiếp vào các yêu cầu mysql và lệnh hệ thống.

Vấn đề là, người tạo ra trang web cho anh ta là một lập trình viên với gia đình và trẻ em phụ thuộc vào công việc đó. Tôi không thể chỉ nói: "trang web của bạn là một công viên giải trí kịch bản. Hãy để tôi làm lại cho bạn và bạn sẽ ổn thôi."

bạn sẽ làm gì trong tình huống này?

Cập nhật:

Tôi đã làm theo một số lời khuyên tốt ở đây và lịch sự báo cáo với nhà phát triển rằng tôi đã tìm thấy một số lỗi bảo mật có thể có trên trang web. Tôi đã chỉ ra dòng này và nói rằng có thể có một lỗ hổng có thể xảy ra đối với các cuộc tấn công SQL SQL ở đó và hỏi liệu anh ta có biết về nó không. Ông trả lời: "chắc chắn, nhưng tôi nghĩ rằng để khai thác nó, kẻ tấn công nên có thông tin về cấu trúc của cơ sở dữ liệu; tôi phải hiểu rõ hơn" .

Cập nhật 2:

Tôi đã nói rằng không phải lúc nào cũng như vậy và đề nghị anh ta theo liên kết câu hỏi Stack Overflow này để giải quyết vấn đề này một cách chính xác: Làm thế nào để ngăn chặn việc tiêm SQL trong PHP? Anh ấy nói sẽ học nó và cảm ơn tôi vì đã nói với anh ấy trước đây. Tôi đoán phần của tôi đã được thực hiện, cảm ơn các bạn.


29
Tôi thực sự thích một giải pháp không liên quan đến việc hủy hoại cuộc sống của ai đó. Tôi sẽ để việc này một mình nhưng tôi cũng biết một lỗ hổng bảo mật như vậy cũng có thể hủy hoại cuộc sống của một số người. Phức tạp.
MaiaVictor

18
Kẻ tấn công có thể sử dụng khai thác để lấy thông tin về cấu trúc của cơ sở dữ liệu. Không lỗ hổng SQL injection nên bao giờ được đánh giá thấp.
Dave Rager

17
Chỉ cho anh ta cách khai thác một số lỗ hổng mà không cần sử dụng bất kỳ kiến ​​thức nào về cơ sở dữ liệu. Điều đó sẽ khiến sh * t sợ anh ta.
Euphoric

74
Tôi chỉ muốn nói rằng công việc tốt để tìm kiếm một người / lập trình viên khác mà bạn không biết. Nó không làm cho nó trở thành một điều tồi tệ để hủy hoại sinh kế của họ bởi vì họ đã phạm sai lầm và bạn không biết họ, và tôi khen bạn đã tính đến nó.
Thép

8
@Dokkat Vấn đề là một trong số dư. Từ quan điểm của một lập trình viên, lập trình viên kém chất lượng có vợ và con thực sự đã gây nguy hiểm cho công ty, và do đó, công việc của nhiều nhân viên có vợ và con. Ngoài ra, vấn đề thường phức tạp bởi vấn đề tình cảm của "Lập trình viên tồi làm điều gì đó khiến cuộc sống của tôi khó khăn hơn. Bây giờ tôi phải bỏ lỡ thời gian dành cho gia đình. Họ quan trọng với tôi hơn anh ta. Điều này có vẻ không công bằng. " Đó là một phản ứng không hợp lý, nhưng mọi người hãy là người.
deworde

Câu trả lời:


114

Đầu tiên và quan trọng nhất ở đây, ưu tiên là đóng các lỗ hổng bảo mật.

Nếu bạn đang làm việc trực tiếp với kỹ sư đã viết nó, hãy ghi lại tất cả mọi thứ và đưa nó cho kỹ sư đó.

Nếu không, hãy nói với chủ nhân của bạn rằng các vấn đề bảo mật lớn hơn suy nghĩ ban đầu và trang web cần rất nhiều công việc. Yêu cầu làm việc với nhà phát triển chính trên trang web và đề nghị dạy họ về bảo mật PHP (đừng hứa biến người đó thành chuyên gia, nhưng hãy đề nghị đào tạo họ về mọi thứ bạn biết) để người đó có thể tiếp nhận sau khi bạn hoàn thành

Đừng biến điều này thành vấn đề "anh chàng này là xấu, sa thải anh ta". Tiếp cận nó từ quan điểm của "Này, tôi đã tìm thấy một số lỗi tiềm ẩn cần sửa lỗi, dường như xuất phát từ một số hiểu lầm / hiểu lầm phổ biến về bảo mật trang web. Tôi cũng muốn nói chuyện với sự phát triển của bạn để chúng tôi có thể cải thiện trang web của bạn và hy vọng tránh được nhiều vấn đề hơn trong tương lai. "


1
Câu trả lời tuyệt vời tổng thể. Chủ đề mang tính chủ quan, vì vậy tôi sẽ đánh dấu bạn vì nó được cộng đồng chấp nhận nhiều nhất.
MaiaVictor

1
Nếu bạn đang làm việc VỚI kỹ sư, nhưng được quản lý trả lương, bạn có nên báo cáo cho quản lý không? Điều gì sẽ xảy ra nếu kỹ sư cảm ơn bạn, nhưng khoảnh khắc bạn rời đi, phá hủy báo cáo?
Konerak

Hoặc nói với cả hai, hoặc nói với kỹ sư trước và xác minh rằng các lỗi đang được tạo và theo dõi trong bất kỳ hệ thống nào họ sử dụng. Nếu lỗi không được tạo, hãy báo cho quản lý.
Eric Hydrick

2
Tôi thích câu trả lời này tốt hơn: lập trình viên.stackexchange.com/a/189206/28351 , bởi vì đối với nhà tuyển dụng, các ưu tiên là khác nhau. Đầu tiên báo cáo các lỗ hổng bảo mật, sau đó sửa lỗi nhỏ.
nalply

80

Có một sự khác biệt giữa vô minh và bất tài. Đã có lúc bạn không biết SQL tiêm là gì và không có lý do gì để tin rằng lập trình viên ban đầu không có khả năng sửa chữa các vấn đề một khi anh ta nhận thức được chúng.

Vì vậy, nói với họ. Hãy cụ thể và khách quan, và sẵn sàng trả lời các câu hỏi, cung cấp các ví dụ về khai thác và đề xuất sửa chữa. Nếu họ vẫn không nhận được sau thời điểm đó, điều bạn thực sự có thể làm nhất là không đưa bất kỳ thông tin cá nhân nào của bạn lên trang web.


26
+1. Vô minh có thể được sửa chữa. Bất tài là một nghề nghiệp cho một số!
Mitch Wheat

20

Công việc của bạn không phải là làm lại trang web cho anh ta. Đó là để sửa lỗi nhỏ. Tuy nhiên, nếu bạn nhận thấy các vấn đề bảo mật cần được khắc phục, bạn có thể giải quyết vấn đề này với chủ sở hữu trang web và cung cấp cái nhìn sâu sắc về vấn đề có thể xảy ra.

Đừng đánh cược hoặc nói tiêu cực về nhà phát triển ban đầu hoặc nhận xét về mức độ khủng khiếp của mã. Hãy tôn trọng và chuyên nghiệp. Bạn có thể đề nghị làm việc với nhà phát triển để giải quyết các vấn đề. Đừng cố gắng tự khắc phục hoặc đưa ra giải pháp trừ khi bạn được ký hợp đồng để giải quyết vấn đề. Nếu họ làm theo lời khuyên của bạn và bạn sai, họ có thể quay lại với bạn.


17

Đầu tiên và quan trọng nhất - sửa chữa điều họ thuê bạn cho. Nếu bạn không làm điều đó, thì bạn sẽ được coi là kiểu nhà tư vấn quan tâm đến việc tạo ra nhiều công việc hơn cho chính họ, thay vì hoàn thành công việc.

Cùng với các bản sửa lỗi, bạn cần cung cấp cho họ một danh sách những thứ bạn nhận thấy sai từ góc độ bảo mật và tại sao những điều này lại sai.


13

Sẽ không có ai tốt để không báo cáo các vấn đề. Nếu bạn có một nhiệm vụ cụ thể mà bạn được thuê để hoàn thành nó nhưng ghi lại các vấn đề bảo mật khác khi bạn nhìn thấy chúng và báo cáo chúng cho cá nhân phù hợp, có thể là cá nhân mà bạn đang báo cáo cho nhiệm vụ mà bạn được thuê.

Đây là một tình huống mà các kỹ năng mềm mạnh mẽ sẽ có ích vì để xử lý việc này một cách khéo léo sẽ yêu cầu không đặt công việc của người khác lên trang web và không khiến nhà phát triển cảm thấy như bạn đang nghi ngờ tài năng của anh ta.

Rõ ràng tránh các từ như "tào lao, xấu, nghèo, đánh đố" khi đề cập đến mã / sai sót và các từ tương tự cho nhà phát triển đã viết trang web.


4
Tôi sẽ thêm: đảm bảo nhà phát triển nhận thức được mức độ nghiêm trọng của lỗ hổng và cách chúng có thể được khai thác. Dành thời gian để khởi động một 'cuộc tấn công' có kiểm soát trên một máy cục bộ có nhà phát triển này có thể giúp ích rất nhiều cho việc giáo dục anh ta về vấn đề này, điều này khiến bạn phải đề xuất các cách để làm cứng mã.
Andrew Gray

7

Ngoài các câu trả lời khác, những gì bạn có thể muốn làm là chỉ cho nhà phát triển một số tài nguyên về mức độ dễ dàng khai thác các vấn đề về SQL, ví dụ sqlmap là công cụ khai thác SQL Injection tự động.

Những gì tôi thấy có hiệu quả trong việc chứng minh tính nghiêm trọng của loại vấn đề này trong quá khứ là cho thấy những gì có thể được thực hiện với nó, vì vậy nếu bạn chạy một cái gì đó như thế chống lại một nhà phát triển. bản sao của trang web để hiển thị nó trích xuất dữ liệu, vv bạn có thể thuyết phục họ về mức độ nghiêm trọng.


4
Hãy lưu ý rằng điều này có một số rủi ro, trong đó bạn có thể được coi là "hacker". Người quản lý không nhất thiết phải hiểu các thuật ngữ như "lỗ hổng hiện tại", "bản sao phát triển" và "nhà phân tích bảo mật mũ trắng"
deworde

0

Đầu tiên và duy nhất; Quản lý không muốn nghe về vấn đề. Tôi đã bị sa thải khỏi Văn phòng Quản lý Nhân sự (giải phóng mặt bằng an ninh cho nhà trắng) vì tôi đã chỉ ra hệ thống của họ không an toàn như thế nào. Đó là một thời gian trở lại, nhưng thái độ quản lý đã không thay đổi.

Giải quyết vấn đề với nhà phát triển, qua email để bạn có đường mòn, sau đó đi bộ hoặc chạy trốn. Khi cuối cùng họ có vấn đề, với tư cách là một nhà thầu, họ sẽ cố gắng đổ lỗi cho bạn, bất kể có liên quan gì thậm chí có liên quan đến vấn đề từ xa.

Có một vấn đề cơ bản như việc tiêm SQL, cho thấy chúng rẻ khi chúng ban đầu phát triển hệ thống và tỷ lệ cược là chúng có giá rẻ nhất hiện nay. Có được những gì bạn có thể từ họ khi họ vẫn đang kinh doanh, nhưng tìm kiếm sự phát triển kinh doanh ở nơi khác.


3
"Quản lý không muốn nghe về các vấn đề" - thêm một số lý do / tài liệu tham khảo để hỗ trợ cho khẳng định của bạn (điều này nghe có vẻ hợp lý với tôi nhưng điều này không thực sự quan trọng) và tôi sẽ thu hồi downvote
gnat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.