LineageOS avec un noyau Grsec non officiel pour le ZTE Open C

Comme promis, voici une nouvelle version de ma ROM LineageOS pour le ZTE Open C.
La principale nouveauté est le port (non officiel) d’une ancienne version du patch de sécurité Grsecurity.
Le noyau étant obsolète, tout durcissement étant ainsi bon à prendre.
Veuillez notez que toute les options de grsec ne sont pas encore activées mais cela viendra 😉

JOURNAL DES MODIFICATIONS :
Activation de SCHED_AUTOGROUP (pour les performances).
Remplacement du bootanimation par un simple logo animé (plus léger).
Désactivation du démarrage automatique de debuggerd.
Ajout du patch grsec (basé initialement sur la version 2.9.1-3.4.7-201208021520).
Correction de plusieurs fonctions comme « virt_addr_valid » et « alloc_vmap_area ».
Résolution d’un problème de corruption sur slab (non fixé dans le noyau de KonstaT).
Résolution de plusieurs problèmes de stabilité de ma précédente ROM qui contenait PaX.

LIEN DE TÉLÉCHARGEMENT : lineage-13.0-20180425-UNOFFICIAL-kis3_with_unofficial_grsec.zip
SOMME DE CONTRÔLE MD5 = 0d224de872609d5146230e226da319ce
CODE SOURCE : disponible ici.

Publicités

LineageOS avec PaX pour le ZTE Open C

Comme promis dans les commentaires sur mon précédent article, voici ma version récente de LineageOS ayant pour principale nouveauté l’ajout de PaX afin de durcir le noyau du ZTE Open C.

Journal des modifications :

  1. MODIFICATION CONCERNANT LINEAGEOS :
    Démarrage en « slub_debug=P slab_nomerge »
    Amélioration de l’énergie en activant le mode « NO_WIFI_STATS »
    Désactivation du DRM Widevine
    Randomisation des adresses MAC avant l’association
    Optimisation de Zygote
    Utilisation des notifications privées par défaut sur le verrouillage d’écran
    Début du marquage des applications nécessaire pour l’activation de PaX MPROTECT
    Ajout d’une ligne indiquant le statut de PaX dans le menu « Paramètres –> A propos » du téléphone.
    Désactivation de statistique et de rapport d’erreur.
  2. MODIFICATION DU NOYAU LINUX :
    Durcissement de la configuration du noyau en utilisant les recommandations du KSPP
    Ajout du patch PaX pour durcir le noyau qui en a bien besoin
    Note: L’option MPROTECT est fonctionnelle mais non activée pour ne pas casser les applications utilisant du javascript. comme le HTMLViewer, le Browser etc…
    J’ai commenté du « print » dans la couche MSM (avec la description « NO-SPAM ») pour dépolluer le dmesg.
    Quelques backports pour avoir un port fonctionnel de PaX
    Backport des Kconfig de Grsecurity
    Ajout de « android_aid.h » provenant de CopperheadOS afin d’utiliser PaX MPROTECT à l’avenir.
    Restriction sur config.gz, timer_list, timer_stats et kallsyms.
    Application d’une recommandation de Grsecurity sur user_namespace.c
    Suppression de l’avertissement « SECTION_MISMATCH » qui apparaît avec PaX
    Passage du numéro de compilation du noyau en 1337 😉
  3. PREVISION POUR LA SUITE :
    Peaufinage de mon port de PaX
    Ajout du patch Grsecurity 3.4.7 (notamment pour avoir une meilleure journalisation)
    Étudier la possibilité de passer le noyau en version 3.10
    Passage sur LineageOS 14.1 (car la version 13.0 basée sur android 6.0.1 n’est officiellement plus maintenue)
    Optimisation à faire pour économiser les faibles ressources du matériel surtout avec les versions récentes de LineageOS.
  4. LIEN DE TELECHARGEMENT : http://dl.free.fr/ke2mMtHTj
    MD5 = ee211a235828dba3495dce69f96ef543
    Source: Public-sharing

