Towards ¡improving ¡ So=ware ¡Security ¡ using ¡ Language ¡Engineering ¡and ¡mbeddr ¡ ¡ Markus ¡Völter, ¡Zaur ¡Molotnikov, ¡Bernd ¡Kolb ¡ voelter@acm.org ¡ www.voelter.de ¡ @markusvoelter ¡
1 ¡ So=ware ¡ Security ¡
So=ware ¡security ¡refers ¡to ¡the ¡ security ¡proper8es ¡of ¡a ¡so9-‑ ¡ ware ¡system’s ¡implementa8on. ¡ ¡ G. ¡McGraw, ¡ ¡ So9ware ¡Security: ¡Building ¡Security ¡In. ¡ ¡ Addison-‑Wesley, ¡2006. ¡ ¡
So=ware ¡security ¡ Process ¡ Techniques ¡ EducaJon ¡ Programming ¡Language ¡ Awareness ¡ (and ¡the ¡wrong ¡use ¡of ¡it) ¡ C ¡ Reviews ¡
So=ware ¡security ¡ Process ¡ Techniques ¡ Programming ¡Language ¡ C ¡
So=ware ¡security ¡ Process ¡ Techniques ¡ Programming ¡Language ¡ C ¡ Make ¡C ¡beMer ¡and ¡less ¡ dangerous ¡through ¡suitable ¡ language ¡extensions. ¡
So=ware ¡security ¡ Process ¡ Techniques ¡ C ¡ Make ¡C ¡beMer ¡and ¡less ¡ dangerous ¡through ¡suitable ¡ language ¡extensions. ¡
2 ¡ Language ¡ Engineering ¡
3 ¡ Language ¡ Workbenches ¡
4 ¡ JetBrains ¡ ¡ MPS ¡
A ¡Language ¡Workbench ¡– ¡ a ¡tool ¡for ¡defining, ¡composing ¡ and ¡using ¡ecosystems ¡of ¡languages. ¡
Open ¡Source ¡ Apache ¡2.0 ¡ hMp://jetbrains.com/mps ¡
V ¡3.2 ¡ ¡ ¡ ¡ ¡ ¡is ¡current. ¡ V ¡3.3 ¡ ¡ ¡ ¡ ¡ ¡in ¡RC ¡– ¡Release ¡Q4 ¡2015. ¡
[Language ¡Workbench] ¡ Comprehensive ¡Support ¡for ¡ ¡ many ¡aspects ¡of ¡Language ¡DefiniJon. ¡ + Refactorings, Find Usages, Syntax Coloring, Debugging, ...
[Comprehensive ¡IDE ¡Features] ¡ For ¡End ¡Users ¡and ¡Language ¡Developers ¡
[ProjecJonal ¡EdiJng] ¡ MPS ¡uses ¡a ¡ProjecJonal ¡Editor ¡ TradiJonal: ¡Parsing ¡ MPS: ¡ProjecJonal ¡EdiJng ¡ A ¡ProjecJonal ¡Editor ¡modifies ¡the ¡AST ¡directly. ¡ No ¡grammars ¡or ¡parsers ¡are ¡involved. ¡
[ProjecJonal ¡EdiJng] ¡ Advantage: ¡SyntacJc ¡Flexibility ¡ Regular ¡Code/Text ¡ MathemaJcal ¡ Tables ¡ Graphical ¡
[ProjecJonal ¡EdiJng] ¡ Advantage: ¡SyntacJc ¡Flexibility ¡/ ¡MPS ¡ Regular ¡Code/Text ¡ MathemaJcal ¡ Tables ¡ Graphical ¡
[ProjecJonal ¡EdiJng] ¡ Advantage: ¡Language ¡ComposiJon ¡ L2 ¡ L1 ¡ Separate ¡Files ¡ In ¡One ¡File ¡ Type ¡System ¡ Type ¡System ¡ TransformaJon ¡ TransformaJon ¡ Constraints ¡ Constraints ¡ ¡ Syntax ¡ IDE ¡ ¡ 5+ ¡ ¡ ¡base ¡languages ¡ 50+ ¡extensions ¡to ¡C ¡ 10+ ¡extensions ¡to ¡requirements ¡lang. ¡
[ProjecJonal ¡EdiJng] ¡ Advantage: ¡Language ¡ComposiJon ¡ No ¡change ¡to ¡definiJon ¡of ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡or ¡ ¡ L1 ¡ L2 ¡ in ¡order ¡to ¡use ¡them ¡together. ¡ Embedding ¡ + ¡ L Adapt ¡ + ¡ = ¡ L Emb ¡ L Host ¡ Extension ¡ = ¡ L Base ¡ L Ext ¡ + ¡ Extension ¡ComposiJon ¡ L Ext2 ¡ = ¡ L Base ¡ + ¡ + ¡ L Ext1 ¡
[ProjecJonal ¡EdiJng] ¡ Study ¡Results ¡on ¡Editor ¡Usability ¡ People ¡prefer ¡MPS ¡over ¡convenJonal ¡IDEs ¡ MPS ¡more ¡is ¡more ¡efficient ¡than ¡normal ¡IDEs ¡ MPS ¡more ¡is ¡more ¡producJve ¡than ¡normal ¡IDEs ¡ MPS ¡makes ¡it ¡easier ¡to ¡create ¡correct ¡programs ¡ MPS ¡enforces ¡a ¡structurally ¡correct ¡AST ¡ People ¡benefit ¡from ¡language ¡modularity ¡ People ¡benefit ¡from ¡the ¡flexible ¡notaJons ¡ People ¡benefit ¡from ¡advanced ¡navigaJon ¡support ¡ The ¡experience ¡with ¡learning ¡MPS ¡is ¡mixed. ¡ It ¡takes ¡some ¡Jme ¡to ¡get ¡used ¡to ¡MPS ¡ Strongly ¡... ¡Neutral ¡... ¡Strongly ¡ agree ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡disagree ¡
Further ¡Reading ¡ ProjecJng ¡a ¡Modular ¡Future ¡ Three ¡different ¡case ¡studies ¡of ¡using ¡MPS ¡ hRp://voelter.de/data/pub/projec8ngModuleFuture.pdf ¡ mbeddr ¡-‑-‑ ¡InstanJaJng ¡a ¡Language ¡Workbench ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡in ¡the ¡Embedded ¡So=ware ¡Domain ¡ ¡ Detailed ¡Discussion ¡of ¡mbeddr ¡(using ¡MPS ¡for ¡embedded ¡s/w ¡engineering) ¡ hRp://voelter.de/data/pub/voelteretal-‑mbeddr-‑AUSE.pdf ¡ Towards ¡User-‑Friendly ¡ProjecJonal ¡Editors ¡ Study ¡about ¡the ¡usability ¡of ¡projec8onal ¡editors ¡and ¡MPS‘ ¡„tricks“ ¡for ¡improving ¡it ¡ hRp://voelter.de/data/pub/projec8onalEdi8ng-‑sle2014.pdf ¡ The ¡State ¡of ¡the ¡Art ¡in ¡Language ¡Workbenches ¡– ¡LWC ¡Conclusions ¡ Systema8c ¡Comparison ¡of ¡different ¡language ¡workbenches ¡and ¡their ¡features ¡ hRp://voelter.de/data/pub/LWC13.pdf ¡
5 ¡ mbeddr ¡
Language ¡ ¡ Engineering ¡ Tools ¡ Embedded ¡ So=ware ¡
An ¡extensible ¡set ¡of ¡integrated ¡languages ¡ for ¡embedded ¡so=ware ¡engineering. ¡ ¡
Open ¡Source ¡@ ¡eclipse.org ¡ Eclipse ¡Public ¡License ¡1.0 ¡ hMp://mbeddr.com ¡
developers ¡ 7 ¡developers, ¡project ¡management ¡ 2 ¡developers, ¡verificaJon ¡support ¡ 1 ¡developer, ¡verificaJon ¡support ¡ 3 ¡developers, ¡C++ ¡ strategic ¡collaboraJon ¡with ¡
Some ¡of ¡the ¡C ¡Extensions ¡ Units ¡ State ¡Machines ¡ Components ¡ ¡ Math ¡
An ¡IDE ¡for ¡Requirements ¡ Requirements ¡ Rules ¡ Tracing ¡ VisualisaJons ¡
Great ¡IDE ¡Support ¡
An ¡IDE ¡for ¡DocumentaJon ¡
6 ¡ SoluJon: ¡ Technique ¡
Code ¡Markup ¡and ¡Checking ¡ Robustness ¡ ¡ Security ¡ Layers ¡checking, ¡access ¡permissions ¡ „Units“ ¡for ¡saniJzed ¡or ¡encrypted ¡data ¡
Straighqorward ¡Language ¡Extensions ¡ Apple ¡GotoFail ¡bug: ¡ More ¡robust ¡construct: ¡
Straighqorward ¡Language ¡Extensions ¡ BeMer ¡than ¡macros: ¡ Amazon‘s ¡s2n ¡library ¡ Danger: ¡ Macros ¡have ¡no ¡protecJon ¡against ¡ wrong ¡use; ¡Poor ¡man‘s ¡LE. ¡Real ¡LE ¡ ¡ is ¡more ¡robust/safer. ¡
AdapJng ¡SemanJcs ¡ When ¡leaving ¡the ¡funcJon, ¡k_clr ¡sJll ¡on ¡ the ¡stack ¡– ¡only ¡stack ¡pointer ¡moved. ¡ BeMer: ¡ As ¡variables ¡leave ¡scope, ¡actually ¡wipe ¡ their ¡memory. ¡
ExploiJng ¡the ¡GeneraJon ¡Step ¡ Timing ¡Side ¡Channel ¡AMacks: ¡ ¡ ¡ ¡ ¡Insert ¡random ¡waits. ¡ Amazon‘s ¡s2n ¡library ¡ Naming ¡convenJons ¡not ¡checkable. ¡ ¡ ¡ ¡ ¡SemanJc ¡AnnotaJons ¡beMer. ¡ ¡ Then ¡insert ¡busy ¡wait ¡at ¡end ¡ enforce ¡constant ¡Jme. ¡
AddiJonal ¡Constraints ¡ Detect ¡insecure ¡C ¡funcJons: ¡ ¡ ¡ ¡ ¡ ¡ strcpy ¡and ¡the ¡like. ¡ Mark ¡veMed ¡secure ¡funcJons ¡as ¡ SECURE ¡API ¡and ¡only ¡use ¡those. ¡ ¡ Check ¡this ¡with ¡tool. ¡
VerificaJon ¡I ¡ Heartbleed ¡bug: ¡ The ¡above ¡code ¡is ¡invalid ¡in ¡C ¡ ¡cannot ¡„dynamically“ ¡iniJalize ¡length. ¡ Bug: ¡sizeof(payload) ¡!= ¡payload_length ¡
VerificaJon ¡II ¡ Find ¡Problem ¡via ¡formal ¡VerificaJon ¡
VerificaJon ¡III ¡ Even ¡beMer: ¡ First-‑class ¡message ¡concept ¡ ¡ that ¡handles ¡low ¡level ¡message ¡stuff. ¡
7 ¡ SoluJon: ¡ Process ¡
BeMer ¡AbstracJon, ¡BeMer ¡Review ¡ This ¡is ¡beMer ¡than ¡a ¡switch-‑case: ¡
BeMer ¡NotaJon, ¡BeMer ¡Review ¡
Tracing ¡ Trace ¡from ¡every ¡program ¡element ¡to ¡requirements ¡ ¡ ¡ ¡(internal ¡or ¡external) ¡ ¡ Analyze ¡and ¡find ¡untraced ¡program ¡fragments. ¡ Different ¡kinds ¡of ¡traces ¡to ¡express ¡semanJcs. ¡
Recommend
More recommend