Institut de technologie du Massachusetts. Cours magistral # 6.858. "Sécurité des systèmes informatiques." Nikolai Zeldovich, James Mickens. 2014 année
Computer Systems Security est un cours sur le développement et la mise en œuvre de systèmes informatiques sécurisés. Les conférences couvrent les modèles de menace, les attaques qui compromettent la sécurité et les techniques de sécurité basées sur des travaux scientifiques récents. Les sujets incluent la sécurité du système d'exploitation (OS), les fonctionnalités, la gestion du flux d'informations, la sécurité des langues, les protocoles réseau, la sécurité matérielle et la sécurité des applications Web.
Cours 1: «Introduction: modèles de menace»
Partie 1 /
Partie 2 /
Partie 3Conférence 2: «Contrôle des attaques de pirates»
Partie 1 /
Partie 2 /
Partie 3Conférence 3: «Débordements de tampon: exploits et protection»
Partie 1 /
Partie 2 /
Partie 3Conférence 4: «Séparation des privilèges»
Partie 1 /
Partie 2 /
Partie 3Conférence 5: «D'où viennent les systèmes de sécurité?»
Partie 1 /
Partie 2 Professeur Nikolai Zeldovich: bon après-midi, je veux vous présenter notre invité d'iSec Partners, qui vous dira quelle est la sécurité des systèmes informatiques dans le monde réel.
Paul Yang: bonjour, je m'appelle Paul Yang, je suis diplômé du MIT en 2004, j'ai obtenu un master en ingénierie et informatique et jusqu'en 2010 j'ai travaillé chez Oracle. Maintenant, je travaille en tant que directeur technique chez iSec Partners. Avant, je ne savais même pas que de telles entreprises existaient. Notre entreprise est engagée dans le conseil dans le domaine de la sécurité informatique, des tests de pénétration (pentesting), de la sécurité des réseaux, nous étudions les programmes de piratage, trouvons diverses vulnérabilités et les éliminons.

J'ai décidé de vous en parler car je sais que de nombreux étudiants de votre spécialisation souhaitent faire carrière dans le domaine de la sécurité des systèmes informatiques. Le plan de la conférence d'aujourd'hui ressemble à ceci:
- Quelles sont les erreurs de sécurité?
- relations de confiance;
- exemples d'erreurs rencontrées dans la vie réelle;
- Opération Aurora
- Stuxnet
- J'aime traiter les problèmes de sécurité, que dois-je faire?
Voyons ce que les chercheurs pensent des vulnérabilités. Je veux que vous compreniez parfaitement d'où vient la vulnérabilité après l'avoir découverte. Autrement dit, vous devez trouver ce qui a causé cela. Il est important de comprendre comment les vulnérabilités affectent le système et comment elles interagissent avec ses autres composants.
Commençons donc par examiner les erreurs de sécurité. Mais avant de commencer à en parler, nous définissons d'abord ce que signifie le concept de sécurité lui-même.
Ivan Arch a déclaré: "Un système est sûr s'il se comporte exactement comme prévu et ne fait rien d'autre." Les systèmes deviennent de plus en plus complexes. Si nous parlons de systèmes d'exploitation, qui peut dire à quoi ils sont destinés et Que permettent-ils exactement?
Par conséquent, il est nécessaire d'étudier tous les types d'attaques possibles. En sachant quelles attaques existent, des objectifs de sécurité clés peuvent être développés. Par conséquent, les premières étapes dans le domaine de la sécurité devraient être la définition d'un modèle de sécurité et la définition d'un modèle de menace.
Par exemple, considérons comment le TSA détermine le modèle de menace. L'objectif de sécurité de l'aéroport international de Logan est d'empêcher les articles interdits, tels que la mousse à raser, de pénétrer dans l'avion. Le modèle de menace comprend deux points:
- De quelles manières les objets interdits peuvent-ils entrer dans l'aéroport?
- Où sont les «points d'entrée» de ces choses à l'aéroport?
Comment pouvez-vous apporter des articles interdits après la sécurité? Comment essayez-vous d'attaquer leur système de sécurité? Vous pouvez les transporter sans chèque, en utilisant les privilèges du passager VIP, les cacher entre autres ou utiliser le service d'autres compagnies aériennes pour livrer des articles interdits à l'aéroport.
J'ai toujours été choqué par le fait que, dans Logan, les bagages en provenance d'autres aéroports ne soient pas visibles sur les moniteurs. Autrement dit, vous pouvez envoyer une substance ou un objet interdit à partir d'un autre aéroport, il s'envolera pour Logan et vous le recevrez. Ainsi, les aéroports dotés d'un système de sécurité moins strict constituent des menaces pour le système de sécurité avancé de Logan, et rien ne peut être fait à ce sujet. Par conséquent, un moment critique dans la construction d'un modèle de menace est de comprendre ce à quoi vous vous opposez spécifiquement. Je note que cela ne dérange pas correctement de nombreux ingénieurs.
Les ingénieurs créent des erreurs de sécurité et les trouvent eux-mêmes. Le but des ingénieurs est de trouver autant de défauts que possible et de minimiser les risques d'endommager le système.
L'approche pour atteindre cet objectif doit être très approfondie - il est nécessaire de couvrir tous les paramètres du système de sécurité, ou du moins de trouver des éléments facilement accessibles aux criminels.
Les moyens d'atteindre cet objectif sont d'étudier le code source, d'utiliser des outils pour déboguer l'application et l'ingénierie. De plus, de l'argent est nécessaire pour les outils et le personnel.
En règle générale, les développeurs de logiciels se soucient des fonctionnalités et des capacités de leur produit, plutôt que de sa sécurité. Tout le monde achète un logiciel en raison de ses capacités et non en raison de sa sécurité. Par conséquent, la sécurité reste toujours en deuxième position et les développeurs ne commencent à s'en occuper qu'après que le produit a été endommagé par des intrus. Habituellement, les ingénieurs ne voient qu'une petite partie de la "mosaïque", ils ne font pas attention aux détails techniques. Pouvez-vous répondre à la question du nombre de lignes de code Linux 2.6.32, Windows NT4 et Adobe Acrobat?
Les bonnes réponses dans l'ordre de listage des programmes sont de 8 à 12,6 millions de lignes, 11-12 millions et 15 millions. En effet, il est généralement surprenant pour tout le monde qu'Acrobat contienne plus de lignes de code de programme que Linux et Windows. Ainsi, même le logiciel que nous considérons comme simple est en réalité extrêmement complexe.
Les catégories de personnes suivantes s'intéressent aux problèmes de sécurité:
- ingénieurs
- les criminels;
- chercheurs en sécurité;
- testeurs de pénétration (pentesters);
- Les gouvernements
- les hacktivistes;
- des représentants de la communauté scientifique.
Je n'ai identifié que 6 catégories, mais probablement plus d'entre elles. Considérez ce qui intéresse la première catégorie de personnes - les criminels.

