so ware security
play

So=ware Security using Language Engineering and mbeddr - PowerPoint PPT Presentation

Towards improving So=ware Security using Language Engineering and mbeddr Markus Vlter, Zaur Molotnikov, Bernd Kolb voelter@acm.org www.voelter.de @markusvoelter


  1. Towards ¡improving ¡ So=ware ¡Security ¡ using ¡ Language ¡Engineering ¡and ¡mbeddr ¡ ¡ Markus ¡Völter, ¡Zaur ¡Molotnikov, ¡Bernd ¡Kolb ¡ voelter@acm.org ¡ www.voelter.de ¡ @markusvoelter ¡

  2. 1 ¡ So=ware ¡ Security ¡

  3. 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. ¡ ¡

  4. So=ware ¡security ¡ Process ¡ Techniques ¡ EducaJon ¡ Programming ¡Language ¡ Awareness ¡ (and ¡the ¡wrong ¡use ¡of ¡it) ¡ C ¡ Reviews ¡

  5. So=ware ¡security ¡ Process ¡ Techniques ¡ Programming ¡Language ¡ C ¡

  6. So=ware ¡security ¡ Process ¡ Techniques ¡ Programming ¡Language ¡ C ¡ Make ¡C ¡beMer ¡and ¡less ¡ dangerous ¡through ¡suitable ¡ language ¡extensions. ¡

  7. So=ware ¡security ¡ Process ¡ Techniques ¡ C ¡ Make ¡C ¡beMer ¡and ¡less ¡ dangerous ¡through ¡suitable ¡ language ¡extensions. ¡

  8. 2 ¡ Language ¡ Engineering ¡

  9. 3 ¡ Language ¡ Workbenches ¡

  10. 4 ¡ JetBrains ¡ ¡ MPS ¡

  11. A ¡Language ¡Workbench ¡– ¡ a ¡tool ¡for ¡defining, ¡composing ¡ and ¡using ¡ecosystems ¡of ¡languages. ¡

  12. Open ¡Source ¡ Apache ¡2.0 ¡ hMp://jetbrains.com/mps ¡

  13. V ¡3.2 ¡ ¡ ¡ ¡ ¡ ¡is ¡current. ¡ V ¡3.3 ¡ ¡ ¡ ¡ ¡ ¡in ¡RC ¡– ¡Release ¡Q4 ¡2015. ¡

  14. [Language ¡Workbench] ¡ Comprehensive ¡Support ¡for ¡ ¡ many ¡aspects ¡of ¡Language ¡DefiniJon. ¡ + Refactorings, Find Usages, Syntax Coloring, Debugging, ...

  15. [Comprehensive ¡IDE ¡Features] ¡ For ¡End ¡Users ¡and ¡Language ¡Developers ¡

  16. [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. ¡

  17. [ProjecJonal ¡EdiJng] ¡ Advantage: ¡SyntacJc ¡Flexibility ¡ Regular ¡Code/Text ¡ MathemaJcal ¡ Tables ¡ Graphical ¡

  18. [ProjecJonal ¡EdiJng] ¡ Advantage: ¡SyntacJc ¡Flexibility ¡/ ¡MPS ¡ Regular ¡Code/Text ¡ MathemaJcal ¡ Tables ¡ Graphical ¡

  19. [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. ¡

  20. [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 ¡

  21. [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 ¡

  22. 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 ¡

  23. 5 ¡ mbeddr ¡

  24. Language ¡ ¡ Engineering ¡ Tools ¡ Embedded ¡ So=ware ¡

  25. An ¡extensible ¡set ¡of ¡integrated ¡languages ¡ for ¡embedded ¡so=ware ¡engineering. ¡ ¡

  26. Open ¡Source ¡@ ¡eclipse.org ¡ Eclipse ¡Public ¡License ¡1.0 ¡ hMp://mbeddr.com ¡

  27. developers ¡ 7 ¡developers, ¡project ¡management ¡ 2 ¡developers, ¡verificaJon ¡support ¡ 1 ¡developer, ¡verificaJon ¡support ¡ 3 ¡developers, ¡C++ ¡ strategic ¡collaboraJon ¡with ¡

  28. Some ¡of ¡the ¡C ¡Extensions ¡ Units ¡ State ¡Machines ¡ Components ¡ ¡ Math ¡

  29. An ¡IDE ¡for ¡Requirements ¡ Requirements ¡ Rules ¡ Tracing ¡ VisualisaJons ¡

  30. Great ¡IDE ¡Support ¡

  31. An ¡IDE ¡for ¡DocumentaJon ¡

  32. 6 ¡ SoluJon: ¡ Technique ¡

  33. Code ¡Markup ¡and ¡Checking ¡ Robustness ¡ ¡ Security ¡ Layers ¡checking, ¡access ¡permissions ¡ „Units“ ¡for ¡saniJzed ¡or ¡encrypted ¡data ¡

  34. Straighqorward ¡Language ¡Extensions ¡ Apple ¡GotoFail ¡bug: ¡ More ¡robust ¡construct: ¡

  35. 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. ¡

  36. 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. ¡

  37. 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. ¡

  38. 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. ¡

  39. VerificaJon ¡I ¡ Heartbleed ¡bug: ¡ The ¡above ¡code ¡is ¡invalid ¡in ¡C ¡ ¡cannot ¡„dynamically“ ¡iniJalize ¡length. ¡ Bug: ¡sizeof(payload) ¡!= ¡payload_length ¡

  40. VerificaJon ¡II ¡ Find ¡Problem ¡via ¡formal ¡VerificaJon ¡

  41. VerificaJon ¡III ¡ Even ¡beMer: ¡ First-­‑class ¡message ¡concept ¡ ¡ that ¡handles ¡low ¡level ¡message ¡stuff. ¡

  42. 7 ¡ SoluJon: ¡ Process ¡

  43. BeMer ¡AbstracJon, ¡BeMer ¡Review ¡ This ¡is ¡beMer ¡than ¡a ¡switch-­‑case: ¡

  44. BeMer ¡NotaJon, ¡BeMer ¡Review ¡

  45. 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