Je tiens à remercier encore une fois KonstaKANG pour la qualité de son travail laissé accessible et que j’ai pu récupérer comme base pour le ZTE Open C.
Je rappel également que c’est un port non-officiel de recherche maintenu seul de mon coté et par conséquent qu’il s’adresse aux utilisateurs expérimentés.

Ma version de LineageOS 13 pour le ZTE Open C

Bonjour à tous,

J’avais acheté en 2014 un ZTE Open C sous Firefox OS mais hélas ce système d’exploitation mobile libre n’a pas eu le succès escompté. Je me suis alors rabattu sur CyanogenMod puis LineageOS via l’excellent port non-officiel de KonstaT.

Ne voyant pas l’intérêt de changer mon téléphone tant qu’il fonctionne, j’ai donc mis à jour la rom de KonstaT afin d’avoir le dernier correctif de sécurité Android disponible permettant notamment de corriger la vulnérabilité BlueBorne et de commencer à durcir le noyau linux utilisé. Si j’ai utilisé va version 13 (Android 6.0.1) de LineageOS et non pas la 14.1 (Android 7.1.1) c’est car elle offre de meilleures performances.

Voici les modifications que j’ai effectuées :

  1. Application des recommandations KSPP sur la configuration du noyau
  2. Restriction de l’accès à /proc/<PID>/environ jusqu’à ce qu’il soit prêt
  3. Réduction de la surface d’attaque sur user_namespace par PaX/Grsecurity
  4. Désactivation de l’horodatage TCP
  5. Restriction d’accès sur /proc/config.gz et /proc/kallsyms
  6. Ajout de DENYUSB (port minimal de grsecurity)
  7. Ajout de DEVICE_SIDECHANNEL (provenant également de grsecurity)
  8. Ajout de GRKERNSEC_PROC_IPADDR (qui créé /proc/<pid>/ipaddr)
  9. Modification du driver PRIMA pour tester par la suite de générer une adresse MAC aléatoire sur cette carte wifi.

Idéalement, il faudrait rajouter l’émulation PXN/PAN et la fonction hardened usercopy pour sécuriser d’avantage la version obsolète du noyau Linux utilisé (version 3.4) ou mieux encore inclure PaX/Grsecurity. Sans plus tarder, voici :

Ma ROM personnalisée (Somme de contrôle MD5=71d4b469911b24ac49b56b7ac166df3d)
lineage-13.0-20171005-UNOFFICIAL-kis3.zip

Et le patch regroupant mes modifications :
LOÏC-UNOFFICIAL-kis3.patch

Si vous avez des questions concernant l’installation, veuillez-vous référer au site konstakang.com où tout est bien expliqué.

Matériel pour GNU/Linux

RYF

Suite à une demande récente dans commentaire et à l’approche des fêtes de fin d’année (et oui que le temps passe vite…) beaucoup seront tentés de faire des achats numériques. En tant que Linuxien et fervent défenseur des logiciels libres, voici quelques liens pour vous aider à vous décider.

Matériel libre certifier par la FSF:
https://www.fsf.org/resources/hw/endorsement/respects-your-freedom
https://h-node.org/hardware/catalogue/en

Carte mère et PC portable pouvant être exorciser (totalement libéré):
http://www.libreboot.org/docs/hcl/
http://www.coreboot.org/Supported_Motherboards
https://www.fsf.org/resources/hw/systems/

Matériel embarqué (routeur principalement):
https://wiki.openwrt.org/toh/start

Matériel testé sous GNU/Linux:
https://www.debian.org/distrib/pre-installed#fr
https://www.ubuntu-fr.org/revendeurs
http://doc.ubuntu-fr.org/materiel_assembleurs_en_ligne
http://doc.ubuntu-fr.org/ordinateur_vendu_avec_ubuntu
http://www.dell.com/learn/fr/fr/frbsdt1/campaigns/dell-linux-ubuntu-en?c=fr&l=fr&s=bsd
https://wiki.archlinux.org/index.php/HCL/Laptops