Leur objectif est de disposer de ressources avec lesquelles vous pouvez prendre possession de l'argent d'autrui (botnet, CC # s, spam mailing de «lettres de bonheur») et en même temps ne pas aller en prison. Pour atteindre cet objectif, ils utilisent les derniers exploits de pirates qui exploitent les vulnérabilités logicielles. Ils n'ont pas besoin de privilèges d'accès aux données, mais les volent simplement en utilisant les vulnérabilités laissées par les développeurs. Le plus souvent, les cartes de crédit et tout ce qui s'y rapporte font l'objet d'attaques. Par conséquent, les criminels ont accès à l'argent d'autres personnes à l'aide d'argent, en achetant des données à des pirates ou en utilisant la méthode de test Black Box. Il s'agit d'une méthode de test de logiciels selon les spécifications et les exigences fonctionnelles, sans utiliser la structure de code interne ou l'accès à la base de données. Dans ce cas, le code source est démonté en composants, ce qui vous permet de détecter les lacunes dans la protection du programme.

Cette technique vous permet de pénétrer dans la base de données des cartes de crédit, en "piratant" les systèmes de paiement des différents magasins.
La catégorie suivante est celle des chercheurs volontaires en sécurité, un certain type de pirate informatique.

Leur objectif est de les sensibiliser au public, de publier à leur sujet dans les journaux, et des amis de les respecter ou de les admirer. Leur occupation ne nécessite pas de minutie, personne ne vous fera honte si vous n'avez pas trouvé de vulnérabilité ou de moyens de la surmonter. Ils ont accès aux systèmes de sécurité grâce à des outils amateurs et des contacts occasionnels avec des ingénieurs travaillant dans de grandes sociétés de sécurité ou développant des logiciels, et les avocats servent souvent de source d'information.
La troisième catégorie la plus utile en matière de sécurité est celle des testeurs de pénétration (pentesters).

Le sens de leur travail est d'assurer la sécurité des clients et des utilisateurs de logiciels. Ils trouvent les vulnérabilités que les criminels veulent exploiter avant d'être découvertes par les criminels et aident les développeurs à éliminer ces vulnérabilités.
La minutie de leur travail est de couvrir tous les détails et les nuances du système, de trouver les lieux publics non sécurisés et les vulnérabilités qui sont soumis aux plus grandes interférences, ne sont pas fixes ou piratés.
Pour faire ce genre de travail, ils ont besoin d'un accès aux développeurs, d'un accès au code source et de toutes sortes d'autorisations.
Voici les gouvernements des différents pays. La sécurité les inquiète en termes d'attaques, d'espionnage et de protection de leur propre pays contre de telles actions ennemies. Des exploits fiables capables de détecter et d'exploiter les vulnérabilités fournissent leur travail et pour accéder aux systèmes de sécurité, ils utilisent de l'argent, du talent et du temps qu'ils peuvent acheter pour de l'argent.
L'avant-dernier groupe est constitué de hacktivistes. Ce sont des pirates anonymes, leur activité est un mélange de piratage et de protestation contre la violation du droit d'échanger librement toute information. Ce sont des pirates socialement orientés, généralement des systèmes de piratage non pas pour leur enrichissement.

Leur objectif est de faire «quelque chose de bien», dans leur compréhension du mot, et non d'aller en prison pour cela. Parfois, je suis d'accord avec ce qu'ils font, parfois non.
Ils utilisent les exploits les plus modernes et pénètrent dans les systèmes de sécurité grâce à leur propre talent et une grande variété d '«objectifs» pour appliquer leurs compétences. Ils exploitent toutes les vulnérabilités possibles et si vous pouvez voler des numéros de carte de crédit, ils les voleront.
Le dernier groupe est composé de représentants de la science. Il s'agit d'un domaine d'activité intéressant dans lequel travaille le professeur Nikolai Zeldovich. Il explore les capacités à long terme et les problèmes fonctionnels des programmes. Les scientifiques trouvent des failles communes et d'autres problèmes courants, par exemple des erreurs dans l'utilisation des pare-feu ou du chiffrement, en essayant de rendre le logiciel plus sûr. Habituellement, ils ont suffisamment de temps et de talent pour leurs recherches, et la profondeur de leur travail est assurée par la profondeur de l'approche.
Ils ont accès aux systèmes de sécurité grâce à la création de nouvelles choses et de la Black Box. Il y a une différence entre les développements théoriques et leur mise en œuvre dans la pratique, mais pour la plupart, ils agissent de la même manière que les gouvernements nationaux, c'est-à-dire qu'ils sont engagés dans des projets très ambitieux.
Tous ces groupes de personnes utilisent des techniques similaires et recherchent la même chose: des systèmes vulnérables. S'ils y ont accès, ils examinent le code source, utilisent des entretiens avec des ingénieurs ou effectuent des tests dans un environnement contrôlé. S'il n'y a pas d'accès, ils effectuent des tests Black Box, s'engagent dans la technologie de fuzzing (par exemple, saisissent des données aléatoires et voient comment le système y réagit), effectuent des copies techniques de la rétro-ingénierie (à l'aide de fichiers de code binaire) et font de l'ingénierie sociale.
De nombreux systèmes logiciels complexes sont sujets au fuzzing, par exemple, le même
Acrobat Reader - il vérifie la possibilité de débordement de tampon en utilisant des documents volumineux spécialement créés au format .pdf. Un tel document est «conduit» dans «Acrobat» pour vérifier s'il est capable de provoquer un plantage du système.
L'ingénierie sociale est le moyen le plus simple et le plus rapide de trouver des problèmes de sécurité en piratant des comptes sur les réseaux sociaux.
Plongeons-nous donc dans le sujet de la conférence et examinons les vulnérabilités que nous recherchons.

