C# Есть ли уязвимость переполнения буфера в int Main(string[] args)

C# Есть ли уязвимость переполнения буфера в int Main(string[] args), если я запускаю program.exe -dfbdfbpofdjbdpofjbpodfjbodp и тд. бесконечно большую строку?


Ответы (3 шт):

Автор решения: PashaPash

У размера передаваемых аргументов есть лимит как со стороны консоли (cmd/bash/pwsh), так и со стороны os (CreateProcess, ProcessStartInfo), он зависит от операционки и от консоли, но обычно не превышает десятков мегабайт. Так что до создания процесса и лимита на длину строки в C# просто не дойдёт, упадёт с ошибкой раньше.

→ Ссылка
Автор решения: Blackmeser

Нет, т.к. в качестве аргументов Main принимает один единственный адрес в памяти.

→ Ссылка
Автор решения: Pavel Mayorov

Уязвимость переполнения буфера в языке C# при работе с массивами, пока вы это делаете в безопасном подмножестве языка и не трогаете Marshal, невозможна в принципе.


Напомню, что уязвимость переполнения буфера возникает не при любом переполнении буфера, а только при переполнении буфера без обработки этой ситуации и, как следствие, затирании памяти за границами буфера.

Поскольку при доступе к элементам массива границы массива всегда проверяются - уязвимость невозможна.

→ Ссылка