Identifier les bons constructeurs:
http://bons-constructeurs-ordinateurs.info/#bons-optionnalite

D’autres liens à me faire connaître? N’hésitez pas à me laisser un commentaire ! 😉

Patch Linux pour changer son adresse MAC aléatoirement

MAC-freebox

Il existe plusieurs façons de changer son adresse MAC sous GNU/Linux (macchanger étant la méthode la plus connue) mais l’avantage de ce qui va suivre c’est que cela se passera directement au niveau du noyau Linux ce qui a pour avantage d’être particulièrement efficace et sûr. Alors certes il faut compiler son petit noyau mais bon nous sommes tous des geeks barbus, non?

Brad nous a sorti un petit patch (hack) sympathique pour changer aléatoirement l’adresse MAC d’une interface réseau dès que celle-ci est activée 🙂
Ainsi à chaque démarrage de l’ordinateur, les adresses MAC changent de manière aléatoire tout comme elles changeront également à chaque redémarrage du service réseau.
Pour information, le patch ci-dessous n’est pas intégré dans grsec car ce n’est pas le but visé par le projet.

Voici le code qui va bien du path « random_mac.diff » :

diff --git a/net/core/dev.c b/net/core/dev.c
index 19d9b66..9a16733 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4823,6 +4823,24 @@ int dev_change_flags(struct net_device *dev, unsigned flags)
rtmsg_ifinfo(RTM_NEWLINK, dev, changes);

__dev_notify_flags(dev, old_flags);
+
+ if ((changes & IFF_UP) && !(old_flags & IFF_UP)) {
+ /* randomize MAC whenever interface is brought up */
+ struct sockaddr sa;
+ unsigned int mac4;
+ unsigned short mac2;
+
+ mac4 = prandom_u32();
+ mac2 = prandom_u32();
+ memcpy(sa.sa_data, &mac4, sizeof(mac4));
+ memcpy((char *)sa.sa_data + sizeof(mac4), &mac2, sizeof(mac2));
+ if (!is_valid_ether_addr(sa.sa_data))
+ sa.sa_data[5] = 1;
+ sa.sa_data[0] &= 0xFC;
+ sa.sa_family = dev->type;
+ dev_set_mac_address(dev, &sa);
+ }
+
return ret;
}
EXPORT_SYMBOL(dev_change_flags);
@@ -4991,7 +5009,8 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
return dev_set_mtu(dev, ifr->ifr_mtu);

case SIOCSIFHWADDR:
– return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
+ /* ignore userland MAC changes */
+ return 0;

case SIOCSIFHWBROADCAST:
if (ifr->ifr_hwaddr.sa_family != dev->type)

Pour les noyaux égals ou supérieurs à la version 3.15, j’ai dû modifier le précédant patch pour qu’il fonctionne toujours avec les versions plus récentes:

diff --git a/net/core/dev.c b/net/core/dev.c
index a30bef1..7eb6778 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5476,6 +5476,24 @@ int dev_change_flags(struct net_device *dev, unsigned int flags)

changes = (old_flags ^ dev->flags) | (old_gflags ^ dev->gflags);
__dev_notify_flags(dev, old_flags, changes);
+
+ if ((changes & IFF_UP) && !(old_flags & IFF_UP)) {
+ /* randomize MAC whenever interface is brought up */
+ struct sockaddr sa;
+ unsigned int mac4;
+ unsigned short mac2;
+
+ mac4 = prandom_u32();
+ mac2 = prandom_u32();
+ memcpy(sa.sa_data, &mac4, sizeof(mac4));
+ memcpy((char *)sa.sa_data + sizeof(mac4), &mac2, sizeof(mac2));
+ if (!is_valid_ether_addr(sa.sa_data))
+ sa.sa_data[5] = 1;
+ sa.sa_data[0] &= 0xFC;
+ sa.sa_family = dev->type;
+ dev_set_mac_address(dev, &sa);
+ }
+
return ret;
}
EXPORT_SYMBOL(dev_change_flags);
diff –git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
index cf999e0..265c2b3 100644
— a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
@@ -260,6 +260,8 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)

