Phải làm gì khi công ty của bạn không mã hóa mật khẩu


13

Lý lịch

Tôi đã được ký hợp đồng để giúp một công ty duy trì máy chủ của họ. Tôi làm việc trên một số dự án PHP nhỏ nhưng cũng xem xét các vấn đề về hiệu năng và gần đây, quét nhật ký cho tin tặc.

Những kẻ này đã chạy máy chủ của họ một thời gian và có cái mà tôi sẽ gọi là một ứng dụng cũ trên đôi chân cuối cùng của nó. Nó sử dụng các trích dẫn ma thuật, các biến toàn cục (cho phép $idghi đè bằng $_GET['id']), sử dụng .htaccess làm bảo mật duy nhất của chúng trong một số trường hợp, bạn đặt tên cho nó. Một cơn ác mộng về bảo mật và lập trình.

Chúng tôi đã bị hack trong quá khứ, chủ yếu là với SQL tiêm, sẽ chạy SLEEP(99999999)các lệnh và hoạt động như một cuộc tấn công DOS. May mắn thay, họ đã không chạy "bàn bgie nhỏ",

http://xkcd.com/327/

XKCD: http://xkcd.com/327/

Vì vậy, tôi đã viết lại các câu lệnh SQL dễ bị tổn thương của họ từ mysql_query()(không phải mysqli) sang các giao dịch PDO. Tôi cũng đang phân tích các truy vấn SLEEPUNION, chúng tôi không sử dụng nhưng tiêm có. Càng xa càng tốt.

Vấn đề mới nhất

Gần đây, chúng tôi đã được thông báo rằng các hồ sơ đang thay đổi trong DB cho người dùng, chẳng hạn như địa chỉ email của họ thành địa chỉ có thể được tạo bởi những kẻ gửi thư rác.

Tôi nhận thấy các cột của họ không có last_modifiedcột, vì vậy chúng tôi thậm chí không thể biết khi nào chúng được thay đổi, chứ đừng nói đến ai. Tôi đã thêm cột đó, nhưng đó chỉ là bước đầu tiên.

Khi tôi nhìn vào bảng này, tôi nhận thấy các mật khẩu không được muối hoặc thậm chí không được băm, chỉ được lưu dưới dạng văn bản gốc.

Giao tiếp khách hàng

Làm thế nào tôi có thể tiếp cận họ về toàn bộ tình huống, với tư cách là một nhà thầu, mà không vung tay như một kẻ điên? Có lời khuyên nào không? Tôi đã suy nghĩ một cách tiếp cận bình tĩnh của,

    VẤN ĐỀ # 1
        Tóm tắc
        Tại sao đây là một vấn đề
        Điều gì có thể xảy ra nếu điều này không được sửa
        Đề xuất sửa chữa

    VẤN ĐỀ 2
        Tóm tắc
        Tại sao đây là một vấn đề
        Điều gì có thể xảy ra nếu điều này không được sửa
        Đề xuất sửa chữa
        

Suy nghĩ của tôi là, bất kể mật khẩu văn bản đơn giản là không lớn. Nếu bạn đã thay đổi tất cả các truy vấn thành PDO và đang sử dụng các câu lệnh đã chuẩn bị, trừ khi có thay đổi phần ect email của bạn. Họ không thể thực hiện một truy vấn SQL để thay đổi địa chỉ email ect
Liam Sorsby

1
Tôi đã không thay đổi / tất cả / truy vấn thành PDO, xin lỗi, tôi đã thay đổi những truy vấn mà chúng tôi thấy đang bị ảnh hưởng bởi việc tiêm SQL.
bafromca

Liệu một giải pháp tốt hơn có thể là thêm một lớp PDO và sau đó triển khai lớp đó thông qua trang web không? sau đó suy nghĩ về việc băm mật khẩu và sử dụng muối tuy nhiên điều này có thể hơi tốn thời gian vì bạn nói đây là một ứng dụng "Di sản" tôi cho rằng nó có một vài người dùng hợp lý.
Liam Sorsby

5
Tôi muốn sửa lại 'những gì có thể xảy ra' thành 'những gì đã xảy ra' vì chúng đã bị hack và thông tin đăng nhập của người dùng đã được đưa vào tay tin tặc.
James Snell

Có vẻ như câu hỏi của bạn chỉ là về giao tiếp với khách hàng của bạn. Thành thật mà nói, bạn nên biết người liên lạc của bạn và làm thế nào để tiếp cận họ. Giữ bình tĩnh luôn là một chiến lược tốt, chỉ cần chỉ ra các rủi ro cho khách hàng của bạn và để anh ta quyết định về sự khẩn cấp.
Doc Brown

