Unit 6 Notes
Unit 6 Notes
Tools:
Types of Fuzzing
There are various types of fuzzing techniques, and each method has a different
approach to generating and sending inputs to the target system.
Mutation-based Fuzzing:
o This technique modifies existing valid inputs (test cases) to create
new test cases.
o The fuzzer takes a corpus of known inputs and mutates them by
changing bytes, flipping bits, or removing sections of the data.
o This is typically effective when no prior knowledge of the system
is required.
Generation-based Fuzzing:
o In this approach, the fuzzer generates inputs from scratch, often
following the protocol or format specification.
o This can be more effective when you know the expected input
structure, as the fuzzer can create inputs that are specifically
designed to test boundaries or edge cases.
Protocol-based Fuzzing:
o Targeting specific communication protocols (e.g., HTTP, FTP,
etc.), this fuzzer sends malformed data that could trigger a
vulnerability in the protocol handler.
White-box Fuzzing (Coverage-guided Fuzzing):
o This approach uses program analysis (such as code coverage) to
guide the fuzzing process.
o Tools like AFL (American Fuzzy Lop) are widely used for this
purpose. The fuzzer will adjust its input generation based on the
execution paths it takes, increasing the chances of discovering
vulnerabilities.
Black-box Fuzzing:
o This type of fuzzing works without any knowledge of the internal
workings of the target application or system. The fuzzer only
knows how to interact with the system externally.
Grey-box Fuzzing:
o Grey-box fuzzing is a hybrid approach that combines elements of
both white-box and black-box fuzzing.
o It provides some level of insight into the internals of the program
(such as runtime behaviors) but does not require complete
knowledge of the code base.
Symbolic Execution:
Static Analysis:
Advantages:
Symbolic execution involves running a program with symbolic values instead of
execution paths the program might take based on the symbolic variables.
This means it tracks the program’s state and the conditions under which
collects path constraints, which are logical conditions that must hold true
are generated as the program evaluates if- else conditions, loops, and
satisfied. The solver checks whether there is any possible input that
There are different ways symbolic execution can be applied, depending on the
goals and the techniques used:
Secure Architecture
Secure architecture refers to the design and implementation of systems,
networks, and applications with security as a foundational principle. The
goal is to reduce vulnerabilities, minimize risks, and ensure the
confidentiality, integrity, and availability (CIA) of data and resources.
Secure architecture integrates security at every layer and stage of the
development and deployment process.
1. Encryption:
o Use encryption for data in transit and at rest to prevent
unauthorized access.
o Example: SSL/TLS for web communications.
2. Access Control:
o Implement strict access policies using VPNs, firewalls, and role-
based controls.
3. Endpoint Security:
o Secure devices that connect to the network to prevent malware and
unauthorized access.
1. Input Validation:
o Validate all user inputs to prevent injection attacks like SQL
injection or cross-site scripting (XSS).
2. Secure Authentication and Authorization:
o Use strong authentication methods and enforce access controls
based on roles or attributes.
3. Error Handling:
o Ensure error messages do not reveal sensitive system information.
o Example: Generic error messages instead of stack traces.
4. Session Management:
o Securely handle user sessions with measures like session
timeouts, secure cookies, and CSRF protection.
5. Secure API Design:
o Protect APIs with proper authentication, rate limiting, and input
validation.
Operational Security Architecture