DataFlow object attributes need work (or moves)

Đang mở
#111 16 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 3 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
20/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
python
Lĩnh vực
security

Hướng nghiên cứu

Bắt đầu bằng cách tìm định nghĩa đối tượng DataFlow và các định nghĩa Source và Sink liên quan. Xem xét cách các thuộc tính response, data, protocol, encryption, authentication và port hiện đang được sử dụng, sau đó xác định thuộc tính nào thuộc về từng đối tượng. Công việc được xem là hoàn tất khi ownership và ngữ nghĩa đã được thống nhất, đồng thời mô hình đã được cập nhật nhất quán.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

enhancement

Many of the attributes defined for the DataFlow object belong elsewhere:

Correctly assigned:

  • source = varElement(None, required=True)
    
  • sink = varElement(None, required=True)
    
  • order = varInt(-1, doc="Number of this data flow in the threat model")
    
  • note = varString("")
    

Maybe correct:

  • isResponse = varBool(False, doc="Is a response to another data flow") --> Is this a dup with `responseTo`?
    
  • response = varElement(None, doc="Another data flow that is a response to this one") --> If this is non-empty, is either `isResponse` or `responseTo` needed (since it would be detectable as True if non-empty)?
    
  • responseTo = varElement(None, doc="Is a response to this data flow") --> Is this a dup with `isResponse`?
    
  • data = varData([], doc="Default type of data in incoming data flows") --> Does this represent the data sent by the source, or returned by the sink? I think this highlights a challenge in setting data to the flow and not associating the connection to the source as sender of data, and server is replier of data.
    

Should be a property of the Source:

  • srcPort = varInt(-1, doc="Source TCP port")
    
  • isEncrypted = varBool(False, doc="Is the data encrypted") --> Clarification needed - is this data encryption independent of the protocol?
    
  • authenticatesDestination = varBool(False, doc="""Verifies the identity of the destination,
    
  • for example by verifying the authenticity of a digital certificate.""")
  • checksDestinationRevocation = varBool(False, doc="""Correctly checks the revocation status
    
  • of credentials used to authenticate the destination""")

Should be a property of the Sink:

  • usesSessionTokens = varBool(False)
    
  • authorizesSource = varBool(False)
    
  • usesLatestTLSversion = varBool(False) --> This will become out of date (TLS 1.2 to TLS 1.3 to whatever is next), and TLS is not the only option for secure protocol, so maybe this should be a list
    
  • implementsAuthenticationScheme = varBool(False)
    
  • authenticatedWith = varBool(False)
    
  • protocol = varString("", doc="Protocol used in this data flow") --> With this list, it is possible to check for `usesLatestTLSversion` state
    
  • dstPort = varInt(-1, doc="Destination TCP port")
    

Should be a property of either source or sink:

  • usesVPN = varBool(False) --> DataFlows are associated with a source (the initiator) and a sink (the target). It is either the source or sink that determines if a VPN is in use. The source may use one, or the sink may do so, or both, but the DataFlow would if anything inherit the state of this flag based on `source.usesVPN or sink.usesVPN`. 
    
  • implementsCommunicationProtocol = varBool(False) --> Sink always determines the protocol to be used by the source, but this may also apply to the source's comm stack
    
Ngôn ngữ chính
Python
Star
1.2k
Fork
237
Merge trung bình
4 ngày 2 giờ
Pull request đã merge (30 ngày)
9

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của OWASP/pytm

Tất cả issue của OWASP/pytm

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.