Câu trả lời:


15

Cách tiếp cận bình tĩnh mà bạn đề nghị sẽ là tốt nhất. Chỉ ra rằng khi dữ liệu này bị lộ, hầu hết người dùng của bạn sẽ dễ bị đánh cắp thông tin nhận dạng do sử dụng lại mật khẩu. Đây sẽ là thời điểm khá tốt để chỉ ra rằng đây là cùng một vấn đề ảnh hưởng đến Target (giả sử rằng công ty không phải là Target). Và người quản lý của bạn nên khá dễ chấp nhận để thay đổi điều này.

Liên quan đến tính hợp pháp với dữ liệu, tôi không tin rằng tên người dùng / mật khẩu được coi là giống như Dữ liệu CC, Thông tin cá nhân, v.v. Mặc dù nó có thể phụ thuộc vào thông tin mà bạn có cho người dùng. Tôi không phải là một luật sư và những khía cạnh này sẽ được đưa ra tốt nhất trong tiết lộ của bạn và nên được đưa đến bộ phận pháp lý của công ty bạn để xác định tính hợp pháp.

https://en.wikipedia.org/wiki/In information_privacy_law

Và bạn có XKCD này để giúp bạn:

nhập mô tả hình ảnh ở đây


4

Nó thực sự phụ thuộc vào đối tượng mà bạn đang cố gắng tiếp cận với điều này. Tôi đã làm việc trong các công ty có vấn đề bảo mật nghiêm trọng như bạn nói nhưng họ từ chối nghe cho đến khi tôi cho họ xem.

Một cách tiếp cận, nếu khả thi, là kết hợp về cơ bản những gì bạn đang dự định sẽ làm như là chia thành từng mục những gì đã có thể xảy ra trong các vụ hack này. Nếu đối tượng của bạn không có kỹ thuật, có lẽ bạn cần chỉ ra chi phí kinh doanh mà những thỏa hiệp này có thể có. Rõ ràng các tài khoản bị hack làm giảm uy tín trong hệ thống của bạn và nhận thấy giá trị khách hàng của sản phẩm của bạn. Chưa kể một hệ thống bị xâm nhập với mật khẩu văn bản và địa chỉ email đơn giản cho người dùng có thể gây ra hiệu ứng gợn sóng nghiêm trọng.

Điều tiếp theo bạn nên làm, nếu có thể, là chứng minh điều đó. Nếu bạn có thể đứng hệ thống này trong một môi trường thử nghiệm, hãy làm điều đó. Sau đó chứng minh trước mặt họ loại tác động bạn có thể có đối với hệ thống từ phía máy khách của ứng dụng. Ngay cả với dân công nghệ, điều này đã được chứng minh là khá thuyết phục đối với tôi (mặc dù họ vẫn không thường hành động trong trường hợp của tôi).

Tất nhiên, như bạn đã nói, bạn cần phải giải thích nếu có bất kỳ biện pháp nào nên được thực hiện và ước tính về nỗ lực để thực hiện điều đó. Nó sẽ giúp họ biện minh cho chi phí mặc dù một số nơi chỉ đơn giản là không quan tâm. Ít nhất bạn có thể xóa ý thức của bạn và tiến về phía trước biết bạn đã cố gắng.


2

Nếu như bạn nói bạn đã được ký hợp đồng bảo trì máy chủ của họ, chắc chắn hợp đồng này phải bao gồm trong các nhiệm vụ mô tả công việc như đảm bảo tính toàn vẹn, bảo mật và tính sẵn có của hệ điều hành, phần mềm ứng dụng và tất cả dữ liệu, v.v?! Nếu thậm chí có một gợi ý mơ hồ rằng hợp đồng mong đợi (và chịu trách nhiệm với bạn) về việc đảm bảo máy chủ được an toàn thì tôi sẽ không lãng phí thời gian để đặt các trường hợp kinh doanh lại với nhau và chỉ làm tốt việc đảm bảo các vấn đề được khắc phục (lấy một bản sao lưu trước và sau, giữ một lịch sử phiên bản thay đổi mã của bạn).

