diff --git a/core/include/panic.h b/core/include/panic.h
index 83fbcaef127bef93216b3e2b4033f0d129437ed4..5d10aab62497d786e937a8e9520413953cbee3a5 100644
--- a/core/include/panic.h
+++ b/core/include/panic.h
@@ -48,6 +48,7 @@ typedef enum {
 #endif
     PANIC_DUMMY_HANDLER,     /**< unhandled interrupt */
 #endif
+    PANIC_SSP,               /**< stack smashing protector failure */
     PANIC_UNDEFINED
 } core_panic_t;
 
diff --git a/sys/Makefile.include b/sys/Makefile.include
index 092bb68792ab900489486a844138f6b052127e81..3eac8e57609848a6a1d0fc21ad769b6a285787a9 100644
--- a/sys/Makefile.include
+++ b/sys/Makefile.include
@@ -83,4 +83,8 @@ ifneq (,$(filter printf_float,$(USEMODULE)))
     endif
 endif
 
+ifneq (,$(filter ssp,$(USEMODULE)))
+    include $(RIOTBASE)/sys/ssp/Makefile.include
+endif
+
 INCLUDES += -I$(RIOTBASE)/sys/libc/include
diff --git a/sys/doc.txt b/sys/doc.txt
index e3dcb829da997218cd9f3843397823bf0f09d757..9dda1b2c8f68aa742ed09d1f42a83ac8da38e528 100644
--- a/sys/doc.txt
+++ b/sys/doc.txt
@@ -10,3 +10,15 @@
  * @defgroup    sys System
  * @brief       System library contains tools and utilities that make RIOT an actual operating system
  */
+
+/**
+ * @defgroup    sys_ssp Stack Smashing Protector
+ * @ingroup     sys
+ * @brief       Stack Smashing protector
+ *
+ * This module implements necessary helper functions that enable RIOT to make
+ * use of GCC's stack smashing protector (SSP).
+ *
+ * See http://wiki.osdev.org/Stack_Smashing_Protector for a more detailed
+ * description.
+ */
diff --git a/sys/ssp/Makefile b/sys/ssp/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..48422e909a47d7cd428d10fa73825060ccc8d8c2
--- /dev/null
+++ b/sys/ssp/Makefile
@@ -0,0 +1 @@
+include $(RIOTBASE)/Makefile.base
diff --git a/sys/ssp/Makefile.include b/sys/ssp/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..84104d594c08737931308e63cbda6e1930dfcc3c
--- /dev/null
+++ b/sys/ssp/Makefile.include
@@ -0,0 +1,3 @@
+ifneq (,$(filter ssp,$(USEMODULE)))
+    CFLAGS += -fstack-protector
+endif
diff --git a/sys/ssp/ssp.c b/sys/ssp/ssp.c
new file mode 100644
index 0000000000000000000000000000000000000000..116032c40bb4ff8283b9922f4ccd74097498d1fd
--- /dev/null
+++ b/sys/ssp/ssp.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2016 Kaspar Schleiser <kaspar@schleiser.de>
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @{
+ *
+ * @ingroup     sys
+ * @file
+ * @brief       Stack Smashing Protector (SSP) helper functions
+ *
+ * @author      Kaspar Schleiser <kaspar@schleiser.de>
+ *
+ * @}
+ */
+
+#include <stdint.h>
+
+#include "panic.h"
+
+/* this should be randomized for each build */
+#define STACK_CHK_GUARD 0x595e9fbd94fda766
+
+uintptr_t __stack_chk_guard = (uintptr_t) STACK_CHK_GUARD;
+
+__attribute__((noreturn)) void __stack_chk_fail(void)
+{
+    core_panic(PANIC_SSP, "ssp: stack smashing detected");
+}