25 เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™ RTOS Zephyr, เบฅเบงเบกเบ—เบฑเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบ‚เบนเบ”เบฎเบตเบ”เบœเปˆเบฒเบ™เปเบžเบฑเบเป€เบเบฑเบ” ICMP

เบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบˆเบฒเบ NCC Group เป€เบœเบตเบเปเบœเปˆ เบœเบปเบ™โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบŸเบฃเบตโ€‹ Zephyr, เบžเบฑเบ”เบ—เบฐเบ™เบฒ เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡ (RTOS), เปเบ™เปƒเบชเปˆเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป† (IoT, Internet of Things). เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบ 25 เบˆเบธเบ”เบญเปˆเบญเบ™ เปƒเบ™ Zephyr เปเบฅเบฐ 1 เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™ MCUboot. Zephyr เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ”เป‰เบงเบเบเบฒเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ” Intel.

เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, 6 เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ stack เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, 4 เปƒเบ™ kernel, 2 เปƒเบ™ shell เบ„เปเบฒเบชเบฑเปˆเบ‡, 5 เปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบš, 5 เปƒเบ™เบฅเบฐเบšเบปเบšเบเปˆเบญเบ USB เปเบฅเบฐ 3 เปƒเบ™เบเบปเบ™เป„เบเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบŸเบตเบกเปเบง. เบชเบญเบ‡โ€‹เบšเบฑเบ™เบซเบฒโ€‹เปเบกเปˆเบ™โ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบณเบ„เบฑเบ™, เบชเบญเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบชเบนเบ‡, 9 โ€‹เปเบกเปˆเบ™โ€‹เบ›เบฒเบ™โ€‹เบเบฒเบ‡, 9 โ€‹เปเบกเปˆเบ™โ€‹เบ•เปˆเบณ, 4 โ€‹เปเบกเปˆเบ™โ€‹เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ. เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ IPv4 stack เปเบฅเบฐ MQTT parser, เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ USB mass storage เปเบฅเบฐ USB DFU drivers. เปƒเบ™เป€เบงเบฅเบฒเป€เบ›เบตเบ”เป€เบœเบตเบเบ‚เปเป‰เบกเบนเบ™, เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบžเบฝเบ‡เปเบ•เปˆ 15 เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบ—เบตเปˆเบชเบธเบ”; เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบทเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ‚เบญเบ‡เบเบปเบ™เป„เบเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เปเบเปˆเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเบฑเบ‡เบ„เบปเบ‡เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚.

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบธเบ”เบ„เบปเป‰เบ™เป„เบ”เป‰เบˆเบฒเบเป„เบฅเบเบฐเป„เบเป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบŠเบธเบ” IPv4 เบ‚เบญเบ‡เปเบžเบฅเบ”เบŸเบญเบก, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเปเป‰เบฅเบฒเบ”เบšเบฑเบ‡เบซเบผเบงเบ‡เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ” ICMP เบ—เบตเปˆเบ–เบทเบเบ”เบฑเบ”เปเบ›เบ‡เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ MQTT protocol parser, เป€เบŠเบดเปˆเบ‡เป€เบเบตเบ”เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบเบฒเบงเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก header เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ. เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบฎเบธเบ™เปเบฎเบ‡เปœเป‰เบญเบเบเบงเปˆเบฒเปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ stack IPv6 เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ›เบฃเป‚เบ•เบ„เป CoAP.

เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เป†เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ‚เบนเบ”เบฎเบตเบ”เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบทเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel. เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบšเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบกเบฑเบเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ kernel เบ–เบทเบเบ‚เบฝเบ™เป„เบ›เบซเบฒเปเบฅเบฐเบญเปˆเบฒเบ™เบˆเบฒเบ. เบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบ‚เบฐเบซเบเบฒเบเป„เบ›เป€เบ–เบดเบ‡เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เป‚เบ—เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป€เบญเบ‡ - เบเบฒเบ™เป€เบญเบตเป‰เบ™เป€เบฅเบเป‚เบ—เบฅเบฐเบšเบปเบšเบ—เบฒเบ‡เบฅเบปเบšเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบฅเบปเป‰เบ™. kernel เบเบฑเบ‡เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ ASLR (เบ—เบตเปˆเบขเบนเปˆ randomization เบ—เบตเปˆเบขเบนเปˆ) เปเบฅเบฐเบเบปเบ™เป„เบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ canary เปƒเบ™ stack, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบปเบ™เป„เบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ USB stack เปเบฅเบฐเป„เบ”เป€เบงเบตเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เบšเบฑเบ™เบซเบฒเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ USB เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบปเป‰เบ™เบ‚เบญเบ‡ buffer เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel เป€เบกเบทเปˆเบญเบญเบธเบ›เบฐเบเบญเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป‚เบฎเบ” USB เบ—เบตเปˆเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเบœเบนเป‰เป‚เบˆเบกเบ•เบต. เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™ USB DFU, เป„เบ”เป€เบงเบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เป€เบŸเบตเบกเปเบงเปƒเบซเบกเปˆเบœเปˆเบฒเบ™ USB, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบšเป€เบŸเบตเบกเปเบงเบ—เบตเปˆเบ–เบทเบเบ”เบฑเบ”เปเบ›เบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Flash เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ microcontroller เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ‚เป‰เบฒเบกเป‚เบซเบกเบ”เบšเบนเบ”เบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ”เป‰เบงเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเป‚เบ”เบเปƒเบŠเป‰เบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบดเบˆเบดเบ•เบญเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบฅเบฐเบซเบฑเบ” bootloader เป€เบ›เบตเบ”เป„เบ”เป‰เบ–เบทเบเบชเบถเบเบชเบฒ MCUboot, เปƒเบ™โ€‹เบ™เบฑเป‰เบ™โ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเปˆเบฝเบ‡โ€‹เบ—เบตเปˆโ€‹เบญเปˆเบญเบ™โ€‹เป‚เบเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹,
เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™ overflow buffer เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ SMP (Simple Management Protocol) protocol เปƒเบ™เป„เบฅเบเบฐ UART.

เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเปƒเบ™ Zephyr, เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆ virtual เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบ—เบปเปˆเบงเป‚เบฅเบ (SASOS, Single Address Space Operating System) เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบฅเบฐเบซเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบš kernel เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™ monolithic executable เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ” เปเบฅเบฐเปเบฅเปˆเบ™เปƒเบ™เบฎเบฒเบ”เปเบงเบชเบฐเป€เบžเบฒเบฐ. เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก, เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบฎเบนเบšเบžเบฒเบšเบฅเบฐเบšเบปเบšเบชเบฒเบกเบฒเบ”เบ›เบฐเบเบญเบšเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบฅเบฑเบเบชเบฐเบ™เบฐ kernel เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™เบšเบฑเบ™เบ”เบฒเบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ Zephyr เบเปˆเบฒเบงเป€เบ–เบดเบ‡ เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ”เป‰เบงเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบขเบนเปˆเปƒเบ™เปƒเบˆ. เบญเบฐเบ™เบธเบกเบฑเบ”เบงเปˆเบฒเบ—เบธเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ undergo เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบšเบฑเบ‡เบ„เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”: เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš fuzzing, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ static, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš penetration, เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบฅเบฐเบซเบฑเบ”, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” backdoor เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เป„เบžเบ‚เบปเปˆเบกเบ‚เบนเปˆ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™