case SIOCSIFHWADDR:
return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
+ /* ignore userland MAC changes */
+ return 0;

case SIOCSIFHWBROADCAST:
if (ifr->ifr_hwaddr.sa_family != dev->type)

Bonne compilation 😉

libbdplus disponible dans debian via deb-multimedia.org

J’ai effectué une demande pour la création d’un paquet pour libbdplus dans Debian mais ma demande est toujours en attente depuis plusieurs mois
Pourtant cette bibliothèque est très importante si vous souhaitez pouvoir lire vos bluray protégés par BD+ sous GNU/Linux, par impatience j’ai demandé à Christian Marillat si il pouvait faire ce paquet, chose faite dans la foulée 🙂

Le paquet est donc d’ores et déjà disponible pour debian Sid (unstable) :
http://www.deb-multimedia.org/dists/unstable/main/binary-amd64/package/libbdplus0

C’est la deuxième fois que je lui demande la création d’un paquet Debian pour un logiciel de multimédia, mon autre demande étant pour CinePaint

snapshot.cinepaint.blue.angels.0.25.0.png

Outil de retouche d’images vidéo très apprécié par les sociétés hollywoodiennes d’effets spéciaux et d’animation.

Un grand merci pour son travail 😉

Mate Desktop est disponible dans Debian Jessie

Mate

L’environnement de bureau Mate, le fork de GNOME 2 est maintenant disponible dans Debian Jessie (l’actuel Debian Testing).

C’est une bonne nouvelle si comme moi vous n’êtes pas adepte des autres environnements de bureau. Pour ma part je peux résumer les autres environnements ainsi :
_GNOME 3 = Changement brutal, perte d’accès aux fonctionnalités, perte d’usabilité et d’efficacité.
_Unity = Pas pratique pour un usage quotidien ou en production.
_KDE = J’ai adoré la version 3.5 mais tout comme gnome je n’ai pas aimé le changement de direction (le bureau Plasma une atrocité).
_LXDE = Léger mais sans plus.
_XFCE = Avec le menu Whisker et les icônes modernes de bureau (je conseil d’ailleurs de tester la dernière version de Xubuntu pour s’en rendre compte) c’est vraiment pas mal mais cela s’avère moins pratique à l’utilisation (raccourci clavier, ergonomie des applications, le gestionnaire de fichier).

Pour en revenir à Mate, la version actuellement disponible est la 1.8.0 (voir cette page pour suivre le statut dans Debian, l »inclusion dans les backports pour Debian 7 stable alias Wheezy est toujours en cours). Cette version sortie début mars comporte de nouvelle fonctionnalité intéressante dont notamment :
_Caja via le menu contextuel, dispose maintenant d’une option pour ouvrir l’emplacement parent lors d’une recherche de fichier (très pratique)
_Marco dispose maintenant d’une option pour redimensionner les fenêtres rapidement au contact des bords verticaux de l’écran (centre de contrôle –> Fenêtres –> Placement –> Cocher Magnétisme des fenêtres)
_Eye of MATE, la visionneuse d’images peut désormais lire aléatoirement les photos en mode diaporama.
_Une nouvelle applet « commande » a été introduite.

Pour procéder à son installation, mettre à jour la liste de paquet :
sudo apt-get update

Puis pour installer l’environnement de bureau MATE minimale :
sudo apt-get install mate-desktop-environment-core

Sinon pour la version complète :
sudo apt-get install mate-desktop-environment

Enfin pour installer le bureau MATE complet avec quelques extras :
sudo apt-get install mate-desktop-environment-extras

A votre avis Mate sera t-il l’environnement par défaut de la prochaine version stable de Debian alias Debian 8 Jessie? A mon avis, son interface, sa légèreté, sa stabilité et son rythme de développement proche de Debian font de lui un choix idéal.