Güvenlik yoğun bir site için küçük bir hatayı düzeltmek için işe alındınız. Şifreye bakıldığında, güvenlik delikleriyle dolu. Ne yaparsın? [kapalı]


109

Bir sitede küçük işler yapmak için birileri tarafından işe alındım. Büyük bir şirket için bir site. Çok hassas veriler içeriyor, bu yüzden güvenlik çok önemli. Kodu analiz ettikten sonra, güvenlik delikleriyle dolu olduğunu fark ettim - okudum, bir çok PHP dosyasını doğrudan / mysql isteklerine ve sistem komutlarına girdi / yazarak girdi.

Sorun şu ki, siteyi kendisi için yapan kişi, bu işe bağımlı olan aile ve çocukları olan bir programcıdır. Ben sadece söyleyemem: "siteniz bir senaryo kiddie eğlence parkı. Sizin için tekrar yapmama izin verin ve iyi olacaksınız."

Bu durumda ne yapardın?

Güncelleme:

Burada bazı iyi tavsiyelere uydum ve geliştiriciye sitedeki bazı olası güvenlik kusurlarını bulduğumu kibarca söyledim. Çizgiyi belirttim ve orada SQL enjeksiyon saldırıları için olası bir güvenlik açığı olabileceğini söyledim ve bunu biliyor mu diye sordum. O, “Elbette, ama bundan yararlanmak için saldırganın veritabanının yapısı hakkında bilgi sahibi olması gerektiğini; daha iyi anlamam gerektiğini” söyledi .

Güncelleme 2:

Her zaman böyle olmadığını söyledim ve doğru şekilde başa çıkmak için bu Yığın Taşması soru bağlantısını izlemesini önerdim: PHP'de SQL enjeksiyonunu nasıl önleyebilirim? Çalışacağını söyledi ve daha önce söylediğim için teşekkür etti. Sanırım benim işim bitti, teşekkürler beyler.


29
Birinin hayatını mahvetmeyi içermeyen bir çözümden gerçekten zevk alırdım. Bunu yalnız bırakırdım ama aynı zamanda bazı insanların hayatlarını da mahvedebilecek bir güvenlik deliği olduğunu da biliyorum. Karmaşık.
MaiaVictor

18
Saldırgan, veritabanının yapısı hakkında bilgi almak için bu istisnayı kullanabilir. Hiçbir SQL enjeksiyon açığı gerektiğini hiç küçümsedi edilecek.
Dave Rager

17
Veritabanına ilişkin hiçbir bilgi kullanmadan, güvenlik açığından nasıl yararlanabileceğini gösterin. Bu ondan * korkacak.
Öforik

74
Sadece tanımadığın başka bir kişiye / programcıya bakarken iyi iş demek istiyorum. Geçim kaynaklarını mahvetmek korkunç bir şey yapmaz, çünkü bir hata yaptılar ve siz onları tanımıyorsunuz ve bunu hesaba kattığınız için sizi takdir ediyorum.
Çelik

8
@Dokkat Sorun dengeden biri. Bir programcının bakış açısından bakıldığında, eşi ve çocuğu olan düşük kaliteli programcı, şirketi ve dolayısıyla birçok çalışanın eşleri ve çocukları olan işlerini tehlikeye attı. Ayrıca, bu sorun genellikle "Kötü programcı hayatımı zorlaştıran bir şey yapar. Şimdi ailemle vakit geçirmeyi kaçırmam gerekiyor. Benim için olduğundan daha önemli. Bu haksız görünüyor." " Bu mantıksız bir tepki, ama millet millet.
deworde

Yanıtlar:


114

Öncelikle burada en önemlisi, güvenlik deliklerini kapatmak önceliktir.

Doğrudan bunu yazan mühendisle çalışıyorsanız, her şeyi belgeleyin ve o mühendise verin.

Olmazsa, işvereninize güvenlik konularının başlangıçta düşünülenden daha büyük olduğunu ve sitenin çok fazla çalışma gerektirdiğini söyleyin . Sitede bulunan ana geliştirici ile birlikte çalışmayı ve onlara PHP güvenliği hakkında bilgi vermeyi teklif et işin bittikten sonra.

Bunu "bu adam kötü, kov onu" meselesi yapmayın . "Hey, site güvenliği ile ilgili bazı cehalet / genel yanlış anlamalardan kaynaklanıyor gibi görünen stat stat'ünü düzeltmek için bazı potansiyel hatalar buldum. Sitenizi geliştirebilmemiz için gelişiminizle de görüşmek istiyorum. ve umarım gelecekte bu sorunlardan daha fazla kaçının. "


1
Genel olarak harika cevaplar. Konu öznel, bu yüzden sizinkini topluluk tarafından en çok kabul edilen olarak işaretleyeceğim.
MaiaVictor

1
Mühendisle çalışıyorsanız ancak yönetim tarafından ödeniyorsanız, yönetime rapor vermemelisiniz? Mühendis size teşekkür eder, ancak bıraktığınız an raporu yok ederse ne olur?
Konerak

Her ikisine de söyleyin ya da önce mühendise söyleyin ve kullandıkları sistemde hataların yaratıldığını ve izlendiğini doğrulayın. Hatalar yaratılmadıysa, yönetime bildirin.
Eric Hydrick

2
Bu cevabı daha çok sevdim: programmers.stackexchange.com/a/189206/28351 , çünkü işveren için öncelikler farklı. Önce güvenlik boşluklarını bildirin, sonra küçük hatayı düzeltin.
saat

80