Les ingénieurs font souvent des erreurs sur la façon dont les systèmes devraient fonctionner et comment ils fonctionneront après leur création. Un exemple d'erreur catastrophique dans un logiciel qui a entraîné la mort de personnes est le programme de l'appareil de radiothérapie
Therac-25 .
Le mauvais fonctionnement du système de sécurité de l'appareil a conduit au moins 6 personnes à recevoir d'énormes doses de rayonnement, deux personnes mortelles. Je vais vous en parler en général, sans mentionner les détails et les principes de fonctionnement de cet irradiateur.
Le logiciel de ce dispositif médical prévoyait deux modes d'utilisation de l'irradiateur. La première
image , aux
rayons X , le mode de diffusion d'électrons, dans lequel l'exposition aux rayonnements était minime, n'impliquait pas l'utilisation d'un écran de focalisation protecteur. Le deuxième mode de
traitement par rayonnement a fourni un puissant mode d'irradiation dans lequel la zone affectée a été exposée à un faisceau dirigé de rayonnement radioactif d'une puissance de 25 MeV. Pour cela, un écran de focalisation protecteur a été placé entre le patient et l'émetteur.
La diapositive suivante montre à quoi ressemblait le code du programme qui contrôle le fonctionnement du pare-feu. Vous voyez que sur une ligne, il y avait des données à un octet indiquant s'il fallait ou non installer un écran de protection en place. Si cette valeur était 1, l'écran a été installé; s'il était 0, l'écran a été supprimé. Le problème était qu'à l'intérieur du programme, lors de la saisie d'un paramètre égal à 0, par exemple, si le médecin ajustait manuellement la puissance de rayonnement à 0, la valeur de rayonnement était divisée par 0. Comme la division par 0 est une opération non valide, le tampon a débordé, le programme s'est écrasé et la puissance de rayonnement prend automatiquement la valeur maximale possible en l'absence d'écran protecteur.
Ici, les développeurs ont utilisé l'hypothèse erronée qu'en mode de traitement par rayonnement, le paramètre d'utilisation de l'écran de protection prendra toujours une valeur non nulle, les débordements de tampon ne se produiront jamais et le programme n'échouera jamais.
À la suite de cette hypothèse erronée, des personnes sont décédées, car au cours d'une session sans écran en mode de radiothérapie, elles ont subi une brûlure de radiation fatale.
En apprenant ce cas, mon camarade de classe a déclaré: "J'ai conclu par moi-même que je n'écrirai jamais de logiciel médical."
Des conditions préalables incorrectes pour le développement de logiciels peuvent être très nuisibles, par exemple, le système de compte amazon.com.Cette boutique en ligne vous permet de:
- Vous pouvez ajouter une carte de crédit ou une boîte aux lettres électronique avec un nom et une adresse physique à votre compte;
- Amazon vous donne la possibilité de changer le mot de passe de votre compte via une boîte aux lettres enregistrée;
- Amazon vous permet de voir les 4 derniers chiffres d'un numéro de carte de crédit;
- Apple vous donne la possibilité de vous connecter à votre compte en utilisant les 4 derniers chiffres de votre numéro de carte de crédit;
- Gmail vous permet de modifier votre compte Apple via votre compte Twitter.
Quelles hypothèses erronées ont rendu possible cette chaîne vicieuse? Politiques de sécurité incorrectes exprimées dans les premier et quatrième paragraphes. Cela conduit à la conclusion: les composants qui affectent votre système sont souvent au-delà de votre attention (Facebook, Amazon, Apple). Par conséquent, un attaquant peut prendre le contrôle des informations de votre carte de crédit via un compte sur amazon.com, en utilisant les capacités de ces trois systèmes indépendants. Cela peut être considéré comme un modèle de menace complet.
Par conséquent, répondez à la question: votre mot de passe de boîte vocale est-il plus fiable ou plus faible que le mot de passe que vous utilisez pour les services bancaires en ligne?
Je vois combien de personnes ont levé la main. Choisissez maintenant ceux qui ont un mot de passe bancaire plus fort qu'un mot de passe de messagerie. Je vois qu'il y en a plus. Et c'est faux.
Les gens croient que la banque en ligne est une affaire sérieuse et nous avons besoin ici d'un mot de passe plus fiable. Mais ils oublient que l'accès au compte de paiement s'effectue via une boîte aux lettres électronique. Le courrier doit avoir le mot de passe le plus fiable et non l'inverse.
Si vous voulez devenir un ingénieur qui développe des systèmes informatiques, vous devez penser comme le pense un chercheur en sécurité:
- Quelles conditions préalables doivent être utilisées pour garantir la sécurité lors de l'élaboration d'une conception de système?
- quelles hypothèses sont fausses?
- Que pouvez-vous violer si la prémisse s'avérait fausse?
Le dernier point aide à concevoir le système de telle manière que même si le système plante, votre noyau sera protégé.
La gestion de la mémoire est difficile.

