Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 22 sur 182 PremièrePremière ... 1214151617181920212223242526272829303272122 ... DernièreDernière
Affichage des résultats 631 à 660 sur 5434
  1. #631
    Citation Envoyé par PrinceGITS Voir le message
    Sinon, les chercheurs indiquent ne pas connaître de malware qui exploitent la faille mais maintenant qu'ils ont fait un PoC, cela arrivera, non ?
    Oui, maintenant que le monde entier est au courant des failles, ça arrivera. Sans conditionnel.

    Citation Envoyé par Tramb Voir le message
    On va revoir du MIPS, probablement
    On dit RISC-V maintenant.

    Citation Envoyé par Flefounet Voir le message
    Je ne comprend absolument rien. Je suis complètement inculte en la matière.
    En gros ca fait quoi réellement ce genre de faille et les hackers peuvent retirer quoi d'une attaque?

    Mettons que j'ai mes clients sur un serveur à base d'intel. Qu'est ce qu'ils risquent?
    Potentiellement, ça permet à du code qui tourne sur ta machine (n'importe quel code, y compris du javascript dans un navigateur ou un serveur) de lire des données en mémoire (n'importe quelles données, y compris au niveau de l'OS ou de l'hyperviseur).

    Dans ton cas, si tu as plusieurs clients sur le même serveur, ou si tes clients ont des utilisateurs, il pourraient s'espionner les uns les autres, ou récupérer des infos sur ton serveur (par exemple des clés privées pour usurper son identité sur le réseau).
    La bonne nouvelle, c'est que les attaques ne peuvent que lire des données, pas en écrire ou exécuter du code arbitraire. L'autre bonne nouvelle, c'est que tout le monde est concerné, même ceux qui ont des CPU AMD.

  2. #632
    On devrait mettre à l'épreuve les nouvelles compétences de rOut en Z80 pour monter un cluster de calcul bien à l'abri de toutes ces failles.
    Dernière modification par Tramb ; 05/01/2018 à 16h01.
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  3. #633
    Citation Envoyé par Flefounet Voir le message
    Je ne comprend absolument rien. Je suis complètement inculte en la matière.
    En gros ca fait quoi réellement ce genre de faille et les hackers peuvent retirer quoi d'une attaque?

    Mettons que j'ai mes clients sur un serveur à base d'intel. Qu'est ce qu'ils risquent?
    T'as un host et 2 VM, la VM client gentil et la VM client méchant. La VM client méchant peut regarder ce qui se passe sur ton VM client gentil ET ton host.
    "Nobody exists on purpose. Nobody belongs anywhere. We're all going to die. Come watch TV." - Morty Smith

  4. #634

  5. #635
    Citation Envoyé par Møgluglu Voir le message
    Oui, maintenant que le monde entier est au courant des failles, ça arrivera. Sans conditionnel.



    On dit RISC-V maintenant.



    Potentiellement, ça permet à du code qui tourne sur ta machine (n'importe quel code, y compris du javascript dans un navigateur ou un serveur) de lire des données en mémoire (n'importe quelles données, y compris au niveau de l'OS ou de l'hyperviseur).

    Dans ton cas, si tu as plusieurs clients sur le même serveur, ou si tes clients ont des utilisateurs, il pourraient s'espionner les uns les autres, ou récupérer des infos sur ton serveur (par exemple des clés privées pour usurper son identité sur le réseau).
    La bonne nouvelle, c'est que les attaques ne peuvent que lire des données, pas en écrire ou exécuter du code arbitraire. L'autre bonne nouvelle, c'est que tout le monde est concerné, même ceux qui ont des CPU AMD.
    Merci.

  6. #636
    Citation Envoyé par Møgluglu Voir le message
    Potentiellement, ça permet à du code qui tourne sur ta machine (n'importe quel code, y compris du javascript dans un navigateur ou un serveur) de lire des données en mémoire (n'importe quelles données, y compris au niveau de l'OS ou de l'hyperviseur).
    Sérieux Même avec les sandbox assez violentes des browsers et que js n'as pas vraiment accès à la mémoire ou au cpu ?

    Je n'ai pas lu vraiment comment été faite la faille mais ça m'étonne pas mal.

  7. #637
    Oui, tu peux regarder la section 4.3 du papier de Spectre pour un exemple d'attaque avec du code Javascript.

    Aussi incroyable que ça puisse paraître, le code Javascript s'exécute aussi sur un microprocesseur.

  8. #638
    Haha ^^

    En plus en quelques lignes super simples de code, incroyable...

  9. #639
    Je pensais que tout tournait sur le cloud



    Ca promet du coup.

  10. #640
    Question à la con. Je fais du C après des années de Java. J'ai fais mumuse avec fork() en suivant des tutos, mon petit programme de test est une boucle qui fait un fork à chaque itération. Le père attend le fils et ce dernier fait un calcul, écris le résultat dans un pipe et sort. Si je lance le programme dans un shell tout fonctionne à merveille.
    Quant il est lancé par Jenkins (outil d'intégration continue qui, dans mon cas, lance des commandes via ssh), par contre c'est la merde:
    le fils ne sort pas, et du coup à chaque itération j'ai un clone du programme en plus qui tourne.

    Est-ce qu'il y a une raison 'obvious' à cette différence de comportement ?

  11. #641
    Citation Envoyé par William Vaurien Voir le message
    Question à la con. Je fais du C après des années de Java. J'ai fais mumuse avec fork() en suivant des tutos, mon petit programme de test est une boucle qui fait un fork à chaque itération. Le père attend le fils et ce dernier fait un calcul, écris le résultat dans un pipe et sort. Si je lance le programme dans un shell tout fonctionne à merveille.
    Quant il est lancé par Jenkins (outil d'intégration continue qui, dans mon cas, lance des commandes via ssh), par contre c'est la merde:
    le fils ne sort pas, et du coup à chaque itération j'ai un clone du programme en plus qui tourne.

    Est-ce qu'il y a une raison 'obvious' à cette différence de comportement ?
    Fais du rust, t'auras pas le problème
    J'ai déjà eu le soucis, de mémoire, c'était le serveur qui faisait un timeout, en s'en battait les couilles si les programmes enfants n'avaient pas terminé. Bref, je peux pas trop t'aider ²

  12. #642
    J'utiliserais bien n'importe quoi d'autre que du C. C'est rigolol, mais c'est quand même ultra rudimentaire.

    Pour le fork, l'idée c'est que la boucle va appeler une fonction de test à chaque étape et pour ne pas qu'un test casse l'environnement du programme il est forké pour avoir un espace propre à chaque appel. Oui, j'ai réécrit le 128ème mini-framework de tests unitaire mono fichier en C. C'était à titre pédagogique.

    J'ai déjà eu une petite 'feature' surprise: les fils ne reçoivent pas les valeurs d'environnement défini au runtime par le père.
    Si le main fait setenv("TOTO", "SUPER", 1); alors aucun des fils suivant n'aura TOTO de défini...

    Après je lis les articles sur Spectre et Meltdown et j'ai envie de me rouler en boule et de pleurer. C'est normal ???

  13. #643
    Après je lis les articles sur Spectre et Meltdown et j'ai envie de me rouler en boule et de pleurer. C'est normal ???
    C'est normal.

    Citation Envoyé par William Vaurien Voir le message
    J'ai déjà eu une petite 'feature' surprise: les fils ne reçoivent pas les valeurs d'environnement défini au runtime par le père.
    Si le main fait setenv("TOTO", "SUPER", 1); alors aucun des fils suivant n'aura TOTO de défini...
    Ça par contre c'est chelou. Tu ne fais que forker sans execver ? Tu as un exemple ?

  14. #644
    Citation Envoyé par William Vaurien Voir le message
    Après je lis les articles sur Spectre et Meltdown et j'ai envie de me rouler en boule et de pleurer. C'est normal ???
    Et c'est que le début

    Attention, un Max_well peut en cacher un autre
    Equipe Highlander La Rache

  15. #645
    Aller, pour se changer les idées, voici un jeu de démineur formel : https://github.com/A1kmm/proofsweeper

    C'est comme le démineur classique, sauf qu'il faut écrire la preuve que chaque coup est correct.

    C'est programmé en Idris, mais on doit pouvoir faire la même en Coq.

  16. #646
    Je forwarde de ce pas au collègue local qui s'y connait en Coq, pour voir s'il veut s'y mettre

  17. #647
    Ahah c'est chouette
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  18. #648
    Malheureusement, il y a des axiomes de tiers exclu dans le jeu qui autorisent des preuves par contradiction.


  19. #649
    Passé la journée à réinstaller et mettre à jour le compilateur PGI, CUDA et le driver graphique, éditer des fichiers de conf, copier-coller les suites de directives OpenACC les plus improbables, parcourir ligne par ligne des pages de code llvm, PTX et SASS, essayer un par un tous les outils de débug et profiling de PGI, Nvidia et gnu. Tout ça parce que tous mes codes de test crashaient sur une erreur 700 à l'exécution.
    Ce genre de tests :
    Code:
    int s = 1;
    #pragma acc kernels
    for(int i = 0; i != 100; i+=s) {
      a[i] = 2 * b[i];
    }
    Un peu avant 22h, je découvre que si je remplace s par la constante 1 (ou même 2), tout fonctionne normalement.

    Edit: enfin "normalement" dans le sens "slowdown de 300x par rapport à la version séquentielle et renvoie un résultat faux".
    Dernière modification par Møgluglu ; 17/01/2018 à 11h50.

  20. #650
    Essaye avec "<" au lieu de "!="

    Je suis dans le même genre de galère en ce moment tiens, c'est encore plus goleri.
    En gros j'ai un (grosse et moche) routine qui sert à décompacter un buffer reçu par un transfert MPI.
    Le buffer contient divers tableaux 2D ou plus mis à plat, j'ai un tableau qui me donne la longueur et l'offset dans la première dimension pour chaque sous-ensemble.

    Donc boucle principale qui parcourt la structure des offsets, puis un gros select/case en fonction de l'offset.
    Dans chaque case, une boucle qui parcourt donc les éléments du sous-ensemble et les remets à leur place dans les tableaux complets.
    Dans cette boucle, un indice global qui avance à chaque tour de la valeur de l'offset (permettant de savoir où commencera le bloc case suivant de la boucle principale).
    Bon c'est moche, pas étonnant ça a été écrit par des physiciens.

    Je veux déporter ça sur le GPU car les tableaux y sont déjà.

    Si je met une directive kernels sur la boucle locale à chaque case, ça ne marche pas. En débuggant à la mano, je trouve que l'indice global reste à 0 tout le temps.

    Si je mets une directive kernels sur la boucle principale (en-dehors du case donc) et une directive acc loop avec les private kivonbien sur les boucles de chaque case, ça marche impec.



    Bref, faut pas jouer avec les scalaires entiers en openacc.
    Dernière modification par Lazyjoe ; 17/01/2018 à 14h49.
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  21. #651
    En ce moment, je corrige des TP de programmation C niveau débutant.

    Les étudiants doivent coder une fonction qui test si une valeur est dans un tableau… Rien de bien compliqué.

    En gros, on attend ça :
    Code:
    int contient(int * tab, int n, int v)
    {
        for(int i = 0; i < n; i++)
            if(tab[i] == v)
                return 1;
        return 0;
    }
    Et souvent, on reçoit ça :
    Code:
    int contient(int * tab, int n, int v)
    {
        int trouve = 0;
        for(int i = 0; i < n; i++)
            if(tab[i] == v)
                trouve = 1;
        return trouve;
    }
    La question que je me suis posé, c'est «Est ce vraiment différent ?».

    J'ai testé : https://godbolt.org/g/ZvSVbm, résultat, le compilo (gcc & clang) donne toujours des binaires différents… J'ai juste joué avec les flags d'opti.

    Du coup nouvelle question. Je sais pas bien lire l'asm, dans le cas 2, on lit systématiquement tout le tableau ?

  22. #652
    Hello,

    Dans le deuxième cas on parcourt effectivement tous les éléments du tableau.
    Dans le premier on s'arrête dès qu'on trouve l'élément.

    Au final même résultat mais meilleurs performances pour le premier (ou égales si l'élément à trouver est le dernier).

  23. #653
    Même si c'était équivalent ici grâce à la magie d'un compilo (et je doute, mais je suis nul en assembleur et en "trucs et astuces" du processeur) tu as bien intérêt à leur faire comprendre qu'ils doivent sortir des boucles au plus vite surtout si c'est inutile...

    En remplaçant par example dans cet exemple un calcul un peu coûteux à la place d'un test simple (grande chaîne de caractère, calcul numérique un peu complexe,requête en base de données) tu devrais pouvoir leur faire comprendre l'intérêt de sortir rapidement...

  24. #654
    Citation Envoyé par Raplonu Voir le message
    Du coup nouvelle question. Je sais pas bien lire l'asm, dans le cas 2, on lit systématiquement tout le tableau ?
    Oui c'est bien ça. La boucle est dans les lignes 9 à 13.
    rdi contient le pointeur sur "tab"
    Ligne 9 : on compare ce qui est pointé par rdi avec la valeur dans edx ("v")
    Ligne 10 : si la comparaison a renvoyé un résultat positif, on copie "1" dans "trouve"
    Ligne 11 : on incrémente rdi de 4 (32 bits pour passer à l'entier suivant du tableau)
    Ligne 12 : on teste si cette nouvelle valeur dans rdi n'est pas égale à la fin du tableau
    Ligne 13 : si ce test est négatif, on reprend la boucle.

    Il n'y a aucun autre moyen de sortir de la boucle que le branchement en ligne 13.
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  25. #655
    Merci pour vos réponses. Je pensais le compilo plus bourrin qu'il ne l'est…

    Après pour mes étudiants, je leur est passé ça, les 2/3 ne feront quasiment plus d'info après cette UE... Et ils ont trop peux de temps pour voir tout ce qui est prévu.

  26. #656
    La transformation pour passer du code 2 au code 1 serait assez violente. Il faudrait que le compilateur arrive à prouver qu'à partir de la première fois où on rentre dans le if, le reste des itérations de la boucle est du code mort. Et les compilateurs sont généralement mal équipés pour raisonner sur le temps dynamique. À la limite on pourrait transformer le graphe de flot de contrôle pour couper la boucle en deux, et ensuite passer un coup d'élimination de code mort qui se rendra compte que la seconde boucle est triviale. Je ne me rappelle pas d'avoir vu ça dans la littérature, mais ça a peut-être été proposé un jour.

  27. #657
    Et si on regarde les subtilités ces codes ne font pas la même chose.

    Par exemple si on passe un n plus grand que la véritable taille du tableau, la première boucle se comportera comme on pourrait s'y attendre si elle trouve v dans le tableau, mais pas la seconde.

    Faire cette optimisation, ce serait faire des suppositions sur l'intention du programmeur.
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  28. #658
    Citation Envoyé par Lazyjoe Voir le message
    Faire cette optimisation, ce serait faire des suppositions sur l'intention du programmeur.
    On peut supposer que le programmeur ne veut pas faire un segfault

  29. #659
    Je trouve que tu t'avances beaucoup.
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  30. #660
    Citation Envoyé par Lazyjoe Voir le message
    Et si on regarde les subtilités ces codes ne font pas la même chose.

    Par exemple si on passe un n plus grand que la véritable taille du tableau, la première boucle se comportera comme on pourrait s'y attendre si elle trouve v dans le tableau, mais pas la seconde.

    Faire cette optimisation, ce serait faire des suppositions sur l'intention du programmeur.
    Accéder à une adresse invalide, c'est un comportement indéfini, non ? Ça parait légal d'optimiser la boucle 2 en boucle 1, puisqu'il n'y a aucun effet de bord. Après je compterais pas sur le compilateur pour le faire, ça me parait assez difficile.

    Edit: Pour rappel, un programme qui ne plante pas avec certains compilateurs.
    Dernière modification par Cwningen ; 26/01/2018 à 14h53.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •