

Explanation: This occurs when a program continues to use a pointer after the memory it points to has been freed.
- Size
- 36.8 × 67.3 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 45
- Nets
- 50
- Pads
- 177
- Tracks, vias
- 188, 59
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 21 Dec 2024
- Updated
- 25 Aug 2026
Overview
Addon is an open-source printed circuit board by juhaszmarcell96, from the juhaszmarcell96/hacking_and_securing_cpp repository on GitHub, published under the MIT licence. It is a 4-layer board of 36.8 × 67.3 mm with 45 parts on 50 nets, routed with 188 tracks and 59 vias.
Its parts include 17 resistors, 10 capacitors, 9 connectors, 2 diodes and 1 transistor.
README
README.mdHacking and Securing C++
- sanitize user input
- log injection, log poisoning, command injection, ...
- mitigation: std::regex, basic for loop
- memory-leak -> DoS attack (https://owasp.org/www-community/vulnerabilities/Memory_leak)
- mitigation: RAII
- buffer overflow -> arbitrary code execution
- from stack
- ROP
- ROP chain
- double free memory (https://owasp.org/www-community/vulnerabilities/Doubly_freeing_memory)
- using freed memory (https://owasp.org/www-community/vulnerabilities/Using_freed_memory)
other
Use-After-Free:
Explanation: This occurs when a program continues to use a pointer after the memory it points to has been freed.
Exploitation: Attackers can use this to execute arbitrary code by reallocating the freed memory with malicious data. This is often exploited through heap spraying or carefully crafted memory management.
Double-Free:
Explanation: This happens when a program attempts to free the same memory location more than once.
Exploitation: It can lead to heap corruption and allow attackers to take control of the program's flow by manipulating the heap’s structure, enabling code execution or a denial-of-service (DoS) attack.
Format String Vulnerabilities:
Explanation: Occurs when user input is passed directly to formatted output functions (e.g., printf) without specifying a format string.
Exploitation: Attackers can read or write arbitrary memory locations by crafting input that alters the format string, enabling data leakage or arbitrary code execution.
Log Injection and Sensitive Data Exposure:
Explanation: Insufficient sanitization of user input before logging can result in attackers injecting malicious payloads or revealing sensitive application data.
Exploitation: This can result in logs containing scripts, code, or system information that might be exposed and used for further attacks.
Integer Overflow/Underflow:
Explanation: Occurs when an arithmetic operation results in a value too large or too small for the data type to handle, wrapping around to unexpected values.
Exploitation: Attackers can exploit this to bypass bounds checks or control loop behavior, potentially writing out-of-bounds and triggering a buffer overflow.
Null Pointer Dereference:
Explanation: Accessing a pointer that has not been initialized or has been set to nullptr.
Exploitation: While this often results in a crash, attackers could leverage this to cause DoS or potentially map the null page (depending on platform security measures) to execute controlled code.
Uninitialized Memory Access:
Explanation: When variables are read before being initialized, they can contain random data.
Exploitation: This can leak sensitive information from memory or introduce non-deterministic behavior. Attackers can exploit this to infer program state or inject malicious data if combined with other vulnerabilities.
Improper Exception Handling:
Explanation: If exception handling fails to catch or properly log sensitive errors, it can lead to unintentional information disclosure.
Exploitation: Attackers can crash the program in a way that dumps detailed stack traces or internal states to logs, which may include sensitive information, facilitating further attacks.
Race Conditions:
Explanation: These occur when a program’s behavior depends on the timing or sequence of uncontrollable events.
Exploitation: An attacker can exploit race conditions to access shared resources (like files or variables) in an inconsistent state, leading to data corruption, privilege escalation, or unauthorized access.
Heap-Based Buffer Overflow:
Explanation: A buffer overflow occurring on the heap rather than the stack.
Exploitation: Attackers can overwrite memory management structures in the heap, leading to arbitrary code execution or compromising other data structures.
Parts
45| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R13 |
| 10 | 100n | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C4, C5, C6, C7, C8, C9, C10 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_Pad_Via | H1, H2, H3, H4 |
| 3 | R | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P20.32mm_Horizontal | R11, R14, R15 |
| 2 | 5k1 | Resistor_SMD:R_0603_1608Metric | R16, R17 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R12 |
| 1 | 100@100MHz | Inductor_SMD:L_0603_1608Metric | FB1 |
| 1 | 1A | Fuse:Fuse_0603_1608Metric | F1 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | LED | LED_THT:LED_D5.0mm | D1 |
| 1 | USB_C_Receptacle | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J2 |
| 1 | analog | Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical | J3 |
| 1 | digital_0 | Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical | J4 |
| 1 | digital_1 | Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical | J5 |
| 1 | digital_2 | Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical | J6 |
| 1 | digital_3 | Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical | J7 |
| 1 | power_0 | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J8 |
| 1 | power_1 | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J9 |
| 1 | schottky | Diode_SMD:D_SOD-123 | D2 |
| 1 | select | Connector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_Vertical | J1 |
Questions
How big is the Addon PCB?
It measures 36.8 × 67.3 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Addon use?
45 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Addon KiCad files?
From the juhaszmarcell96/hacking_and_securing_cpp repository on GitHub, at the commit this page was made from: the board is addon/addon.kicad_pcb and its schematic addon/addon.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Addon design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 4 layers40 × 23 mm

- 4 layers19.1 × 19 mm

- 4 layers144.4 × 71.1 mm

ABSIS ATX Power Supply Unit
jrsteensen/OpenHornet
OpenHornet 1:1 F/A-18C Simulator Repository
45 parts431 - 4 layers90 × 26 mm

User interface
Twisted-Fields/rp2040-motor-controller
A dual channel brushless motor controller based on the RP2040 microcontroller, designed in Kicad.
45 parts419 - 4 layers26 × 26 mm

- 4 layers79.5 × 64.5 mm

RP2350 Duel
OpenStickCommunity/Hardware
A collection of hardware designs by members of the OpenStickCommunity
45 parts338 - 4 layers35.9 × 65 mm

- 4 layers90 × 40 mm

Cm4-carrier net
jkiv/cm4-carriers
KiCad design files for various Raspberry Pi Compute Module 4 (CM4) carrier boards.
45 parts130BSD-2-Clause