Hi,
Doug wrote:
I commend attention to the LangSec movement, which
advocates for
rigorously enforced separation between legal and illegal inputs.
https://langsec.org
‘The Language-theoretic approach (LangSec) regards the Internet
insecurity epidemic as a consequence of ‘ad hoc’ programming of
input handling at all layers of network stacks, and in other kinds
of software stacks. LangSec posits that the only path to
trustworthy software that takes untrusted inputs is treating all
valid or expected inputs as a formal language, and the respective
input-handling routines as a ‘recognizer’ for that language.
The recognition must be feasible, and the recognizer must match the
language in required computation power.
‘When input handling is done in ad hoc way, the ‘de facto’
recognizer, i.e. the input recognition and validation code ends up
scattered throughout the program, does not match the programmers'
assumptions about safety and validity of data, and thus provides
ample opportunities for exploitation. Moreover, for complex input
languages the problem of full recognition of valid or expected
inputs may be *undecidable*, in which case no amount of
input-checking code or testing will suffice to secure the program.
Many popular protocols and formats fell into this trap, the
empirical fact with which security practitioners are all too
familiar.
‘LangSec helps draw the boundary between protocols and API designs
that can and cannot be secured and implemented securely, and charts
a way to building truly trustworthy protocols and systems. A longer
summary of LangSec in this USENIX Security BoF hand-out, and in the
talks, articles, and papers below.’
That does look interesting; I'd not heard of it.
--
Cheers, Ralph.