A titre d'exemple, je vais vous donner un schéma simplifié d'un protocole de communication sécurisé:
- éviter de réviser ou de rétablir le contact;
- Alice: "Bob, si tu es là, dis hou!"
- Bob: "Boo!"
- en conséquence, Alice et Bob croient qu'ils se connaissent très bien.
Techniquement, ce protocole ressemble à ceci:
- Alice envoie un paquet contenant ping;
- un paquet a une certaine longueur de données;
- Bob retourne un paquet de la même longueur.
Dans ce cas, Bob analyse les données envoyées par Alice:

Affichez la longueur des données et leur emplacement dans le tampon. Il prépare ensuite une réponse pour Alice, en ajoutant 2 octets à la longueur de la demande d'Alice, copie la nouvelle longueur de la demande d'Alice en réponse et la lui renvoie:

Voyez-vous un problème ici? Où est la vulnérabilité ici?

Il est inclus dans les deuxième et quatrième lignes de la réponse de Bob. La taille des données transmises par l'utilisateur peut ne pas coïncider avec la taille réelle des données.
TSL Establishment Protocol utilise le
protocole de cryptage
SSL ouvert. C'est ainsi qu'environ 60% des serveurs disponibles sur Internet fonctionnent. Bob, c'est-à-dire le serveur, ne vérifie jamais la longueur réelle des données reçues. En raison de l'ajout de 2 octets par le serveur, l'utilisateur peut lire environ 64 Ko de données de mémoire du serveur, y compris les clés privées.
Maintenant que nous avons trouvé cette erreur, comment pouvons-nous la corriger? Plus les gens en savent, plus les fuites d'informations sont importantes. Par conséquent, dès que des informations sur la vulnérabilité seront divulguées, ils en profiteront immédiatement. Ainsi, pour la protection, il est nécessaire de corriger la situation dès que possible.
Parfois, les entreprises se tournent vers nous et disent qu'elles ont découvert une telle vulnérabilité et comment elle peut être corrigée. Nous leur répondons: "Pas question, il vous suffit de changer immédiatement les clés de chiffrement." Par conséquent, il est impératif de surveiller les différences qui se produisent dans
Open SSL lors de l'échange de données.
,
TSL , , .
, , , « », , .
, . , .

2014
Yahoo , . Java-, 6 .
, java-,
Magnitude XSS .
Magnitude « »
Yahoo , - 30 2013 3 2014 27000 . .
java- «click-to-play» Chrome.
Confused Deputy – . .
Cross-Site Request Forgery (
CSRF XSRF ), « ». , .
Microsoft . ,
Cashier as a Service . , «foo…», , .
: ,
CaaS -. . .

, - , . , $10
CaaS 123. «» : « $10 TxID:123».
CaaS : « ». : «». .
- , ? ? , , ! 3 4, , , . , , – $10 $1, .

, , - , . : , , .
.
, . , «» «», . , , , , . , .
, . , . , . , , . - . , .
.

, , .
Cloud To Butt Plus Chrome . .
, , ,
java- Flash-player , . .
www.isecpartners.com , , , .
, -, - . «» .
, ,
Google , . . , . : «, $10000»! , -, . , , . , Chrome 2014 , .
, . , :
. , ? .
1password LastPass Mask Me ? .
1password , «»
HTTP . , .
LastPass ,
Mask Me ,
1password . , , , .
, , . :
- HTTP HTTPS;
- iframes;
- - ;
- ();
- .
HTTP HTTPS . , .
SSL stripping «» .
,
https:// example.com http:// example.com . , .
Mask Meil est vulnérable car il utilise non seulement la saisie semi-automatique, mais également l'envoi d'un formulaire rempli, qui aidera un attaquant à voler votre mot de passe.33:35 minSuite:Cours MIT "Sécurité des systèmes informatiques". Conférence 5: «D'où viennent les erreurs du système de sécurité», partie 2La version complète du cours est disponible ici .Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une
réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).
Dell R730xd 2 fois moins cher? Nous avons seulement
2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la
création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?