Cehalet ve beceriksizlik arasında bir fark var. Hangi SQL enjeksiyonunun ne olduğunu bilmediğiniz bir zaman vardı ve orijinal programcının sorunları kendilerine bildirdikten sonra düzeltebilecek kapasitede olduğuna inanmak için hiçbir neden yoktu.

Öyleyse onlara söyle. Belirli ve objektif olun ve soruları yanıtlamak, istismar örnekleri sunmak ve düzeltmeler için önerilerde bulunmak için hazır olun. Bu noktadan sonra hala alamadılarsa, gerçekten yapabileceğiniz en fazla şey kişisel bilgilerinizi siteye koymak değildir.


26
+1. Cehalet düzeltilebilir. Beceriksizlik, bazıları için bir kariyer!
Mitch Wheat

20

İşiniz siteyi onun için tekrarlamak değil. Küçük hatayı düzeltmek için. Bununla birlikte, düzeltilmesi gereken güvenlik sorunlarını fark ettiyseniz, sorunu site sahibine bulabilir ve sorunun ne olabileceği hakkında fikir edinebilirsiniz.

Orijinal geliştirici hakkında olumsuz konuşma veya olumsuz konuşma ya da kodun ne kadar korkunç olduğu konusunda yorum yapma. Saygılı ve profesyonel olun. Sorunları çözmek için geliştirici ile birlikte çalışmayı önerebilirsiniz. Sorunu çözmediğiniz sürece kendiniz tamir etmeye ya da bir çözüm sunmaya çalışmayın. Tavsiyene uyuyorlarsa ve yanılıyorsan, sana geri dönebilirler.


17

İlk ve en önemlisi - sizi işe aldıkları şeyi düzeltin. Bunu yapmazsanız, o zaman işi yapmak yerine kendileri için daha fazla iş yapmak isteyen ilgilenen bir danışman türü olarak algılanırsınız.

Düzeltmelerin yanı sıra, onlara güvenlik açısından yanlış olduğunu fark ettiğiniz şeylerin bir listesini ve bunların neden yanlış olduğunu da göstermelisiniz.


13

Sorunları bildirmemek iyi bir şey yapmaz. Belirli bir göreviniz varsa, işe almanız için işe alındınız, ancak gördüğünüz diğer güvenlik sorunlarını belgeleyin ve uygun bir kişiye, muhtemelen işe alındığınız görev için rapor verdiğiniz kişiye bildirin.

Bu, güçlü yumuşak becerilerin işe yarayacağı ve bununla başa çıkmak için kullanışlı olacağı bir durumdur, bu da sitedeki diğer kişilerin yaptıkları işleri yapmamayı ve geliştiricinin yeteneğini sorguluyormuş gibi hissetmesini gerektirmez.

Açıkçası, siteyi yazan geliştiricinin koduna / kusurlarına ve benzer kelimelere atıfta bulunurken "bok, kötü, fakir, bilmeceli" gibi kelimelerden kaçının.


4
Eklerdim: geliştiricinin kusurların ciddiyeti ve nasıl kullanılabileceğinin farkında olduğundan emin olun. Bu geliştiricinin hazır bulunduğu yerel bir makineye kontrollü bir 'saldırı' başlatmak için zaman ayırmak, sorunu bu konuda eğitmek için çok işe yarayabilir;
Andrew Gray

7

Yapmak isteyebileceğiniz diğer cevaplara ek olarak, geliştiriciyi SQL enjeksiyon sorunlarından ne kadar kolay yararlanabileceği konusunda bazı kaynaklara, örneğin otomatik bir SQL Injection kullanım aracı olan sqlmap'a yönlendirin.

Geçmişte bu tür bir sorunun ciddiyetini göstermede etkili olduğunu bulduğum şey, onunla neler yapılabileceğini göstermektir, eğer böyle bir şeyi bir deve karşı çalıştırırsanız. Sitenin bir kopyasını çıkardığını göstermek için vb. bilgileri ciddiye almanız konusunda ikna edebilirsiniz.


4
Bunun bir “hacker” gibi görünmenizin sağlanabileceği riskleri olduğunu unutmayın. Yönetim çalışanları mutlaka "mevcut güvenlik açığı", "geliştirme kopyası" ve "beyaz şapka güvenlik analisti" gibi terimleri anlamıyor
deworde

0

İlk ve tek; Yönetim problemleri duymak istemiyor. Personel Yönetimi Ofisi'nden (beyaz saray için güvenlik izni) kovuldum çünkü sistemlerinin ne kadar güvensiz olduğuna dikkat çektim. Bu bir süre önceydi, ancak yönetim tutumları değişmedi.

Geliştiriciyle ilgili sorunu e-postayla ele alın; böylece bir iz elde edersiniz, sonra yürüyün veya kaçın. Bir müteahhit olarak sonunda bir problemleri olduğunda, problemle uzaktan bile olsa herhangi bir ilişkiye sahip olsanız da sizi suçlamaya çalışacaklar.

Bir SQL enjeksiyonu kadar temel bir soruna sahip olmak, sistemi ilk geliştirdikleri zaman ucuz olduklarını ve olasılıkların şu anda en ucuza geldiklerini gösteriyor. Hala işteyken, onlardan alabildiklerini al, ama başka yerlerde iş geliştirmeye çalış.


3
"Yönetim problemleri duymak istemiyor" - iddiasını desteklemek için bazı akıl yürütme / referanslar ekleyin (ki bu bana mantıklı geliyor ama bu gerçekten önemli değil) ve aşağı oyu iptal edeceğim
gnat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.