Skip to content

Commit 1cb5b75

Browse files
authored
Merge pull request #30 from iocx-dev/feature/v0.7.3
Feature/v0.7.3 into main
2 parents f408e6e + 2fe7e6b commit 1cb5b75

175 files changed

Lines changed: 6513 additions & 1408 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,52 @@
1+
# v0.7.3 — Structural Correctness & Deterministic Heuristics
2+
**Released: 2026‑05‑11**
3+
4+
## Added
5+
- Comprehensive structural validation across all PE subsystems
6+
- New checks for entrypoint mapping, section flags, RVA graph consistency, TLS callbacks, and certificate bounds
7+
- Region‑specific entropy validation
8+
- Deterministic structural anomaly surfacing in heuristics layer
9+
- Extensive new structural and heuristic tests
10+
- Snapshot tests ensuring deterministic output
11+
12+
## Changed
13+
- Reworked entrypoint validator with correct RVA→file offset mapping
14+
- Expanded section validator with overlap, ordering, and flag‑consistency checks
15+
- Strengthened optional header validation (alignment, size fields, directory count)
16+
- Hardened RVA graph validator (bounds, mapping, overlap)
17+
- Improved TLS validator (range, callbacks, mapping)
18+
- Improved signature validator (symmetry, bounds, type/revision checks)
19+
- Refined entropy validator (low entropy, region entropy, uniformity)
20+
21+
## Fixed
22+
- Conceptual inconsistencies around RVA vs file offsets
23+
- Redundant or contradictory structural checks
24+
- Missing structural anomalies in several validators
25+
- Inconsistent or unclear ReasonCodes
26+
- Edge‑case crashes on malformed or truncated binaries
27+
28+
## Removed
29+
- No removals in this release
30+
31+
## Notes
32+
- v0.7.3 remains strictly static-only
33+
- No dynamic analysis, unpacking, emulation, or new dependencies introduced
34+
35+
---
36+
37+
# v0.7.2 — Dependency fix
38+
**Released: 2026‑05‑01**
39+
40+
## Added
41+
- Required `idna` dependency for punycode and Unicode domain handling
42+
- No behavioural changes to extractors
43+
- No schema changes
44+
- Fully compatible with v0.7.1
45+
46+
---
47+
148
# **v0.7.1 — Heuristics Engine Expansion & Structural Analysis Improvements**
2-
**Released: 2026‑05‑??**
49+
**Released: 2026‑05‑01**
350

451
v0.7.1 delivers a major upgrade to IOCX’s **PE heuristics engine**, **extractor correctness**, and **adversarial‑input resilience**. This release introduces six new structural heuristics, broad extractor hardening, and a significantly expanded adversarial test suite — including **full adversarial coverage for every IOC category**.
552

CONTRIBUTING.md

Lines changed: 78 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,24 @@ IOCX is part of the MalX Labs ecosystem — a family of modern, deterministic, d
66
We welcome contributions of all kinds: bug fixes, static‑analysis improvements, new extractors, documentation updates, and thoughtful design discussions.
77
This guide explains how to contribute effectively while keeping IOCX predictable, secure, and maintainable.
88

9+
---
10+
911
## Project Philosophy
1012

1113
IOCX is intentionally:
1214

13-
- Minimal — extremely small dependency footprint
14-
- Secure — safe handling of untrusted input
15-
- Deterministic — no network access, no non-deterministic behaviour
16-
- Extensible — new static‑analysis modules can be added cleanly
15+
- **Minimal** — extremely small dependency footprint
16+
- **Secure** — safe handling of untrusted input
17+
- **Deterministic** — no network access, no nondeterministic behaviour
18+
- **Extensible** — new static‑analysis modules can be added cleanly
1719

1820
All contributions must align with these principles.
1921

22+
---
23+
2024
## Core vs Plugins
2125

22-
IOCX has a strict boundary between core functionality and plugin‑based extensions.
26+
IOCX has a strict boundary between **core functionality** and **plugin‑based extensions**.
2327
This keeps the core predictable and universally safe while allowing users to extend IOCX for their own environments.
2428

2529
### What Belongs in the Core
@@ -51,7 +55,7 @@ Plugins are for functionality that is:
5155
- optional or environment‑specific
5256
- based on external data
5357
- organisation‑specific
54-
- user-maintained
58+
- usermaintained
5559
- likely to evolve independently
5660

5761
Examples:
@@ -65,6 +69,8 @@ If the information comes from the user’s environment, it belongs in a plugin.
6569

6670
This separation keeps IOCX clean, predictable, and safe to run anywhere.
6771

72+
---
73+
6874
## How to Contribute
6975

7076
### Fix bugs
@@ -80,12 +86,12 @@ Open an issue or submit a PR with:
8086
Regex‑based extractors live under:
8187

8288
```
83-
detectors/extractors/
89+
iocx/detectors/extractors/
8490
```
8591

8692
Please include:
8793

88-
- a clear, well-scoped regex
94+
- a clear, wellscoped regex
8995
- validation logic
9096
- test cases
9197
- example inputs
@@ -102,7 +108,7 @@ Enhancements to metadata extraction, imports, sections, or resources are welcome
102108