Tôi sẽ không mong đợi một sự thay đổi như thế này sẽ mất nhiều công sức hơn một buổi sáng và nếu họ hỏi bạn đã dành thời gian cho công việc gì thì bạn có thể giữ một tạp chí để giải thích và biện minh cho hành động của mình. Với điều kiện bạn đang làm việc trong phạm vi hợp đồng của mình, sẽ không có vấn đề gì ở đây. Đôi khi việc điên cuồng bảo mật trước những người ra quyết định gây hoang mang hoặc trong trường hợp xấu nhất tạo cơ hội cho họ nói rằng họ không quan tâm đến những vấn đề đó vì vậy đừng khắc phục, trong khi đó hợp đồng của bạn vẫn khiến bạn phải chịu trách nhiệm trong trường hợp vi phạm! Có lẽ đây không phải lúc nào cũng là cách tiếp cận thân thiện với doanh nghiệp nhất nhưng đạo đức nghề nghiệp của tôi sẽ không cho phép tôi để lại mật khẩu không được mã hóa trong bất kỳ hệ thống nào mà tôi từng chịu trách nhiệm vì đã khiến tôi chú ý.

Từ kinh nghiệm cá nhân tôi có xu hướng tìm thấy bất cứ khi nào tôi bắt đầu làm việc cho một chủ nhân hoặc khách hàng mới, thảo luận về các kịch bản và kỳ vọng trả trước có thể giúp bạn giảm bớt căng thẳng, ví dụ: nếu tôi tìm thấy bất kỳ vấn đề bảo mật nào tôi có thể khắc phục Tôi đi trước và hoàn thành công việc này mà không đến với bạn mọi lúc, chỉ thông báo cho bạn về những vi phạm / sự cố đáng ngờ? Họ hầu như sẽ luôn đồng ý với điều này bởi vì theo quan điểm của họ, họ không quan tâm đến việc lo lắng về bảo mật hoặc công cụ máy tính - đó là lý do tại sao họ đã thuê bạn! Có lẽ điều này không trả lời câu hỏi theo cách bạn đang mong đợi nhưng tôi hy vọng nó mang lại cho thực phẩm suy nghĩ. Chúc bạn mọi điều tốt đẹp và hy vọng vấn đề sẽ được khắc phục!


Đó là một câu trả lời tuyệt vời. Đôi khi đưa ra các vấn đề với "những người ra quyết định tiền tuyến" gây ra sự hoảng loạn nhiều hơn giá trị của nó và có vẻ thông minh hơn khi chỉ sửa nó ở hậu trường. Tôi không thích làm việc đằng sau những người trả lương cho tôi nhưng vấn đề trách nhiệm cá nhân là một đối số chính. Tôi có thể muối + băm mật khẩu dễ dàng và sau đó xóa cột mật khẩu opentext khi mọi thứ được chuyển qua. Tuy nhiên, vấn đề lớn nhất là mật khẩu có thể đã được xem và nắm bắt.
bafromca

Một thực tế đáng tiếc là thời gian không thể quay trở lại thời điểm trước khi vi phạm, vì vậy trong khi doanh nghiệp có thể sẽ phải quyết định liệu họ có thông báo cho khách hàng của họ về vi phạm hay không, điều quan trọng nhất với tôi là luôn hành động để ngăn chặn hơn nữa vi phạm. Nếu giám đốc không muốn thông báo cho người dùng vi phạm, thay vào đó bạn có thể nhắc nhở khách hàng sau khi đăng nhập bằng một thông báo như 'Sau những cải tiến được thực hiện đối với bảo mật trang web của chúng tôi, chúng tôi hiện yêu cầu bạn chọn mật khẩu an toàn hơn bao gồm chữ hoa, chữ thường và số và tối thiểu 8 ký tự: '.
richhallstoke

0

Chắc chắn nếu việc thay đổi địa chỉ email của khách hàng đã xảy ra và đó được coi là một vấn đề - thì khả năng thay đổi mật khẩu cũng là một vấn đề.

Bây giờ, nếu bạn đã bảo mật DB đủ để ngăn điều này xảy ra trong tương lai, thì khả năng bất kỳ ai cũng có thể chỉnh sửa mật khẩu của người dùng cũng được sửa tương tự và bạn chỉ phải xem xét liệu có ai đó có thể đọc mật khẩu ngay bây giờ không.

Tất nhiên nếu họ có thể, hoặc nếu (trong trường hợp không thể xảy ra ) mà bạn chưa bảo mật hoàn toàn DB thì chắc chắn nên mã hóa mật khẩu - làm thế nào để làm điều đó? Chỉ cần đặt nó trong cùng bối cảnh với vấn đề "có địa chỉ email được cập nhật". Việc này có yêu cầu ứng dụng thay đổi hay không và liệu đó có phải là vấn đề "quá khó" hay không là một vấn đề khác cần được nêu ra với họ. Nhìn vào mã và xem chi phí thay đổi sẽ là bao nhiêu trước khi thực hiện sửa lỗi được đề xuất cho họ.

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.