2012-10-08 32 views
11

Tôi đang sử dụng Fortify SCA để tìm các vấn đề bảo mật trong đơn đăng ký của tôi (dưới dạng bài tập về nhà ở đại học). Tôi đã gặp phải một số vấn đề 'Đăng nhập' mà tôi không thể thoát khỏi.đăng nhập rèn củng cố sửa chữa

Về cơ bản, tôi đăng nhập một số giá trị mà đến như là người dùng nhập vào từ một giao diện web:

logger.warn("current id not valid - " + bean.getRecordId())); 

và Fortify báo cáo này như một khúc gỗ rèn vấn đề, bởi vì getRecordId() trả về một đầu vào người dùng.

Tôi đã theo article này, và tôi thay thế 'dòng mới' với không gian, nhưng vấn đề này vẫn báo cáo

logger.warn("current id not valid - " + Util.replaceNewLine(bean.getRecordId())); 

bất cứ ai có thể đề xuất một cách để khắc phục vấn đề này?

+0

IMHO nó là tất cả về nội dung, :) như một thói quen tốt bạn cần phải khử trùng đầu vào người sử dụng, và điều này nên được được coi là một cảnh báo rằng trong các tình huống nhất định, như các kiến ​​trúc phần mềm không đồng nhất (gọi là ứng dụng C từ JAVA) đầu vào người dùng không an toàn có thể nguy hiểm (thay thế dòng mới là cách xa cách khử trùng thích hợp;)), cũng có thể tấn công định dạng. ID là một số (Long, Integer, Double) bạn có thể bỏ qua nó :), nếu đó là chuỗi bạn cũng có thể bỏ qua nó nhưng hãy nhớ về nó :). – fatfredyy

Trả lời

6

Alina, tôi thực sự là tác giả của bài viết bạn đã sử dụng để giải quyết sự cố đăng nhập của bạn. Hy vọng nó là hữu ích.

Vitaly là chính xác liên quan đến Fortify. Bạn sẽ cần phải xây dựng những gì Fortify gọi là "quy tắc tùy chỉnh".

Nó có thể sẽ là quy tắc làm sạch luồng dữ liệu. Một ví dụ cơ bản có thể được tìm thấy ở đây: http://www.cigital.com/newsletter/2009-11-tips.php. Nếu bạn sở hữu Fortify, sẽ có hướng dẫn viết quy tắc tùy chỉnh trong tài liệu sản phẩm của bạn.

Tôi không biết lá cờ taint bạn sẽ sử dụng là gì, nhưng nó trông giống như "-LOG_FORGING". Bạn về cơ bản sẽ viết một quy tắc để loại bỏ việc đăng nhập giả mạo "taint" bất cứ khi nào dữ liệu được truyền qua phương thức tiện ích của bạn. Củng cố họ sẽ giả định rằng bất kỳ dữ liệu nào được truyền qua đều an toàn để được ghi vào nhật ký và sẽ không gây ra việc ghi nhật ký.

+0

Cảm ơn John! Theo lời khuyên của bạn và tài liệu tôi quản lý để viết quy tắc tùy chỉnh tôi cần. Bài viết của bạn cũng rất hữu ích. –

+2

liên kết này không tồn tại nữa: http://www.cigital.com/newsletter/2009-11-tips.php – Coder17

2

Bạn cần đánh dấu thay thế của mìnhNewLine là sanitiser trong Fortify (nếu tôi nhớ chính xác) và nó sẽ ngừng báo cáo sự cố.

+0

Bất kỳ chi tiết nào khác về tùy chọn này để đánh dấu phương pháp là 'vệ sinh'? Tôi đang sử dụng Fortify Audit Workbench và tôi không thể tìm thấy tùy chọn. –

+0

Tôi phát hiện ra rằng có một cái gì đó gọi là "Fortify Java chú thích", tôi hy vọng tôi có thể tìm thêm thông tin về việc này. –

+0

Tôi xin lỗi, tôi đã không chạm vào nội dung này trong một thời gian. Nói chuyện với Fortify hỗ trợ là lựa chọn tốt nhất của bạn - đây là một sản phẩm đắt tiền và hỗ trợ là ok lần cuối cùng tôi sử dụng nó. –

8

Tôi biết điều này đã được trả lời, nhưng tôi nghĩ một ví dụ sẽ được tốt đẹp :)

<?xml version="1.0" encoding="UTF-8"?> 
<RulePack xmlns="xmlns://www.fortifysoftware.com/schema/rules"> 
    <RulePackID>D82118B1-BBAE-4047-9066-5FC821E16456</RulePackID> 
    <SKU>SKU-Validated-Log-Forging</SKU> 
    <Name><![CDATA[Validated-Log-Forging]]></Name> 
    <Version>1.0</Version> 
    <Description><![CDATA[Validated-Log-Forging]]></Description> 
    <Rules version="3.14"> 
    <RuleDefinitions> 
     <DataflowCleanseRule formatVersion="3.14" language="java"> 
     <RuleID>DDAB5D73-8CF6-45E0-888C-EEEFBEFF2CD5</RuleID> 
     <TaintFlags>+VALIDATED_LOG_FORGING</TaintFlags> 
     <FunctionIdentifier> 
      <NamespaceName> 
      <Pattern/> 
      </NamespaceName> 
      <ClassName> 
      <Pattern>Util</Pattern> 
      </ClassName> 
      <FunctionName> 
      <Pattern>replaceNewLine</Pattern> 
      </FunctionName> 
      <ApplyTo implements="true" overrides="true" extends="true"/> 
     </FunctionIdentifier> 
     <OutArguments>return</OutArguments> 
     </DataflowCleanseRule> 
    </RuleDefinitions> 
    </Rules> 
</RulePack> 
+0

bạn thêm mã này ở đâu? – Coder17

Các vấn đề liên quan