103109
- static
104110
- deterministic
105-
- dependency-minimal
111+
- dependencyminimal
106112

107113
### Add synthetic test samples
108114

@@ -113,67 +119,69 @@ See the “Testing” section below.
113119

114120
Better examples, diagrams, and explanations are always appreciated.
115121

116-
### Contribution Process
122+
---
123+
124+
## Contribution Process
117125

118-
1. Fork the repository
126+
1. **Fork the repository**
119127

120128
```bash
121129
git clone https://github.com/iocx-dev/iocx.git
122-
123130
```
124131

125-
2. Create a feature branch
132+
2. **Create a feature branch**
126133

127134
```bash
128135
git checkout -b feature/my-improvement
129-
130136
```
131137

132-
3. Install locally
138+
3. **Install locally**
133139

134140
```bash
135141
pip install -e .
136142
```
137143

138-
4. Run tests
144+
4. **Run tests**
139145

140146
```bash
141147
pytest
142148
```
143149

144-
5. Run security checks
150+
5. **Run security checks**
145151

146152
```bash
147153
bandit -r iocx -lll
148154
pip-audit --skip-editable
149155
```
150156

151-
6. Open a Pull Request
157+
6. **Open a Pull Request**
152158

153-
- Target the main branch
159+
- Target the `main` branch
154160
- Describe what you changed and why
155161
- Link any related issues
156162

157163
CI will run automatically.
158164

165+
---
166+
159167
## Testing
160168

161169
IOCX is designed to be **safe to develop on any machine**.
162170

163171
### Do NOT:
164172

165-
- Upload or commit real malware
166-
- Submit password‑protected malware archives
167-
- Include malicious payloads or exploit code
168-
- Add samples requiring execution to analyse
173+
- upload or commit real malware
174+
- submit password‑protected malware archives
175+
- include malicious payloads or exploit code
176+
- add samples requiring execution to analyse
169177

170178
### Do:
171179

172-
- Use synthetic PE files
173-
- Embed fake IOCs inside harmless executables
174-
- Use benign Windows binaries for structural testing
175-
- Use public test files like EICAR or GTUBE
176-
- Add text files containing mixed IOCs
180+
- use synthetic PE files
181+
- embed fake IOCs inside harmless executables
182+
- use benign Windows binaries for structural testing
183+
- use public test files like EICAR or GTUBE
184+
- add text files containing mixed IOCs
177185

178186
If unsure, open an issue before submitting.
179187

@@ -183,33 +191,38 @@ All new features should include tests.
183191
Bug fixes should include a test that reproduces the issue.
184192

185193
Tests live in:
186-
```plaintext
194+
195+
```
187196
tests/
188197
```
189198

190199
We use pytest.
191200

201+
---
202+
192203
## Adding New Extractors
193204

194205
Extractors live in:
195206

196-
```plaintext
207+
```
197208
iocx/detectors/extractors/
198209
```
199210

200211
To add one:
201212

202-
- Create a new file in that directory
203-
- Follow existing patterns
204-
- Ensure it registers itself on import
205-
- Add tests under `tests/unit/extractors/`
213+
- create a new file in that directory
214+
- follow existing patterns
215+
- ensure it registers itself on import
216+
- add tests under `tests/unit/extractors/`
206217

207218
Extractors must be:
208219

209220
- deterministic
210221
- side‑effect‑free
211222
- safe for untrusted input
212223

224+
---
225+
213226
## Code Style
214227

215228
We keep the codebase clean and consistent.
@@ -225,20 +238,48 @@ ruff check iocx
225238
black iocx
226239
```
227240

241+
---
242+
228243
## Security
229244

230245
If you discover a security issue, do not open a GitHub issue.
246+
Follow the instructions in `SECURITY.md`.
231247

232-
Follow the instructions in SECURITY.md.
248+
---
233249

234250
## Code of Conduct
235251

236252
Be respectful, constructive, and supportive.
237253
We aim for a collaborative, professional environment.
238254

239-
## License
255+
---
256+
257+
## Licensing of Contributions
258+
259+
By contributing to IOCX, you agree that:
260+
261+
- Your contributions are licensed under the **Mozilla Public License 2.0 (MPL‑2.0)**.
262+
- You grant the project maintainers the right to **dual‑license your contributions** under commercial terms as part of the IOCX open‑core model.
263+
- You retain copyright to your contributions.
264+
265+
This ensures:
266+
267+
- the open‑source core remains healthy
268+
- improvements remain open
269+
- commercial customers can use IOCX under proprietary terms
270+
- your work is properly attributed
271+
272+
By submitting a contribution, you certify that you have the right to do so and that your contribution does not violate any third-party rights.
273+
274+
---
275+
276+
## Trademark Notice
277+
278+
Contributors may not use the IOCX name in a way that implies endorsement.
279+
See [TRADEMARK_POLICY.md](TRADEMARK_POLICY.md) for details.
280+
See [LICENSE](LICENSE) for full MPL-2.0 terms.
240281

241-
By contributing, you agree that your contributions are licensed under the project's MIT License.
282+
---
242283

243284
## Thank You
244285

0 commit comments

Comments
 (0)